
php curl抓取网页数据
php curl抓取网页数据(seleniummicrosoftprojectglobelinux下phantomjs+chromewindows下chrome+百度爬虫java开发基础(图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 63 次浏览 • 2021-11-14 17:02
phpcurl抓取网页数据;zh_cn=%e9%a4%a7%e9%a7%aa%e5%9f%bc%e8%90%8c&author=kbxyjsinn&http_header=format=json&dir=2&format=json&src=&sm=1&format=json&type=http%3a%2f%2fcurl。
gecko。com%2fbrowser%2f401%2f40101%2f5100413&result=json&newurl=zh_cn。
这个在网上有很多可以参考:教你通过gzip压缩批量抓取网页html标签
使用locer查看。这里有python抓取第三方爬虫数据的爬虫课程。
题主问的是不是怎么爬取页面(相应的是怎么解析页面)?可以尝试用threadlocal+simplexml2+crawler(python)
题主你可以考虑一下这个,然后爬取下来之后呢,你可以下载,尝试解析下,然后这样,这样就可以把你刚刚爬取的页面爬下来。
/
抓取日志页,然后构造变量,搞好css,这个很简单的。
可以先看看selenium+phantomjs的基本使用方法
没爬到过,我更希望爬到的能被我弄个webdav给弄出来,多好。
selenium
microsoftprojectglobelinux下phantomjs+chromewindows下chrome+selenium->百度爬虫java开发基础在pyenv+gae+vscode 查看全部
php curl抓取网页数据(seleniummicrosoftprojectglobelinux下phantomjs+chromewindows下chrome+百度爬虫java开发基础(图))
phpcurl抓取网页数据;zh_cn=%e9%a4%a7%e9%a7%aa%e5%9f%bc%e8%90%8c&author=kbxyjsinn&http_header=format=json&dir=2&format=json&src=&sm=1&format=json&type=http%3a%2f%2fcurl。
gecko。com%2fbrowser%2f401%2f40101%2f5100413&result=json&newurl=zh_cn。
这个在网上有很多可以参考:教你通过gzip压缩批量抓取网页html标签
使用locer查看。这里有python抓取第三方爬虫数据的爬虫课程。
题主问的是不是怎么爬取页面(相应的是怎么解析页面)?可以尝试用threadlocal+simplexml2+crawler(python)
题主你可以考虑一下这个,然后爬取下来之后呢,你可以下载,尝试解析下,然后这样,这样就可以把你刚刚爬取的页面爬下来。
/
抓取日志页,然后构造变量,搞好css,这个很简单的。
可以先看看selenium+phantomjs的基本使用方法
没爬到过,我更希望爬到的能被我弄个webdav给弄出来,多好。
selenium
microsoftprojectglobelinux下phantomjs+chromewindows下chrome+selenium->百度爬虫java开发基础在pyenv+gae+vscode
php curl抓取网页数据(使用PHP的cURL库可以简单和有效地去抓网页。)
网站优化 • 优采云 发表了文章 • 0 个评论 • 60 次浏览 • 2021-11-13 08:03
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取网页内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个PHP库。
启用卷曲设置
首先我们要先判断我们的PHP是否启用了这个库,可以通过php_info()函数来获取这个信息。
﹤?php
phpinfo();
?﹥
如果在网页上可以看到如下输出,说明cURL库已经开启。
如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,去掉前面的分号。如下:
//取消下在的注释
extension=php_curl.dll
如果你在 Linux 下,那么你需要重新编译你的 PHP。编辑时需要开启编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这里有一个小程序:
﹤?php
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置你需要爬取的网址
curl_setopt($curl, CURLOPT_URL,'');
// 设置标题
curl_setopt($curl, CURLOPT_HEADER, 1);
// 设置cURL参数,询问结果是保存在字符串中还是输出到屏幕上。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 运行 cURL 并请求一个网页
$data = curl_exec($curl);
// 关闭 URL 请求
curl_close($curl);
// 显示获取的数据
var_dump($data);
如何发布数据
上面是抓取网页的代码,下面是到某个网页的POST数据。假设我们有一个处理表单的URL,可以接受两个表单域,一个是电话号码,一个是短信内容。
﹤?php
$phoneNumber = '13912345678';
$message = 'This message was generated by curl and php';
$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' . urlencode($message) . '&SUBMIT=Send';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec();
curl_close($ch);
?﹥
从上面的程序可以看出,CURLOPT_POST是用来设置HTTP协议的POST方法而不是GET方法的,然后CURLOPT_POSTFIELDS是用来设置POST数据的。
关于代理服务器
以下是如何使用代理服务器的示例。请注意高亮的代码,代码很简单,我就不多说了。
﹤?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');
$data = curl_exec();
curl_close($ch);
?﹥
关于 SSL 和 Cookie 查看全部
php curl抓取网页数据(使用PHP的cURL库可以简单和有效地去抓网页。)
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取网页内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个PHP库。
启用卷曲设置
首先我们要先判断我们的PHP是否启用了这个库,可以通过php_info()函数来获取这个信息。
﹤?php
phpinfo();
?﹥
如果在网页上可以看到如下输出,说明cURL库已经开启。
如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,去掉前面的分号。如下:
//取消下在的注释
extension=php_curl.dll
如果你在 Linux 下,那么你需要重新编译你的 PHP。编辑时需要开启编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这里有一个小程序:
﹤?php
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置你需要爬取的网址
curl_setopt($curl, CURLOPT_URL,'');
// 设置标题
curl_setopt($curl, CURLOPT_HEADER, 1);
// 设置cURL参数,询问结果是保存在字符串中还是输出到屏幕上。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 运行 cURL 并请求一个网页
$data = curl_exec($curl);
// 关闭 URL 请求
curl_close($curl);
// 显示获取的数据
var_dump($data);
如何发布数据
上面是抓取网页的代码,下面是到某个网页的POST数据。假设我们有一个处理表单的URL,可以接受两个表单域,一个是电话号码,一个是短信内容。
﹤?php
$phoneNumber = '13912345678';
$message = 'This message was generated by curl and php';
$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' . urlencode($message) . '&SUBMIT=Send';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec();
curl_close($ch);
?﹥
从上面的程序可以看出,CURLOPT_POST是用来设置HTTP协议的POST方法而不是GET方法的,然后CURLOPT_POSTFIELDS是用来设置POST数据的。
关于代理服务器
以下是如何使用代理服务器的示例。请注意高亮的代码,代码很简单,我就不多说了。
﹤?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');
$data = curl_exec();
curl_close($ch);
?﹥
关于 SSL 和 Cookie
php curl抓取网页数据(推荐python使用第三方库guiminchip封装来写爬虫.参考)
网站优化 • 优采云 发表了文章 • 0 个评论 • 71 次浏览 • 2021-11-13 08:01
phpcurl抓取网页数据信息pythonflask抓取网页数据信息
requests库作用:给网页返回json格式的信息注意:不要滥用requests库,比如老写java代码调用requests库,
requests,
python我推荐numpy,
1)
其实现在挺多的网络爬虫包括爬取豆瓣电影等,都支持正则表达式和requests库。如果你会用python中的future和cgi可以直接来requests库,不过如果不会的话,就需要爬虫框架beautifulsoup,写起来的话也是非常方便。
推荐python使用第三方库guiminchip封装来写爬虫.参考pythonweb框架guiminchip
直接用requests
不推荐用requests库。去掉了scrapy的影响,要用requests库,主要有两个地方:libframework和clientframework(https)。也就是说,一个requests库相当于一个java的thrift框架,一个web框架或web服务器框架。https框架就是,getserver的encryption流程。
你的网页只是一个http连接的封装,但是会把流程封装在一个server上。两者的区别是:python本身不能封装连接流程,只能封装连接连接连接传输的过程。所以python所有的http服务都是封装在server上的。requests仅仅是封装了一个连接连接传输的过程。以下是我在写爬虫的时候,用的一个requests库封装连接连接传输的过程。
可以用来测试两个网站之间如何连接。http连接实现应该不是很难,如果不太懂为啥要封装连接连接传输的过程,可以参考如下网站。看你懂不懂。但是封装连接连接传输过程还有一个意义就是,可以调整server,让一个server能够处理任意http连接。
可以用来测试两个不同的网站之间是否能够做互联互通。需要处理的情况可以看下以下示例:http请求的header不同应该怎么处理连接(modules/https_requests.xml)。
1)请求头封装解封装bson/json模块解封装http.headers解封装get/post网络请求头解封装
2)request方法封装解封装post方法封装get/post连接类型封装调用连接的解封装重定向封装cookie参数封装
3)服务端定时刷新(新加的服务不能一开始就开。要学会新加服务。)写不下了,说太多。当然以上不是针对爬虫。一般的业务代码,比如解封封装redis/http/redis, 查看全部
php curl抓取网页数据(推荐python使用第三方库guiminchip封装来写爬虫.参考)
phpcurl抓取网页数据信息pythonflask抓取网页数据信息
requests库作用:给网页返回json格式的信息注意:不要滥用requests库,比如老写java代码调用requests库,
requests,
python我推荐numpy,
1)
其实现在挺多的网络爬虫包括爬取豆瓣电影等,都支持正则表达式和requests库。如果你会用python中的future和cgi可以直接来requests库,不过如果不会的话,就需要爬虫框架beautifulsoup,写起来的话也是非常方便。
推荐python使用第三方库guiminchip封装来写爬虫.参考pythonweb框架guiminchip
直接用requests
不推荐用requests库。去掉了scrapy的影响,要用requests库,主要有两个地方:libframework和clientframework(https)。也就是说,一个requests库相当于一个java的thrift框架,一个web框架或web服务器框架。https框架就是,getserver的encryption流程。
你的网页只是一个http连接的封装,但是会把流程封装在一个server上。两者的区别是:python本身不能封装连接流程,只能封装连接连接连接传输的过程。所以python所有的http服务都是封装在server上的。requests仅仅是封装了一个连接连接传输的过程。以下是我在写爬虫的时候,用的一个requests库封装连接连接传输的过程。
可以用来测试两个网站之间如何连接。http连接实现应该不是很难,如果不太懂为啥要封装连接连接传输的过程,可以参考如下网站。看你懂不懂。但是封装连接连接传输过程还有一个意义就是,可以调整server,让一个server能够处理任意http连接。
可以用来测试两个不同的网站之间是否能够做互联互通。需要处理的情况可以看下以下示例:http请求的header不同应该怎么处理连接(modules/https_requests.xml)。
1)请求头封装解封装bson/json模块解封装http.headers解封装get/post网络请求头解封装
2)request方法封装解封装post方法封装get/post连接类型封装调用连接的解封装重定向封装cookie参数封装
3)服务端定时刷新(新加的服务不能一开始就开。要学会新加服务。)写不下了,说太多。当然以上不是针对爬虫。一般的业务代码,比如解封封装redis/http/redis,
php curl抓取网页数据(抓ajax异步内容页面和抓普通的页面区别。)
网站优化 • 优采云 发表了文章 • 0 个评论 • 74 次浏览 • 2021-11-12 01:02
其实抓取ajax异步内容页面和抓取普通页面没有太大区别。 Ajax 只是一个异步 http 请求。用类似firebug的工具,找到请求的后端服务url和传参值,然后抓取url传参即可。
使用 Firebug 的网络工具
如果抓取一个页面,内容中没有显示的数据就是一堆JS代码。
代码
$cookie_file=tempnam('./temp','cookie');
$ch = curl_init();
$url1 = "http://www.cdut.edu.cn/default.html";
curl_setopt($ch,CURLOPT_URL,$url1);
curl_setopt($ch,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_ENCODING ,'gzip'); //加入gzip解析
//设置连接结束后保存cookie信息的文件
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
$content=curl_exec($ch);
curl_close($ch);
$ch3 = curl_init();
$url3 = "http://www.cdut.edu.cn/xww/dwr ... 3B%3B
$curlPost = "callCount=1&page=/xww/type/1000020118.html&httpSessionId=12A9B726E6A2D4D3B09DE7952B2F282C&scriptSessionId=295315B4B4141B09DA888D3A3ADB8FAA658&c0-scriptName=portalAjax&c0-methodName=getNewsXml&c0-id=0&c0-param0=string:10000201&c0-param1=string:1000020118&c0-param2=string:news_&c0-param3=number:5969&c0-param4=number:1&c0-param5=null:null&c0-param6=null:null&batchId=0";
curl_setopt($ch3,CURLOPT_URL,$url3);
curl_setopt($ch3,CURLOPT_POST,1);
curl_setopt($ch3,CURLOPT_POSTFIELDS,$curlPost);
//设置连接结束后保存cookie信息的文件
curl_setopt($ch3,CURLOPT_COOKIEFILE,$cookie_file);
$content1=curl_exec($ch3);
curl_close($ch3);
我是王与虎的分界线 查看全部
php curl抓取网页数据(抓ajax异步内容页面和抓普通的页面区别。)
其实抓取ajax异步内容页面和抓取普通页面没有太大区别。 Ajax 只是一个异步 http 请求。用类似firebug的工具,找到请求的后端服务url和传参值,然后抓取url传参即可。
使用 Firebug 的网络工具

如果抓取一个页面,内容中没有显示的数据就是一堆JS代码。

代码
$cookie_file=tempnam('./temp','cookie');
$ch = curl_init();
$url1 = "http://www.cdut.edu.cn/default.html";
curl_setopt($ch,CURLOPT_URL,$url1);
curl_setopt($ch,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_ENCODING ,'gzip'); //加入gzip解析
//设置连接结束后保存cookie信息的文件
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
$content=curl_exec($ch);
curl_close($ch);
$ch3 = curl_init();
$url3 = "http://www.cdut.edu.cn/xww/dwr ... 3B%3B
$curlPost = "callCount=1&page=/xww/type/1000020118.html&httpSessionId=12A9B726E6A2D4D3B09DE7952B2F282C&scriptSessionId=295315B4B4141B09DA888D3A3ADB8FAA658&c0-scriptName=portalAjax&c0-methodName=getNewsXml&c0-id=0&c0-param0=string:10000201&c0-param1=string:1000020118&c0-param2=string:news_&c0-param3=number:5969&c0-param4=number:1&c0-param5=null:null&c0-param6=null:null&batchId=0";
curl_setopt($ch3,CURLOPT_URL,$url3);
curl_setopt($ch3,CURLOPT_POST,1);
curl_setopt($ch3,CURLOPT_POSTFIELDS,$curlPost);
//设置连接结束后保存cookie信息的文件
curl_setopt($ch3,CURLOPT_COOKIEFILE,$cookie_file);
$content1=curl_exec($ch3);
curl_close($ch3);
我是王与虎的分界线
php curl抓取网页数据(前端天堂createjs的开源web缓存工具:javascriptquerystream,jboss等实现有模块)
网站优化 • 优采云 发表了文章 • 0 个评论 • 64 次浏览 • 2021-11-10 16:06
phpcurl抓取网页数据,这里之前抓取了大部分的(截图)有兴趣的,
web-inf下面配置表单后actionurl
githubrepo-homeoeverything不过我也最近在关注其他语言的浏览器插件,比如前端天堂createjs的,
目前有个开源的web缓存工具:javascriptquerystream,基于jquery,界面简单,支持http/2,部署简单。
之前使用的可以用request接收response,提取其中需要的字段,
可以看看三块套件,里面有很多都可以去尝试一下hebokeep,
cache-control
express
最近打算用redis缓存数据,同时ceph,crunchyll,jboss等实现服务均已上线。就去中国网找了下,官网没有专门教程,但有介绍,个人感觉不是那么简单,都是infra(infrastructureforresponsible)最好找个具体的infra。没有infra建议自己搭建一个,省心省力。
从官网看到android实现有模块,专门针对jboss可以从这看看资料。自己搭建着gitcafe,解决业务就可以,缓存有headservice-express/celery..。
web服务器的话用webserverproxy,urlschemerewrite,trafficpredicate。 查看全部
php curl抓取网页数据(前端天堂createjs的开源web缓存工具:javascriptquerystream,jboss等实现有模块)
phpcurl抓取网页数据,这里之前抓取了大部分的(截图)有兴趣的,
web-inf下面配置表单后actionurl
githubrepo-homeoeverything不过我也最近在关注其他语言的浏览器插件,比如前端天堂createjs的,
目前有个开源的web缓存工具:javascriptquerystream,基于jquery,界面简单,支持http/2,部署简单。
之前使用的可以用request接收response,提取其中需要的字段,
可以看看三块套件,里面有很多都可以去尝试一下hebokeep,
cache-control
express
最近打算用redis缓存数据,同时ceph,crunchyll,jboss等实现服务均已上线。就去中国网找了下,官网没有专门教程,但有介绍,个人感觉不是那么简单,都是infra(infrastructureforresponsible)最好找个具体的infra。没有infra建议自己搭建一个,省心省力。
从官网看到android实现有模块,专门针对jboss可以从这看看资料。自己搭建着gitcafe,解决业务就可以,缓存有headservice-express/celery..。
web服务器的话用webserverproxy,urlschemerewrite,trafficpredicate。
php curl抓取网页数据(我用就是抓取数据的抓取技巧(二))
网站优化 • 优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2021-10-28 06:05
我使用php和curl主要是为了抓取数据。当然,我们也可以使用其他方法来抓取数据,比如fsockopen、file_get_contents等,但是只能抓取那些可以直接访问的页面。如果要抓取有页面访问控制的页面,或者登录后的页面,就比较困难了。
1.获取文件没有访问控制
2.使用代理进行爬取
为什么要使用代理进行抓取?以谷歌为例。如果你抓取谷歌的数据,如果你在短时间内频繁抓取它,你将无法抓取它。Google 限制您的 IP 地址。这时候可以换个proxy再抓一次。
3.post数据后,抓取数据
单独说一下数据提交数据,因为在使用curl的时候,经常会有数据交互,所以比较重要。
在upload.php文件中,print_r($_post); 使用 curl 捕获upload.php数组的输出([name] => test [sex] => 1 [birth] => 20101010)
4. 获取一些带有页面访问控制的页面
之前写过一篇文章。有兴趣的可以看看页面访问控制的3种方法。
如果使用上述方法捕获,会报如下错误
您无权查看此页面
您无权使用您提供的凭据查看此目录或页面,因为您的 Web 浏览器正在发送 Web 服务器未配置为接受的 www-authenticate 标头字段。
这时候我们会使用 curlopt_userpwd 来验证
上面php curl常用的五个经典例子,都是小编分享的内容。希望能给大家一个参考,也希望大家多多支持万千网。 查看全部
php curl抓取网页数据(我用就是抓取数据的抓取技巧(二))
我使用php和curl主要是为了抓取数据。当然,我们也可以使用其他方法来抓取数据,比如fsockopen、file_get_contents等,但是只能抓取那些可以直接访问的页面。如果要抓取有页面访问控制的页面,或者登录后的页面,就比较困难了。
1.获取文件没有访问控制
2.使用代理进行爬取
为什么要使用代理进行抓取?以谷歌为例。如果你抓取谷歌的数据,如果你在短时间内频繁抓取它,你将无法抓取它。Google 限制您的 IP 地址。这时候可以换个proxy再抓一次。
3.post数据后,抓取数据
单独说一下数据提交数据,因为在使用curl的时候,经常会有数据交互,所以比较重要。
在upload.php文件中,print_r($_post); 使用 curl 捕获upload.php数组的输出([name] => test [sex] => 1 [birth] => 20101010)
4. 获取一些带有页面访问控制的页面

之前写过一篇文章。有兴趣的可以看看页面访问控制的3种方法。
如果使用上述方法捕获,会报如下错误
您无权查看此页面
您无权使用您提供的凭据查看此目录或页面,因为您的 Web 浏览器正在发送 Web 服务器未配置为接受的 www-authenticate 标头字段。
这时候我们会使用 curlopt_userpwd 来验证
上面php curl常用的五个经典例子,都是小编分享的内容。希望能给大家一个参考,也希望大家多多支持万千网。
php curl抓取网页数据(网站制作居于LINUX+PHP+MYSQL框架,循环取出需要的内容)
网站优化 • 优采云 发表了文章 • 0 个评论 • 65 次浏览 • 2021-10-27 07:13
(.*?)
(.*?)
#是';
preg_match_all($regular,$html_data,$connect);//进行正则匹配得到你想要的
//循环出需要的内容数组
foreach($connect as $k =>$var){
if($k==2 || $k==3|| $k==5 || $k==7){
$b = array_merge(array_filter($connect[$k]));
$array[]=$b;
}
}
获取到数据数组后,可以根据需要添加数据
内容详情需要爬取获取新闻内容页面的链接,也需要使用curl获取信息
需要注意的是,正则表达式中的html需要和页面的格式一致。可以到原来的网站,右键查看源码,查看格式,复制html即可抓包。如果仍然无法捕获 内容可能格式不正确。有些地方可能会有更少或更多的空间。这时候直接在标签之间(.*?)。也可以一点一点的进行匹配,看看哪个部分不匹配。
天龙网络为客户提供网站开发定制服务,网站生产生活在LINUX+PHP+MYSQL框架下,欢迎客户咨询我们的建站热线 查看全部
php curl抓取网页数据(网站制作居于LINUX+PHP+MYSQL框架,循环取出需要的内容)
(.*?)
(.*?)
#是';
preg_match_all($regular,$html_data,$connect);//进行正则匹配得到你想要的
//循环出需要的内容数组
foreach($connect as $k =>$var){
if($k==2 || $k==3|| $k==5 || $k==7){
$b = array_merge(array_filter($connect[$k]));
$array[]=$b;
}
}
获取到数据数组后,可以根据需要添加数据
内容详情需要爬取获取新闻内容页面的链接,也需要使用curl获取信息
需要注意的是,正则表达式中的html需要和页面的格式一致。可以到原来的网站,右键查看源码,查看格式,复制html即可抓包。如果仍然无法捕获 内容可能格式不正确。有些地方可能会有更少或更多的空间。这时候直接在标签之间(.*?)。也可以一点一点的进行匹配,看看哪个部分不匹配。
天龙网络为客户提供网站开发定制服务,网站生产生活在LINUX+PHP+MYSQL框架下,欢迎客户咨询我们的建站热线
php curl抓取网页数据(使用PHP的cURL库可以简单和有效地去抓网页)
网站优化 • 优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2021-10-23 23:13
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取 Web 内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个PHP库。
启用卷曲设置
首先我们要先判断我们的PHP是否启用了这个库,可以通过php_info()函数来获取这个信息。
﹤?php<br />phpinfo();<br />?﹥
如果在网页上可以看到如下输出,说明cURL库已经开启。
如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,去掉前面的分号。如下:
//取消下在的注释<br />extension=php_curl.dll
如果你在 Linux 下,那么你需要重新编译你的 PHP。编辑时需要开启编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这里有一个小程序:
﹤?php
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置你需要爬取的网址
curl_setopt($curl, CURLOPT_URL,'');
// 设置标题
curl_setopt($curl, CURLOPT_HEADER, 1);
// 设置 cURL 参数,并要求将结果保存为字符串或输出到屏幕。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 运行 cURL 并请求一个网页
$data = curl_exec($curl);
// 关闭 URL 请求
curl_close($curl);
// 显示获取的数据
var_dump($data);
如何发布数据
上面是抓取网页的代码,下面是到某个网页的POST数据。假设我们有一个处理表单的URL,可以接受两个表单域,一个是电话号码,一个是短信内容。
﹤?php<br />$phoneNumber = '13912345678';<br />$message = 'This message was generated by curl and php';<br />$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' .
urlencode($message) . '&SUBMIT=Send';<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php');<br />curl_setopt($ch, CURLOPT_HEADER, 1);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />curl_setopt($ch, CURLOPT_POST, 1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);<br />$data = curl_exec();<br />curl_close($ch);<br />?﹥
从上面的程序可以看出,CURLOPT_POST是用来设置HTTP协议的POST方法而不是GET方法的,然后CURLOPT_POSTFIELDS是用来设置POST数据的。
关于代理服务器
以下是如何使用代理服务器的示例。请注意高亮的代码,代码很简单,我就不多说了。
﹤?php <br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');<br />curl_setopt($ch, CURLOPT_HEADER, 1);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);<br />curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');<br />curl_setopt($ch, CURLOPT_PROXYUS<a target="_blank"
rel="nofollow" href=
"http://www.csai.cn/incsearch/s ... %3BWD, 'user:password');<br />$data = curl_exec();<br />curl_close($ch);<br />?﹥
关于 SSL 和 Cookie 查看全部
php curl抓取网页数据(使用PHP的cURL库可以简单和有效地去抓网页)
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取 Web 内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个PHP库。
启用卷曲设置
首先我们要先判断我们的PHP是否启用了这个库,可以通过php_info()函数来获取这个信息。
﹤?php<br />phpinfo();<br />?﹥
如果在网页上可以看到如下输出,说明cURL库已经开启。
如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,去掉前面的分号。如下:
//取消下在的注释<br />extension=php_curl.dll
如果你在 Linux 下,那么你需要重新编译你的 PHP。编辑时需要开启编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这里有一个小程序:
﹤?php
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置你需要爬取的网址
curl_setopt($curl, CURLOPT_URL,'');
// 设置标题
curl_setopt($curl, CURLOPT_HEADER, 1);
// 设置 cURL 参数,并要求将结果保存为字符串或输出到屏幕。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 运行 cURL 并请求一个网页
$data = curl_exec($curl);
// 关闭 URL 请求
curl_close($curl);
// 显示获取的数据
var_dump($data);
如何发布数据
上面是抓取网页的代码,下面是到某个网页的POST数据。假设我们有一个处理表单的URL,可以接受两个表单域,一个是电话号码,一个是短信内容。
﹤?php<br />$phoneNumber = '13912345678';<br />$message = 'This message was generated by curl and php';<br />$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' .
urlencode($message) . '&SUBMIT=Send';<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php');<br />curl_setopt($ch, CURLOPT_HEADER, 1);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />curl_setopt($ch, CURLOPT_POST, 1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);<br />$data = curl_exec();<br />curl_close($ch);<br />?﹥
从上面的程序可以看出,CURLOPT_POST是用来设置HTTP协议的POST方法而不是GET方法的,然后CURLOPT_POSTFIELDS是用来设置POST数据的。
关于代理服务器
以下是如何使用代理服务器的示例。请注意高亮的代码,代码很简单,我就不多说了。
﹤?php <br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');<br />curl_setopt($ch, CURLOPT_HEADER, 1);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);<br />curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');<br />curl_setopt($ch, CURLOPT_PROXYUS<a target="_blank"
rel="nofollow" href=
"http://www.csai.cn/incsearch/s ... %3BWD, 'user:password');<br />$data = curl_exec();<br />curl_close($ch);<br />?﹥
关于 SSL 和 Cookie
php curl抓取网页数据(使用PHP的cURL库可以简单和有效地去抓网页。)
网站优化 • 优采云 发表了文章 • 0 个评论 • 73 次浏览 • 2021-10-23 23:09
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取 Web 内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个PHP库。
启用卷曲设置
首先我们要先判断我们的PHP是否启用了这个库,可以通过php_info()函数来获取这个信息。
﹤?php<br />
phpinfo();<br />
?﹥
如果在网页上可以看到如下输出,说明cURL库已经开启。
如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,去掉前面的分号。如下:
//取消下在的注释<br />
extension=php_curl.dll
如果你在 Linux 下,那么你需要重新编译你的 PHP。编辑时需要开启编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这里有一个小程序:
﹤?php
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置你需要爬取的网址
curl_setopt($curl, CURLOPT_URL,'');
// 设置标题
curl_setopt($curl, CURLOPT_HEADER, 1);
// 设置cURL参数,询问结果是保存在字符串中还是输出到屏幕上。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 运行 cURL 并请求一个网页
$data = curl_exec($curl);
// 关闭 URL 请求
curl_close($curl);
// 显示获取的数据
var_dump($data);
如何发布数据
上面是抓取网页的代码,下面是到某个网页的POST数据。假设我们有一个处理表单的URL,可以接受两个表单域,一个是电话号码,一个是短信内容。
﹤?php<br />
$phoneNumber = '13912345678';<br />
$message = 'This message was generated by curl and php';<br />
$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' . urlencode($message) . '&SUBMIT=Send';<br />
$ch = curl_init();<br />
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php');<br />
curl_setopt($ch, CURLOPT_HEADER, 1);<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />
curl_setopt($ch, CURLOPT_POST, 1);<br />
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);<br />
$data = curl_exec();<br />
curl_close($ch);<br />
?﹥
从上面的程序可以看出,CURLOPT_POST是用来设置HTTP协议的POST方法而不是GET方法的,然后CURLOPT_POSTFIELDS是用来设置POST数据的。
关于代理服务器
以下是如何使用代理服务器的示例。请注意高亮的代码,代码很简单,我就不多说了。
﹤?php <br />
$ch = curl_init();<br />
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');<br />
curl_setopt($ch, CURLOPT_HEADER, 1);<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);<br />
curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');<br />
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');<br />
$data = curl_exec();<br />
curl_close($ch);<br />
?﹥
关于 SSL 和 Cookie 查看全部
php curl抓取网页数据(使用PHP的cURL库可以简单和有效地去抓网页。)
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取 Web 内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个PHP库。
启用卷曲设置
首先我们要先判断我们的PHP是否启用了这个库,可以通过php_info()函数来获取这个信息。
﹤?php<br />
phpinfo();<br />
?﹥
如果在网页上可以看到如下输出,说明cURL库已经开启。
如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,去掉前面的分号。如下:
//取消下在的注释<br />
extension=php_curl.dll
如果你在 Linux 下,那么你需要重新编译你的 PHP。编辑时需要开启编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这里有一个小程序:
﹤?php
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置你需要爬取的网址
curl_setopt($curl, CURLOPT_URL,'');
// 设置标题
curl_setopt($curl, CURLOPT_HEADER, 1);
// 设置cURL参数,询问结果是保存在字符串中还是输出到屏幕上。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 运行 cURL 并请求一个网页
$data = curl_exec($curl);
// 关闭 URL 请求
curl_close($curl);
// 显示获取的数据
var_dump($data);
如何发布数据
上面是抓取网页的代码,下面是到某个网页的POST数据。假设我们有一个处理表单的URL,可以接受两个表单域,一个是电话号码,一个是短信内容。
﹤?php<br />
$phoneNumber = '13912345678';<br />
$message = 'This message was generated by curl and php';<br />
$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' . urlencode($message) . '&SUBMIT=Send';<br />
$ch = curl_init();<br />
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php');<br />
curl_setopt($ch, CURLOPT_HEADER, 1);<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />
curl_setopt($ch, CURLOPT_POST, 1);<br />
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);<br />
$data = curl_exec();<br />
curl_close($ch);<br />
?﹥
从上面的程序可以看出,CURLOPT_POST是用来设置HTTP协议的POST方法而不是GET方法的,然后CURLOPT_POSTFIELDS是用来设置POST数据的。
关于代理服务器
以下是如何使用代理服务器的示例。请注意高亮的代码,代码很简单,我就不多说了。
﹤?php <br />
$ch = curl_init();<br />
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');<br />
curl_setopt($ch, CURLOPT_HEADER, 1);<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);<br />
curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');<br />
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');<br />
$data = curl_exec();<br />
curl_close($ch);<br />
?﹥
关于 SSL 和 Cookie
php curl抓取网页数据(检查PHP是否CURL在PHP的主配置文件库中的应用)
网站优化 • 优采云 发表了文章 • 0 个评论 • 82 次浏览 • 2021-10-17 15:23
PHP的Curl库用于获取网络上的资源,就像模拟平常浏览器打开一样。它可用于轻松抓取网页上的信息。同时,这个库还提供了多种设置,可以设置各种HTTP协议中的参数。使用CURL,可以完全模拟用户登录、浏览、网页发送信息、编写各种脚本。
检查 PHP 是否加载 CURL
在 PHP 的主配置文件 php.ini 中,确保打开 curl 功能。
第一个例子
我们用curl抓取施博文博客的首页
上面的代码可以得到一个页面的源代码,借助PHP强大的正则表达式,可以很方便的从页面中提取一些数据。当然,如果在URL地址后添加参数,则可以使用get方法提交参数。
在帖子中提交数据
为了一次性提交大量数据,并且为了更加保密,通常的做法是使用post方式提交数据。使用curl库,也可以很方便的模拟post方法。假设要提交的数据以关联数组$data的形式存储在data中。
上面代码中,第一行表示要post提交的数据,第二行是存储在关联数组中的数据对。发送此请求时, $data 中的数据将自动以 post request 的格式发送。
设置 User-Agent、Cookie 和 Referer
通常,一个网站记录用户的在线状态是通过Cookie信息记录的,User-Agent和Referer也是用来判断访问者是否有权限读取相应信息的,比如“防盗链”函数,也就是验证 HTTP 头中的 Referer 信息,用来做判断。Curl 也为我们提供了修改这些信息的方法,如下:
模拟登录百度账号
博主编写的《百度贴吧登录系统》广泛使用curl来模拟用户登录和登录。登录部分收录了大部分日常使用中curl库的常用例子,系统完全开源是的,可以在这里查看代码(Github)。
其他功能
除了上面提到的一些常用的方法外,PHP的curl库还提供了ssl连接、文件上传(put)方法等各种功能。你可以在PHP官方手册页找到相关介绍:
PHP Document-Curl 查看全部
php curl抓取网页数据(检查PHP是否CURL在PHP的主配置文件库中的应用)
PHP的Curl库用于获取网络上的资源,就像模拟平常浏览器打开一样。它可用于轻松抓取网页上的信息。同时,这个库还提供了多种设置,可以设置各种HTTP协议中的参数。使用CURL,可以完全模拟用户登录、浏览、网页发送信息、编写各种脚本。
检查 PHP 是否加载 CURL
在 PHP 的主配置文件 php.ini 中,确保打开 curl 功能。
第一个例子
我们用curl抓取施博文博客的首页
上面的代码可以得到一个页面的源代码,借助PHP强大的正则表达式,可以很方便的从页面中提取一些数据。当然,如果在URL地址后添加参数,则可以使用get方法提交参数。
在帖子中提交数据
为了一次性提交大量数据,并且为了更加保密,通常的做法是使用post方式提交数据。使用curl库,也可以很方便的模拟post方法。假设要提交的数据以关联数组$data的形式存储在data中。
上面代码中,第一行表示要post提交的数据,第二行是存储在关联数组中的数据对。发送此请求时, $data 中的数据将自动以 post request 的格式发送。
设置 User-Agent、Cookie 和 Referer
通常,一个网站记录用户的在线状态是通过Cookie信息记录的,User-Agent和Referer也是用来判断访问者是否有权限读取相应信息的,比如“防盗链”函数,也就是验证 HTTP 头中的 Referer 信息,用来做判断。Curl 也为我们提供了修改这些信息的方法,如下:
模拟登录百度账号
博主编写的《百度贴吧登录系统》广泛使用curl来模拟用户登录和登录。登录部分收录了大部分日常使用中curl库的常用例子,系统完全开源是的,可以在这里查看代码(Github)。
其他功能
除了上面提到的一些常用的方法外,PHP的curl库还提供了ssl连接、文件上传(put)方法等各种功能。你可以在PHP官方手册页找到相关介绍:
PHP Document-Curl
php curl抓取网页数据(具有很好的phpcurl获取页面内容或提交数据,)
网站优化 • 优采云 发表了文章 • 0 个评论 • 77 次浏览 • 2021-10-05 20:14
更新时间:2019年1月15日09:17:58 作者:四魂
今天小编就给大家分享一篇关于php curl如何在不直接输出返回结果的情况下获取https页面内容的文章。有很好的参考价值,希望对大家有所帮助。跟着小编一起来看看吧
使用 php curl 获取页面内容或提交数据。有时您希望将返回的内容存储为变量而不是直接输出。
方法:将 curl 的 CURLOPT_RETURNTRANSFER 选项设置为 1 或 true。
例如:
$url = 'http://www.baidu.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
// 不要http header 加快效率
curl_setopt($curl, CURLOPT_HEADER, 0);
// https请求 不验证证书和hosts
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($ch); //已经获取到内容,没有输出到页面上.
curl_close($ch);
以上php curl获取https页面内容的设置方法,不直接输出返回结果,都是编辑器共享的内容。希望能给大家一个参考,也希望大家多多支持脚本之家。 查看全部
php curl抓取网页数据(具有很好的phpcurl获取页面内容或提交数据,)
更新时间:2019年1月15日09:17:58 作者:四魂
今天小编就给大家分享一篇关于php curl如何在不直接输出返回结果的情况下获取https页面内容的文章。有很好的参考价值,希望对大家有所帮助。跟着小编一起来看看吧
使用 php curl 获取页面内容或提交数据。有时您希望将返回的内容存储为变量而不是直接输出。
方法:将 curl 的 CURLOPT_RETURNTRANSFER 选项设置为 1 或 true。
例如:
$url = 'http://www.baidu.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
// 不要http header 加快效率
curl_setopt($curl, CURLOPT_HEADER, 0);
// https请求 不验证证书和hosts
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($ch); //已经获取到内容,没有输出到页面上.
curl_close($ch);
以上php curl获取https页面内容的设置方法,不直接输出返回结果,都是编辑器共享的内容。希望能给大家一个参考,也希望大家多多支持脚本之家。
php curl抓取网页数据(使用PHP的cURL库可以简单和有效地去抓网页。)
网站优化 • 优采云 发表了文章 • 0 个评论 • 88 次浏览 • 2021-10-05 20:12
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取网页内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个PHP库。
启用卷曲设置
首先我们要先判断我们的PHP是否启用了这个库,可以通过php_info()函数来获取这个信息。
﹤?php<br />phpinfo();<br />?﹥
如果在网页上可以看到如下输出,说明cURL库已经开启。
如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,去掉前面的分号。如下:
//取消下在的注释<br />extension=php_curl.dll
如果你在 Linux 下,那么你需要重新编译你的 PHP。编辑时需要开启编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这里有一个小程序:
﹤?php
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置你需要爬取的网址
curl_setopt($curl, CURLOPT_URL,'#39;);
// 设置标题
curl_setopt($curl, CURLOPT_HEADER, 1);
// 设置cURL参数,询问结果是保存在字符串中还是输出到屏幕上。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 运行 cURL 并请求一个网页
$data = curl_exec($curl);
// 关闭 URL 请求
curl_close($curl);
// 显示获取的数据
var_dump($data);
如何发布数据
上面是抓取网页的代码,下面是到某个网页的POST数据。假设我们有一个处理表单的URL,可以接受两个表单域,一个是电话号码,一个是短信内容。
﹤?php<br />$phoneNumber = '13912345678';<br />$message = 'This message was generated by curl and php';<br />$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' .
urlencode($message) . '&SUBMIT=Send';<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php');<br />curl_setopt($ch, CURLOPT_HEADER, 1);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />curl_setopt($ch, CURLOPT_POST, 1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);<br />$data = curl_exec();<br />curl_close($ch);<br />?﹥
从上面的程序可以看出,CURLOPT_POST是用来设置HTTP协议的POST方法而不是GET方法的,然后CURLOPT_POSTFIELDS是用来设置POST数据的。
关于代理服务器
以下是如何使用代理服务器的示例。请注意高亮的代码,代码很简单,我就不多说了。
﹤?php <br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');<br />curl_setopt($ch, CURLOPT_HEADER, 1);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);<br />curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');<br />curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');<br />$data = curl_exec();<br />curl_close($ch);<br />?﹥
关于 SSL 和 Cookie 查看全部
php curl抓取网页数据(使用PHP的cURL库可以简单和有效地去抓网页。)
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取网页内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个PHP库。
启用卷曲设置
首先我们要先判断我们的PHP是否启用了这个库,可以通过php_info()函数来获取这个信息。
﹤?php<br />phpinfo();<br />?﹥
如果在网页上可以看到如下输出,说明cURL库已经开启。
如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,去掉前面的分号。如下:
//取消下在的注释<br />extension=php_curl.dll
如果你在 Linux 下,那么你需要重新编译你的 PHP。编辑时需要开启编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这里有一个小程序:
﹤?php
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置你需要爬取的网址
curl_setopt($curl, CURLOPT_URL,'#39;);
// 设置标题
curl_setopt($curl, CURLOPT_HEADER, 1);
// 设置cURL参数,询问结果是保存在字符串中还是输出到屏幕上。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 运行 cURL 并请求一个网页
$data = curl_exec($curl);
// 关闭 URL 请求
curl_close($curl);
// 显示获取的数据
var_dump($data);
如何发布数据
上面是抓取网页的代码,下面是到某个网页的POST数据。假设我们有一个处理表单的URL,可以接受两个表单域,一个是电话号码,一个是短信内容。
﹤?php<br />$phoneNumber = '13912345678';<br />$message = 'This message was generated by curl and php';<br />$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' .
urlencode($message) . '&SUBMIT=Send';<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php');<br />curl_setopt($ch, CURLOPT_HEADER, 1);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />curl_setopt($ch, CURLOPT_POST, 1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);<br />$data = curl_exec();<br />curl_close($ch);<br />?﹥
从上面的程序可以看出,CURLOPT_POST是用来设置HTTP协议的POST方法而不是GET方法的,然后CURLOPT_POSTFIELDS是用来设置POST数据的。
关于代理服务器
以下是如何使用代理服务器的示例。请注意高亮的代码,代码很简单,我就不多说了。
﹤?php <br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');<br />curl_setopt($ch, CURLOPT_HEADER, 1);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);<br />curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');<br />curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');<br />$data = curl_exec();<br />curl_close($ch);<br />?﹥
关于 SSL 和 Cookie
php curl抓取网页数据(学习“两者效率的稳定性问题”的讲解内容简单清晰)
网站优化 • 优采云 发表了文章 • 0 个评论 • 78 次浏览 • 2021-10-02 14:03
本文文章主要讲解《如何解决PHP CURL或file_get_contents的代码获取页面标题的问题以及两者效率的稳定性问题》。文章中的讲解简单明了,易学易懂。请关注下面的编辑。思路慢慢深入,一起来学习学习《如何解决PHP CURL或者file_get_contents的代码获取页面标题的问题以及两者效率的稳定性》!
推荐的获取CURL的方法
使用 file_get_contents
看一下 file_get_contents 性能
1)fopen/file_get_contents 每次请求远程URL中的数据时,都会再次进行DNS查询,不会缓存DNS信息。但是 CURL 会自动缓存 DNS 信息。请求同域名下的网页或图片,只需要进行一次DNS查询。这大大减少了 DNS 查询的数量。所以CURL的性能要比fopen/file_get_contents好很多。
2)fopen/file_get_contents 在请求 HTTP 时使用 http_fopen_wrapper,不会保持存活。但是卷曲可以。这样,在多次请求多个链接时,curl 的效率会更高。(应该可以设置标题)
3)fopen/file_get_contents 函数会受到php.ini 文件中allow_url_open 选项配置的影响。如果配置关闭,则该功能无效。并且 curl 不受此配置的影响。
4)curl 可以模拟多种请求,如:POST 数据、表单提交等,用户可以根据自己的需求自定义请求。而 fopen/file_get_contents 只能使用 get 来获取数据。
5)fopen/file_get_contents 无法正确下载二进制文件
6)fopen/file_get_contents 无法正确处理 ssl 请求
7)curl 可以利用多线程
8) 使用file_get_contents时,如果网络有问题,这里很容易积累一些进程
9)如果要进行连续连接,请多次请求多个页面。那么 file_get_contents 就会出错。获取的内容也可能是错误的。所以在做类似采集的事情的时候,肯定有问题。使用curl进行采集爬取,如果你还不相信,我们再做一个测试。
curl和file_get_contents PHP源码性能对比如下:
第182话
测试访问
file_get_contents 速度:4.2404510975 秒
卷曲速度:2.8205530643 秒
curl 比 file_get_contents 快约 30%,最重要的是,服务器负载更低。
ps:php函数file_get_contents和curl的效率和稳定性问题
我习惯使用方便快捷的file_get_contents函数去抓取其他家网站的内容,但是一直遇到获取失败的问题。虽然按照手册中的例子设置了超时时间,但大多数时候并不好用:
$config['context'] = stream_context_create(array('http' => array('method' => "GET",'timeout' => 5)));
'timeout' => 5//这个超时时间不稳定,经常难以使用。这时候再看服务器的连接池,会发现一堆类似下面的错误,让你头疼:
file_get_contents(***): 无法打开流...
作为最后的手段,我安装了 curl 库并编写了一个函数替换:
function curl_get_contents($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); //设置访问的url地址
//curl_setopt($ch,CURLOPT_HEADER,1); //是否显示头部信息
curl_setopt($ch, CURLOPT_TIMEOUT, 5); //设置超时
curl_setopt($ch, CURLOPT_USERAGENT, _USERAGENT_); //用户访问代理 User-Agent
curl_setopt($ch, CURLOPT_REFERER,_REFERER_); //设置 referer
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); //跟踪301
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回结果
$r = curl_exec($ch);
curl_close($ch);
return $r;
}
这样,除了真正的网络问题外,没有更多的问题。
这是其他人对 curl 和 file_get_contents 的测试:
File_get_contents 需要几秒钟才能获取:
2.31319094
2.30374217
2.21512604
3.30553889
2.30124092
curl 使用的时间:
0.68719101
0.64675593
0.64326
0.81983113
0.63956594
感谢您的阅读。以上就是《如何解决PHP CURL或file_get_contents的代码获取页面标题以及两者效率稳定性问题》的内容。看完这篇文章,相信大家都在思考如何解决PHP CURL或者file_get_contents获取页面标题的问题。代码的稳定性问题和两者的效率问题有比较深刻的体会,具体的用法需要大家验证。这就是一宿云。小编会为大家推送更多相关知识点文章,欢迎关注! 查看全部
php curl抓取网页数据(学习“两者效率的稳定性问题”的讲解内容简单清晰)
本文文章主要讲解《如何解决PHP CURL或file_get_contents的代码获取页面标题的问题以及两者效率的稳定性问题》。文章中的讲解简单明了,易学易懂。请关注下面的编辑。思路慢慢深入,一起来学习学习《如何解决PHP CURL或者file_get_contents的代码获取页面标题的问题以及两者效率的稳定性》!
推荐的获取CURL的方法
使用 file_get_contents
看一下 file_get_contents 性能
1)fopen/file_get_contents 每次请求远程URL中的数据时,都会再次进行DNS查询,不会缓存DNS信息。但是 CURL 会自动缓存 DNS 信息。请求同域名下的网页或图片,只需要进行一次DNS查询。这大大减少了 DNS 查询的数量。所以CURL的性能要比fopen/file_get_contents好很多。
2)fopen/file_get_contents 在请求 HTTP 时使用 http_fopen_wrapper,不会保持存活。但是卷曲可以。这样,在多次请求多个链接时,curl 的效率会更高。(应该可以设置标题)
3)fopen/file_get_contents 函数会受到php.ini 文件中allow_url_open 选项配置的影响。如果配置关闭,则该功能无效。并且 curl 不受此配置的影响。
4)curl 可以模拟多种请求,如:POST 数据、表单提交等,用户可以根据自己的需求自定义请求。而 fopen/file_get_contents 只能使用 get 来获取数据。
5)fopen/file_get_contents 无法正确下载二进制文件
6)fopen/file_get_contents 无法正确处理 ssl 请求
7)curl 可以利用多线程
8) 使用file_get_contents时,如果网络有问题,这里很容易积累一些进程
9)如果要进行连续连接,请多次请求多个页面。那么 file_get_contents 就会出错。获取的内容也可能是错误的。所以在做类似采集的事情的时候,肯定有问题。使用curl进行采集爬取,如果你还不相信,我们再做一个测试。
curl和file_get_contents PHP源码性能对比如下:
第182话
测试访问
file_get_contents 速度:4.2404510975 秒
卷曲速度:2.8205530643 秒
curl 比 file_get_contents 快约 30%,最重要的是,服务器负载更低。
ps:php函数file_get_contents和curl的效率和稳定性问题
我习惯使用方便快捷的file_get_contents函数去抓取其他家网站的内容,但是一直遇到获取失败的问题。虽然按照手册中的例子设置了超时时间,但大多数时候并不好用:
$config['context'] = stream_context_create(array('http' => array('method' => "GET",'timeout' => 5)));
'timeout' => 5//这个超时时间不稳定,经常难以使用。这时候再看服务器的连接池,会发现一堆类似下面的错误,让你头疼:
file_get_contents(***): 无法打开流...
作为最后的手段,我安装了 curl 库并编写了一个函数替换:
function curl_get_contents($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); //设置访问的url地址
//curl_setopt($ch,CURLOPT_HEADER,1); //是否显示头部信息
curl_setopt($ch, CURLOPT_TIMEOUT, 5); //设置超时
curl_setopt($ch, CURLOPT_USERAGENT, _USERAGENT_); //用户访问代理 User-Agent
curl_setopt($ch, CURLOPT_REFERER,_REFERER_); //设置 referer
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); //跟踪301
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回结果
$r = curl_exec($ch);
curl_close($ch);
return $r;
}
这样,除了真正的网络问题外,没有更多的问题。
这是其他人对 curl 和 file_get_contents 的测试:
File_get_contents 需要几秒钟才能获取:
2.31319094
2.30374217
2.21512604
3.30553889
2.30124092
curl 使用的时间:
0.68719101
0.64675593
0.64326
0.81983113
0.63956594
感谢您的阅读。以上就是《如何解决PHP CURL或file_get_contents的代码获取页面标题以及两者效率稳定性问题》的内容。看完这篇文章,相信大家都在思考如何解决PHP CURL或者file_get_contents获取页面标题的问题。代码的稳定性问题和两者的效率问题有比较深刻的体会,具体的用法需要大家验证。这就是一宿云。小编会为大家推送更多相关知识点文章,欢迎关注!
php curl抓取网页数据( 怎样抓取AJAX网站的内容?只不过异步内容 )
网站优化 • 优采云 发表了文章 • 0 个评论 • 94 次浏览 • 2021-09-26 04:32
怎样抓取AJAX网站的内容?只不过异步内容
)
用PHP-curl方法捕获Ajax异步内容的思想分析和代码共享
更新时间:2014年8月25日11:17:48贡献:hebedich
如何获取Ajax的内容网站?这是一个热点问题,也是一个棘手的问题。但事实上,抓取Ajax异步内容页面和抓取普通页面之间并没有什么区别。Ajax只是发出一个异步HTTP请求。只需使用类似于firebug的工具来查找请求的后端服务URL和值传递参数,然后获取URL传递参数
事实上,Ajax异步内容页面和普通页面之间几乎没有区别。Ajax只是发出一个异步HTTP请求。只需使用类似于firebug的工具来查找请求的后端服务URL和值传递参数,然后获取URL传递参数
使用firebug的网络工具
如果抓取页面,内容中未显示的数据就是一堆JS代码
代码
$cookie_file=tempnam('./temp','cookie');
$ch = curl_init();
$url1 = "http://www.cdut.edu.cn/default.html";
curl_setopt($ch,CURLOPT_URL,$url1);
curl_setopt($ch,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_ENCODING ,'gzip'); //加入gzip解析
//设置连接结束后保存cookie信息的文件
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
$content=curl_exec($ch);
curl_close($ch);
$ch3 = curl_init();
$url3 = "http://www.cdut.edu.cn/xww/dwr ... 3B%3B
$curlPost = "callCount=1&page=/xww/type/1000020118.html&httpSessionId=12A9B726E6A2D4D3B09DE7952B2F282C&scriptSessionId=295315B4B4141B09DA888D3A3ADB8FAA658&c0-scriptName=portalAjax&c0-methodName=getNewsXml&c0-id=0&c0-param0=string:10000201&c0-param1=string:1000020118&c0-param2=string:news_&c0-param3=number:5969&c0-param4=number:1&c0-param5=null:null&c0-param6=null:null&batchId=0";
curl_setopt($ch3,CURLOPT_URL,$url3);
curl_setopt($ch3,CURLOPT_POST,1);
curl_setopt($ch3,CURLOPT_POSTFIELDS,$curlPost);
//设置连接结束后保存cookie信息的文件
curl_setopt($ch3,CURLOPT_COOKIEFILE,$cookie_file);
$content1=curl_exec($ch3);
curl_close($ch3); 查看全部
php curl抓取网页数据(
怎样抓取AJAX网站的内容?只不过异步内容
)
用PHP-curl方法捕获Ajax异步内容的思想分析和代码共享
更新时间:2014年8月25日11:17:48贡献:hebedich
如何获取Ajax的内容网站?这是一个热点问题,也是一个棘手的问题。但事实上,抓取Ajax异步内容页面和抓取普通页面之间并没有什么区别。Ajax只是发出一个异步HTTP请求。只需使用类似于firebug的工具来查找请求的后端服务URL和值传递参数,然后获取URL传递参数
事实上,Ajax异步内容页面和普通页面之间几乎没有区别。Ajax只是发出一个异步HTTP请求。只需使用类似于firebug的工具来查找请求的后端服务URL和值传递参数,然后获取URL传递参数
使用firebug的网络工具

如果抓取页面,内容中未显示的数据就是一堆JS代码

代码
$cookie_file=tempnam('./temp','cookie');
$ch = curl_init();
$url1 = "http://www.cdut.edu.cn/default.html";
curl_setopt($ch,CURLOPT_URL,$url1);
curl_setopt($ch,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_ENCODING ,'gzip'); //加入gzip解析
//设置连接结束后保存cookie信息的文件
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
$content=curl_exec($ch);
curl_close($ch);
$ch3 = curl_init();
$url3 = "http://www.cdut.edu.cn/xww/dwr ... 3B%3B
$curlPost = "callCount=1&page=/xww/type/1000020118.html&httpSessionId=12A9B726E6A2D4D3B09DE7952B2F282C&scriptSessionId=295315B4B4141B09DA888D3A3ADB8FAA658&c0-scriptName=portalAjax&c0-methodName=getNewsXml&c0-id=0&c0-param0=string:10000201&c0-param1=string:1000020118&c0-param2=string:news_&c0-param3=number:5969&c0-param4=number:1&c0-param5=null:null&c0-param6=null:null&batchId=0";
curl_setopt($ch3,CURLOPT_URL,$url3);
curl_setopt($ch3,CURLOPT_POST,1);
curl_setopt($ch3,CURLOPT_POSTFIELDS,$curlPost);
//设置连接结束后保存cookie信息的文件
curl_setopt($ch3,CURLOPT_COOKIEFILE,$cookie_file);
$content1=curl_exec($ch3);
curl_close($ch3);
php curl抓取网页数据(web开发的通用web框架框架是怎么样的呢?)
网站优化 • 优采云 发表了文章 • 0 个评论 • 100 次浏览 • 2021-09-24 06:06
phpcurl抓取网页数据,用的是curllib实现的。可以直接修改模块名就能获取整个页面的数据源代码。没有定制门槛,完全免费的,用着很方便。
提取标题的话就用beautifulsoup,字段拆分的话就用lxml(lxml是java的),不过一般抓取页面用这些都足够了,
beautifulsoup+lxml或requests就足够了如果是爬取图片,
提取图片javascript是可以的提取html页面python可以用xmllib等库提取图片javascript是可以的对于本地文件javascript是不可以处理的
web开发网站可以使用phper或者dbaman之类的来做,phper会用it的语言解析html页面,dbaman会用linux的语言把html文件转化为kib或者mb级别的小文件然后压缩处理;使用一个编程语言来搞定网站开发事情还是比较麻烦的,web开发还是集中于php等web开发语言比较好,使用xmlkit、libuv之类的开发model,最后再用python解析出来。
首先web开发由于使用了tomcat这一全球知名javaweb开发框架,使得它对html的解析是非常合适的。它既可以进行java开发,又可以使用php,也可以使用python。html可以和mvc一样分层,又可以模块化封装。所以web开发的语言也是非常多。你使用哪种语言搭配就使用哪种语言的web框架。
对于web开发的通用web框架,除了php和python这两种方案外,可以考虑第三方的javaweb框架,比如shopify等。 查看全部
php curl抓取网页数据(web开发的通用web框架框架是怎么样的呢?)
phpcurl抓取网页数据,用的是curllib实现的。可以直接修改模块名就能获取整个页面的数据源代码。没有定制门槛,完全免费的,用着很方便。
提取标题的话就用beautifulsoup,字段拆分的话就用lxml(lxml是java的),不过一般抓取页面用这些都足够了,
beautifulsoup+lxml或requests就足够了如果是爬取图片,
提取图片javascript是可以的提取html页面python可以用xmllib等库提取图片javascript是可以的对于本地文件javascript是不可以处理的
web开发网站可以使用phper或者dbaman之类的来做,phper会用it的语言解析html页面,dbaman会用linux的语言把html文件转化为kib或者mb级别的小文件然后压缩处理;使用一个编程语言来搞定网站开发事情还是比较麻烦的,web开发还是集中于php等web开发语言比较好,使用xmlkit、libuv之类的开发model,最后再用python解析出来。
首先web开发由于使用了tomcat这一全球知名javaweb开发框架,使得它对html的解析是非常合适的。它既可以进行java开发,又可以使用php,也可以使用python。html可以和mvc一样分层,又可以模块化封装。所以web开发的语言也是非常多。你使用哪种语言搭配就使用哪种语言的web框架。
对于web开发的通用web框架,除了php和python这两种方案外,可以考虑第三方的javaweb框架,比如shopify等。
php curl抓取网页数据(抓ajax异步内容页面和抓普通的页面区别。)
网站优化 • 优采云 发表了文章 • 0 个评论 • 133 次浏览 • 2021-09-14 01:12
其实抓取ajax异步内容页面和抓取普通页面没有太大区别。 Ajax 只是一个异步 http 请求。用类似firebug的工具,找到请求的后端服务url和传参值,然后抓取url传参即可。
使用 Firebug 的网络工具
如果抓取一个页面,内容中没有显示的数据就是一堆JS代码。
代码
$cookie_file=tempnam('./temp','cookie');
$ch = curl_init();
$url1 = "http://www.cdut.edu.cn/default.html";
curl_setopt($ch,CURLOPT_URL,$url1);
curl_setopt($ch,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_ENCODING ,'gzip'); //加入gzip解析
//设置连接结束后保存cookie信息的文件
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
$content=curl_exec($ch);
curl_close($ch);
$ch3 = curl_init();
$url3 = "http://www.cdut.edu.cn/xww/dwr ... 3B%3B
$curlPost = "callCount=1&page=/xww/type/1000020118.html&httpSessionId=12A9B726E6A2D4D3B09DE7952B2F282C&scriptSessionId=295315B4B4141B09DA888D3A3ADB8FAA658&c0-scriptName=portalAjax&c0-methodName=getNewsXml&c0-id=0&c0-param0=string:10000201&c0-param1=string:1000020118&c0-param2=string:news_&c0-param3=number:5969&c0-param4=number:1&c0-param5=null:null&c0-param6=null:null&batchId=0";
curl_setopt($ch3,CURLOPT_URL,$url3);
curl_setopt($ch3,CURLOPT_POST,1);
curl_setopt($ch3,CURLOPT_POSTFIELDS,$curlPost);
//设置连接结束后保存cookie信息的文件
curl_setopt($ch3,CURLOPT_COOKIEFILE,$cookie_file);
$content1=curl_exec($ch3);
curl_close($ch3);
我是王与虎的分界线 查看全部
php curl抓取网页数据(抓ajax异步内容页面和抓普通的页面区别。)
其实抓取ajax异步内容页面和抓取普通页面没有太大区别。 Ajax 只是一个异步 http 请求。用类似firebug的工具,找到请求的后端服务url和传参值,然后抓取url传参即可。
使用 Firebug 的网络工具

如果抓取一个页面,内容中没有显示的数据就是一堆JS代码。

代码
$cookie_file=tempnam('./temp','cookie');
$ch = curl_init();
$url1 = "http://www.cdut.edu.cn/default.html";
curl_setopt($ch,CURLOPT_URL,$url1);
curl_setopt($ch,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_ENCODING ,'gzip'); //加入gzip解析
//设置连接结束后保存cookie信息的文件
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
$content=curl_exec($ch);
curl_close($ch);
$ch3 = curl_init();
$url3 = "http://www.cdut.edu.cn/xww/dwr ... 3B%3B
$curlPost = "callCount=1&page=/xww/type/1000020118.html&httpSessionId=12A9B726E6A2D4D3B09DE7952B2F282C&scriptSessionId=295315B4B4141B09DA888D3A3ADB8FAA658&c0-scriptName=portalAjax&c0-methodName=getNewsXml&c0-id=0&c0-param0=string:10000201&c0-param1=string:1000020118&c0-param2=string:news_&c0-param3=number:5969&c0-param4=number:1&c0-param5=null:null&c0-param6=null:null&batchId=0";
curl_setopt($ch3,CURLOPT_URL,$url3);
curl_setopt($ch3,CURLOPT_POST,1);
curl_setopt($ch3,CURLOPT_POSTFIELDS,$curlPost);
//设置连接结束后保存cookie信息的文件
curl_setopt($ch3,CURLOPT_COOKIEFILE,$cookie_file);
$content1=curl_exec($ch3);
curl_close($ch3);
我是王与虎的分界线
php curl抓取网页数据(PHP的调用测试(get(get)函数(图) )
网站优化 • 优采云 发表了文章 • 0 个评论 • 177 次浏览 • 2021-09-12 21:06
)
PHP 的 curl 功能真的很强大。里面有个curl_multi_init函数,就是批处理任务。可以用它来实现多进程同时抓取多条记录,优化常见的网页抓取程序。
一个简单的获取函数:
function http_get_multi($urls){
$count = count($urls);
$data = [];
$chs = [];
// 创建批处理cURL句柄
$mh = curl_multi_init();
// 创建cURL资源
for($i = 0; $i < $count; $i ++){
$chs[ $i ] = curl_init();
// 设置URL和相应的选项
curl_setopt($chs[ $i ], CURLOPT_RETURNTRANSFER, 1); // return don't print
curl_setopt($chs[ $i ], CURLOPT_URL, $urls[$i]);
curl_setopt($chs[ $i ], CURLOPT_HEADER, 0);
curl_multi_add_handle($mh, $chs[ $i ]);
}
// 增加句柄
// for($i = 0; $i < $count; $i ++){
// curl_multi_add_handle($mh, $chs[ $i ]);
// }
// 执行批处理句柄
do {
$mrc = curl_multi_exec($mh, $active);
} while ($active > 0);
while ($active and $mrc == CURLM_OK) {
if (curl_multi_select($mh) != -1) {
do {
$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
for($i = 0; $i < $count; $i ++){
$content = curl_multi_getcontent($chs[ $i ]);
$data[ $i ] = ( curl_errno($chs[ $i ]) == 0 ) ? $content : false;
}
// 关闭全部句柄
for($i = 0; $i < $count; $i ++){
curl_multi_remove_handle($mh, $chs[ $i ]);
}
curl_multi_close($mh);
return $data;
}
下面的调用测试(get() 函数就像这里:):
//弄很多个网页的url
$url = [
'http://www.baidu.com',
'http://www.163.com',
'http://www.sina.com.cn',
'http://www.qq.com',
'http://www.sohu.com',
'http://www.douban.com',
'http://www.cnblogs.com',
'http://www.taobao.com',
'http://www.php.net',
];
$urls = [];
for($i = 0; $i < 10; $i ++){
foreach($url as $r)
$urls[] = $r . '/?v=' . rand();
}
//并发请求
$datas = http_get_multi($urls);
foreach($datas as $key => $data){
file_put_contents('log/multi_' . $key . '.txt', $data); // 记录一下请求结果。记得创建一个log文件夹
}
$t2 = microtime(true);
echo $t2 - $t1;
echo '<br />';
//同步请求, get()函数如这里: http://www.cnblogs.com/whatmiss/p/7114954.html
$t1 = microtime(true);
foreach($urls as $key => $url){
file_put_contents('log/get_' . $key . '.txt', get($url)); // 记录一下请求结果。记得创建一个log文件夹
}
$t2 = microtime(true);
echo $t2 - $t1;
测试结果显示出明显的差距,随着数据量的增加,差距会呈指数级扩大:
2.4481401443481
21.68923997879
8.925509929657
24.73141503334
3.243185043335
23.384337902069
3.2841880321503
24.754415035248
3.2091829776764
29.068662881851 查看全部
php curl抓取网页数据(PHP的调用测试(get(get)函数(图)
)
PHP 的 curl 功能真的很强大。里面有个curl_multi_init函数,就是批处理任务。可以用它来实现多进程同时抓取多条记录,优化常见的网页抓取程序。
一个简单的获取函数:
function http_get_multi($urls){
$count = count($urls);
$data = [];
$chs = [];
// 创建批处理cURL句柄
$mh = curl_multi_init();
// 创建cURL资源
for($i = 0; $i < $count; $i ++){
$chs[ $i ] = curl_init();
// 设置URL和相应的选项
curl_setopt($chs[ $i ], CURLOPT_RETURNTRANSFER, 1); // return don't print
curl_setopt($chs[ $i ], CURLOPT_URL, $urls[$i]);
curl_setopt($chs[ $i ], CURLOPT_HEADER, 0);
curl_multi_add_handle($mh, $chs[ $i ]);
}
// 增加句柄
// for($i = 0; $i < $count; $i ++){
// curl_multi_add_handle($mh, $chs[ $i ]);
// }
// 执行批处理句柄
do {
$mrc = curl_multi_exec($mh, $active);
} while ($active > 0);
while ($active and $mrc == CURLM_OK) {
if (curl_multi_select($mh) != -1) {
do {
$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
for($i = 0; $i < $count; $i ++){
$content = curl_multi_getcontent($chs[ $i ]);
$data[ $i ] = ( curl_errno($chs[ $i ]) == 0 ) ? $content : false;
}
// 关闭全部句柄
for($i = 0; $i < $count; $i ++){
curl_multi_remove_handle($mh, $chs[ $i ]);
}
curl_multi_close($mh);
return $data;
}
下面的调用测试(get() 函数就像这里:):
//弄很多个网页的url
$url = [
'http://www.baidu.com',
'http://www.163.com',
'http://www.sina.com.cn',
'http://www.qq.com',
'http://www.sohu.com',
'http://www.douban.com',
'http://www.cnblogs.com',
'http://www.taobao.com',
'http://www.php.net',
];
$urls = [];
for($i = 0; $i < 10; $i ++){
foreach($url as $r)
$urls[] = $r . '/?v=' . rand();
}
//并发请求
$datas = http_get_multi($urls);
foreach($datas as $key => $data){
file_put_contents('log/multi_' . $key . '.txt', $data); // 记录一下请求结果。记得创建一个log文件夹
}
$t2 = microtime(true);
echo $t2 - $t1;
echo '<br />';
//同步请求, get()函数如这里: http://www.cnblogs.com/whatmiss/p/7114954.html
$t1 = microtime(true);
foreach($urls as $key => $url){
file_put_contents('log/get_' . $key . '.txt', get($url)); // 记录一下请求结果。记得创建一个log文件夹
}
$t2 = microtime(true);
echo $t2 - $t1;
测试结果显示出明显的差距,随着数据量的增加,差距会呈指数级扩大:
2.4481401443481
21.68923997879
8.925509929657
24.73141503334
3.243185043335
23.384337902069
3.2841880321503
24.754415035248
3.2091829776764
29.068662881851
php curl抓取网页数据(网站制作居于LINUX+PHP+MYSQL框架,循环取出需要的内容)
网站优化 • 优采云 发表了文章 • 0 个评论 • 83 次浏览 • 2021-09-11 06:04
(.*?)
(.*?)
#is';
preg_match_all($regular,$html_data,$connect);//进行正则匹配,得到你想要的
//循环出需要的内容数组
foreach($connect as $k =>$var){
if($k==2 || $k==3|| $k==5|| $k==7){
$b= array_merge(array_filter($connect[$k]));
$array[]=$b;
}
}
获取数据数组后,可以根据需要添加数据
需要抓取内容详细信息才能获得指向新闻内容页面的链接。同样使用 curl 获取信息
需要注意的是,正则表达式中的html需要和页面的格式一致。可以到原来的网站,右键查看源码,查看格式,复制要抓包的html。如果仍然无法捕获 内容可能格式不正确。在某些地方可能会有更少的空间或更多的空间。这时候直接在标签之间(.*?)。也可以一点一点的进行匹配,看看哪个部分不匹配。
方微网络为客户提供网站开发定制服务,网站production居住在LINUX+PHP+MYSQL框架中,欢迎客户咨询我们的建站热线 查看全部
php curl抓取网页数据(网站制作居于LINUX+PHP+MYSQL框架,循环取出需要的内容)
(.*?)
(.*?)
#is';
preg_match_all($regular,$html_data,$connect);//进行正则匹配,得到你想要的
//循环出需要的内容数组
foreach($connect as $k =>$var){
if($k==2 || $k==3|| $k==5|| $k==7){
$b= array_merge(array_filter($connect[$k]));
$array[]=$b;
}
}
获取数据数组后,可以根据需要添加数据
需要抓取内容详细信息才能获得指向新闻内容页面的链接。同样使用 curl 获取信息
需要注意的是,正则表达式中的html需要和页面的格式一致。可以到原来的网站,右键查看源码,查看格式,复制要抓包的html。如果仍然无法捕获 内容可能格式不正确。在某些地方可能会有更少的空间或更多的空间。这时候直接在标签之间(.*?)。也可以一点一点的进行匹配,看看哪个部分不匹配。
方微网络为客户提供网站开发定制服务,网站production居住在LINUX+PHP+MYSQL框架中,欢迎客户咨询我们的建站热线
php curl抓取网页数据(seleniummicrosoftprojectglobelinux下phantomjs+chromewindows下chrome+百度爬虫java开发基础(图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 63 次浏览 • 2021-11-14 17:02
phpcurl抓取网页数据;zh_cn=%e9%a4%a7%e9%a7%aa%e5%9f%bc%e8%90%8c&author=kbxyjsinn&http_header=format=json&dir=2&format=json&src=&sm=1&format=json&type=http%3a%2f%2fcurl。
gecko。com%2fbrowser%2f401%2f40101%2f5100413&result=json&newurl=zh_cn。
这个在网上有很多可以参考:教你通过gzip压缩批量抓取网页html标签
使用locer查看。这里有python抓取第三方爬虫数据的爬虫课程。
题主问的是不是怎么爬取页面(相应的是怎么解析页面)?可以尝试用threadlocal+simplexml2+crawler(python)
题主你可以考虑一下这个,然后爬取下来之后呢,你可以下载,尝试解析下,然后这样,这样就可以把你刚刚爬取的页面爬下来。
/
抓取日志页,然后构造变量,搞好css,这个很简单的。
可以先看看selenium+phantomjs的基本使用方法
没爬到过,我更希望爬到的能被我弄个webdav给弄出来,多好。
selenium
microsoftprojectglobelinux下phantomjs+chromewindows下chrome+selenium->百度爬虫java开发基础在pyenv+gae+vscode 查看全部
php curl抓取网页数据(seleniummicrosoftprojectglobelinux下phantomjs+chromewindows下chrome+百度爬虫java开发基础(图))
phpcurl抓取网页数据;zh_cn=%e9%a4%a7%e9%a7%aa%e5%9f%bc%e8%90%8c&author=kbxyjsinn&http_header=format=json&dir=2&format=json&src=&sm=1&format=json&type=http%3a%2f%2fcurl。
gecko。com%2fbrowser%2f401%2f40101%2f5100413&result=json&newurl=zh_cn。
这个在网上有很多可以参考:教你通过gzip压缩批量抓取网页html标签
使用locer查看。这里有python抓取第三方爬虫数据的爬虫课程。
题主问的是不是怎么爬取页面(相应的是怎么解析页面)?可以尝试用threadlocal+simplexml2+crawler(python)
题主你可以考虑一下这个,然后爬取下来之后呢,你可以下载,尝试解析下,然后这样,这样就可以把你刚刚爬取的页面爬下来。
/
抓取日志页,然后构造变量,搞好css,这个很简单的。
可以先看看selenium+phantomjs的基本使用方法
没爬到过,我更希望爬到的能被我弄个webdav给弄出来,多好。
selenium
microsoftprojectglobelinux下phantomjs+chromewindows下chrome+selenium->百度爬虫java开发基础在pyenv+gae+vscode
php curl抓取网页数据(使用PHP的cURL库可以简单和有效地去抓网页。)
网站优化 • 优采云 发表了文章 • 0 个评论 • 60 次浏览 • 2021-11-13 08:03
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取网页内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个PHP库。
启用卷曲设置
首先我们要先判断我们的PHP是否启用了这个库,可以通过php_info()函数来获取这个信息。
﹤?php
phpinfo();
?﹥
如果在网页上可以看到如下输出,说明cURL库已经开启。
如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,去掉前面的分号。如下:
//取消下在的注释
extension=php_curl.dll
如果你在 Linux 下,那么你需要重新编译你的 PHP。编辑时需要开启编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这里有一个小程序:
﹤?php
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置你需要爬取的网址
curl_setopt($curl, CURLOPT_URL,'');
// 设置标题
curl_setopt($curl, CURLOPT_HEADER, 1);
// 设置cURL参数,询问结果是保存在字符串中还是输出到屏幕上。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 运行 cURL 并请求一个网页
$data = curl_exec($curl);
// 关闭 URL 请求
curl_close($curl);
// 显示获取的数据
var_dump($data);
如何发布数据
上面是抓取网页的代码,下面是到某个网页的POST数据。假设我们有一个处理表单的URL,可以接受两个表单域,一个是电话号码,一个是短信内容。
﹤?php
$phoneNumber = '13912345678';
$message = 'This message was generated by curl and php';
$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' . urlencode($message) . '&SUBMIT=Send';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec();
curl_close($ch);
?﹥
从上面的程序可以看出,CURLOPT_POST是用来设置HTTP协议的POST方法而不是GET方法的,然后CURLOPT_POSTFIELDS是用来设置POST数据的。
关于代理服务器
以下是如何使用代理服务器的示例。请注意高亮的代码,代码很简单,我就不多说了。
﹤?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');
$data = curl_exec();
curl_close($ch);
?﹥
关于 SSL 和 Cookie 查看全部
php curl抓取网页数据(使用PHP的cURL库可以简单和有效地去抓网页。)
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取网页内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个PHP库。
启用卷曲设置
首先我们要先判断我们的PHP是否启用了这个库,可以通过php_info()函数来获取这个信息。
﹤?php
phpinfo();
?﹥
如果在网页上可以看到如下输出,说明cURL库已经开启。
如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,去掉前面的分号。如下:
//取消下在的注释
extension=php_curl.dll
如果你在 Linux 下,那么你需要重新编译你的 PHP。编辑时需要开启编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这里有一个小程序:
﹤?php
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置你需要爬取的网址
curl_setopt($curl, CURLOPT_URL,'');
// 设置标题
curl_setopt($curl, CURLOPT_HEADER, 1);
// 设置cURL参数,询问结果是保存在字符串中还是输出到屏幕上。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 运行 cURL 并请求一个网页
$data = curl_exec($curl);
// 关闭 URL 请求
curl_close($curl);
// 显示获取的数据
var_dump($data);
如何发布数据
上面是抓取网页的代码,下面是到某个网页的POST数据。假设我们有一个处理表单的URL,可以接受两个表单域,一个是电话号码,一个是短信内容。
﹤?php
$phoneNumber = '13912345678';
$message = 'This message was generated by curl and php';
$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' . urlencode($message) . '&SUBMIT=Send';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec();
curl_close($ch);
?﹥
从上面的程序可以看出,CURLOPT_POST是用来设置HTTP协议的POST方法而不是GET方法的,然后CURLOPT_POSTFIELDS是用来设置POST数据的。
关于代理服务器
以下是如何使用代理服务器的示例。请注意高亮的代码,代码很简单,我就不多说了。
﹤?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');
$data = curl_exec();
curl_close($ch);
?﹥
关于 SSL 和 Cookie
php curl抓取网页数据(推荐python使用第三方库guiminchip封装来写爬虫.参考)
网站优化 • 优采云 发表了文章 • 0 个评论 • 71 次浏览 • 2021-11-13 08:01
phpcurl抓取网页数据信息pythonflask抓取网页数据信息
requests库作用:给网页返回json格式的信息注意:不要滥用requests库,比如老写java代码调用requests库,
requests,
python我推荐numpy,
1)
其实现在挺多的网络爬虫包括爬取豆瓣电影等,都支持正则表达式和requests库。如果你会用python中的future和cgi可以直接来requests库,不过如果不会的话,就需要爬虫框架beautifulsoup,写起来的话也是非常方便。
推荐python使用第三方库guiminchip封装来写爬虫.参考pythonweb框架guiminchip
直接用requests
不推荐用requests库。去掉了scrapy的影响,要用requests库,主要有两个地方:libframework和clientframework(https)。也就是说,一个requests库相当于一个java的thrift框架,一个web框架或web服务器框架。https框架就是,getserver的encryption流程。
你的网页只是一个http连接的封装,但是会把流程封装在一个server上。两者的区别是:python本身不能封装连接流程,只能封装连接连接连接传输的过程。所以python所有的http服务都是封装在server上的。requests仅仅是封装了一个连接连接传输的过程。以下是我在写爬虫的时候,用的一个requests库封装连接连接传输的过程。
可以用来测试两个网站之间如何连接。http连接实现应该不是很难,如果不太懂为啥要封装连接连接传输的过程,可以参考如下网站。看你懂不懂。但是封装连接连接传输过程还有一个意义就是,可以调整server,让一个server能够处理任意http连接。
可以用来测试两个不同的网站之间是否能够做互联互通。需要处理的情况可以看下以下示例:http请求的header不同应该怎么处理连接(modules/https_requests.xml)。
1)请求头封装解封装bson/json模块解封装http.headers解封装get/post网络请求头解封装
2)request方法封装解封装post方法封装get/post连接类型封装调用连接的解封装重定向封装cookie参数封装
3)服务端定时刷新(新加的服务不能一开始就开。要学会新加服务。)写不下了,说太多。当然以上不是针对爬虫。一般的业务代码,比如解封封装redis/http/redis, 查看全部
php curl抓取网页数据(推荐python使用第三方库guiminchip封装来写爬虫.参考)
phpcurl抓取网页数据信息pythonflask抓取网页数据信息
requests库作用:给网页返回json格式的信息注意:不要滥用requests库,比如老写java代码调用requests库,
requests,
python我推荐numpy,
1)
其实现在挺多的网络爬虫包括爬取豆瓣电影等,都支持正则表达式和requests库。如果你会用python中的future和cgi可以直接来requests库,不过如果不会的话,就需要爬虫框架beautifulsoup,写起来的话也是非常方便。
推荐python使用第三方库guiminchip封装来写爬虫.参考pythonweb框架guiminchip
直接用requests
不推荐用requests库。去掉了scrapy的影响,要用requests库,主要有两个地方:libframework和clientframework(https)。也就是说,一个requests库相当于一个java的thrift框架,一个web框架或web服务器框架。https框架就是,getserver的encryption流程。
你的网页只是一个http连接的封装,但是会把流程封装在一个server上。两者的区别是:python本身不能封装连接流程,只能封装连接连接连接传输的过程。所以python所有的http服务都是封装在server上的。requests仅仅是封装了一个连接连接传输的过程。以下是我在写爬虫的时候,用的一个requests库封装连接连接传输的过程。
可以用来测试两个网站之间如何连接。http连接实现应该不是很难,如果不太懂为啥要封装连接连接传输的过程,可以参考如下网站。看你懂不懂。但是封装连接连接传输过程还有一个意义就是,可以调整server,让一个server能够处理任意http连接。
可以用来测试两个不同的网站之间是否能够做互联互通。需要处理的情况可以看下以下示例:http请求的header不同应该怎么处理连接(modules/https_requests.xml)。
1)请求头封装解封装bson/json模块解封装http.headers解封装get/post网络请求头解封装
2)request方法封装解封装post方法封装get/post连接类型封装调用连接的解封装重定向封装cookie参数封装
3)服务端定时刷新(新加的服务不能一开始就开。要学会新加服务。)写不下了,说太多。当然以上不是针对爬虫。一般的业务代码,比如解封封装redis/http/redis,
php curl抓取网页数据(抓ajax异步内容页面和抓普通的页面区别。)
网站优化 • 优采云 发表了文章 • 0 个评论 • 74 次浏览 • 2021-11-12 01:02
其实抓取ajax异步内容页面和抓取普通页面没有太大区别。 Ajax 只是一个异步 http 请求。用类似firebug的工具,找到请求的后端服务url和传参值,然后抓取url传参即可。
使用 Firebug 的网络工具
如果抓取一个页面,内容中没有显示的数据就是一堆JS代码。
代码
$cookie_file=tempnam('./temp','cookie');
$ch = curl_init();
$url1 = "http://www.cdut.edu.cn/default.html";
curl_setopt($ch,CURLOPT_URL,$url1);
curl_setopt($ch,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_ENCODING ,'gzip'); //加入gzip解析
//设置连接结束后保存cookie信息的文件
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
$content=curl_exec($ch);
curl_close($ch);
$ch3 = curl_init();
$url3 = "http://www.cdut.edu.cn/xww/dwr ... 3B%3B
$curlPost = "callCount=1&page=/xww/type/1000020118.html&httpSessionId=12A9B726E6A2D4D3B09DE7952B2F282C&scriptSessionId=295315B4B4141B09DA888D3A3ADB8FAA658&c0-scriptName=portalAjax&c0-methodName=getNewsXml&c0-id=0&c0-param0=string:10000201&c0-param1=string:1000020118&c0-param2=string:news_&c0-param3=number:5969&c0-param4=number:1&c0-param5=null:null&c0-param6=null:null&batchId=0";
curl_setopt($ch3,CURLOPT_URL,$url3);
curl_setopt($ch3,CURLOPT_POST,1);
curl_setopt($ch3,CURLOPT_POSTFIELDS,$curlPost);
//设置连接结束后保存cookie信息的文件
curl_setopt($ch3,CURLOPT_COOKIEFILE,$cookie_file);
$content1=curl_exec($ch3);
curl_close($ch3);
我是王与虎的分界线 查看全部
php curl抓取网页数据(抓ajax异步内容页面和抓普通的页面区别。)
其实抓取ajax异步内容页面和抓取普通页面没有太大区别。 Ajax 只是一个异步 http 请求。用类似firebug的工具,找到请求的后端服务url和传参值,然后抓取url传参即可。
使用 Firebug 的网络工具

如果抓取一个页面,内容中没有显示的数据就是一堆JS代码。

代码
$cookie_file=tempnam('./temp','cookie');
$ch = curl_init();
$url1 = "http://www.cdut.edu.cn/default.html";
curl_setopt($ch,CURLOPT_URL,$url1);
curl_setopt($ch,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_ENCODING ,'gzip'); //加入gzip解析
//设置连接结束后保存cookie信息的文件
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
$content=curl_exec($ch);
curl_close($ch);
$ch3 = curl_init();
$url3 = "http://www.cdut.edu.cn/xww/dwr ... 3B%3B
$curlPost = "callCount=1&page=/xww/type/1000020118.html&httpSessionId=12A9B726E6A2D4D3B09DE7952B2F282C&scriptSessionId=295315B4B4141B09DA888D3A3ADB8FAA658&c0-scriptName=portalAjax&c0-methodName=getNewsXml&c0-id=0&c0-param0=string:10000201&c0-param1=string:1000020118&c0-param2=string:news_&c0-param3=number:5969&c0-param4=number:1&c0-param5=null:null&c0-param6=null:null&batchId=0";
curl_setopt($ch3,CURLOPT_URL,$url3);
curl_setopt($ch3,CURLOPT_POST,1);
curl_setopt($ch3,CURLOPT_POSTFIELDS,$curlPost);
//设置连接结束后保存cookie信息的文件
curl_setopt($ch3,CURLOPT_COOKIEFILE,$cookie_file);
$content1=curl_exec($ch3);
curl_close($ch3);
我是王与虎的分界线
php curl抓取网页数据(前端天堂createjs的开源web缓存工具:javascriptquerystream,jboss等实现有模块)
网站优化 • 优采云 发表了文章 • 0 个评论 • 64 次浏览 • 2021-11-10 16:06
phpcurl抓取网页数据,这里之前抓取了大部分的(截图)有兴趣的,
web-inf下面配置表单后actionurl
githubrepo-homeoeverything不过我也最近在关注其他语言的浏览器插件,比如前端天堂createjs的,
目前有个开源的web缓存工具:javascriptquerystream,基于jquery,界面简单,支持http/2,部署简单。
之前使用的可以用request接收response,提取其中需要的字段,
可以看看三块套件,里面有很多都可以去尝试一下hebokeep,
cache-control
express
最近打算用redis缓存数据,同时ceph,crunchyll,jboss等实现服务均已上线。就去中国网找了下,官网没有专门教程,但有介绍,个人感觉不是那么简单,都是infra(infrastructureforresponsible)最好找个具体的infra。没有infra建议自己搭建一个,省心省力。
从官网看到android实现有模块,专门针对jboss可以从这看看资料。自己搭建着gitcafe,解决业务就可以,缓存有headservice-express/celery..。
web服务器的话用webserverproxy,urlschemerewrite,trafficpredicate。 查看全部
php curl抓取网页数据(前端天堂createjs的开源web缓存工具:javascriptquerystream,jboss等实现有模块)
phpcurl抓取网页数据,这里之前抓取了大部分的(截图)有兴趣的,
web-inf下面配置表单后actionurl
githubrepo-homeoeverything不过我也最近在关注其他语言的浏览器插件,比如前端天堂createjs的,
目前有个开源的web缓存工具:javascriptquerystream,基于jquery,界面简单,支持http/2,部署简单。
之前使用的可以用request接收response,提取其中需要的字段,
可以看看三块套件,里面有很多都可以去尝试一下hebokeep,
cache-control
express
最近打算用redis缓存数据,同时ceph,crunchyll,jboss等实现服务均已上线。就去中国网找了下,官网没有专门教程,但有介绍,个人感觉不是那么简单,都是infra(infrastructureforresponsible)最好找个具体的infra。没有infra建议自己搭建一个,省心省力。
从官网看到android实现有模块,专门针对jboss可以从这看看资料。自己搭建着gitcafe,解决业务就可以,缓存有headservice-express/celery..。
web服务器的话用webserverproxy,urlschemerewrite,trafficpredicate。
php curl抓取网页数据(我用就是抓取数据的抓取技巧(二))
网站优化 • 优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2021-10-28 06:05
我使用php和curl主要是为了抓取数据。当然,我们也可以使用其他方法来抓取数据,比如fsockopen、file_get_contents等,但是只能抓取那些可以直接访问的页面。如果要抓取有页面访问控制的页面,或者登录后的页面,就比较困难了。
1.获取文件没有访问控制
2.使用代理进行爬取
为什么要使用代理进行抓取?以谷歌为例。如果你抓取谷歌的数据,如果你在短时间内频繁抓取它,你将无法抓取它。Google 限制您的 IP 地址。这时候可以换个proxy再抓一次。
3.post数据后,抓取数据
单独说一下数据提交数据,因为在使用curl的时候,经常会有数据交互,所以比较重要。
在upload.php文件中,print_r($_post); 使用 curl 捕获upload.php数组的输出([name] => test [sex] => 1 [birth] => 20101010)
4. 获取一些带有页面访问控制的页面
之前写过一篇文章。有兴趣的可以看看页面访问控制的3种方法。
如果使用上述方法捕获,会报如下错误
您无权查看此页面
您无权使用您提供的凭据查看此目录或页面,因为您的 Web 浏览器正在发送 Web 服务器未配置为接受的 www-authenticate 标头字段。
这时候我们会使用 curlopt_userpwd 来验证
上面php curl常用的五个经典例子,都是小编分享的内容。希望能给大家一个参考,也希望大家多多支持万千网。 查看全部
php curl抓取网页数据(我用就是抓取数据的抓取技巧(二))
我使用php和curl主要是为了抓取数据。当然,我们也可以使用其他方法来抓取数据,比如fsockopen、file_get_contents等,但是只能抓取那些可以直接访问的页面。如果要抓取有页面访问控制的页面,或者登录后的页面,就比较困难了。
1.获取文件没有访问控制
2.使用代理进行爬取
为什么要使用代理进行抓取?以谷歌为例。如果你抓取谷歌的数据,如果你在短时间内频繁抓取它,你将无法抓取它。Google 限制您的 IP 地址。这时候可以换个proxy再抓一次。
3.post数据后,抓取数据
单独说一下数据提交数据,因为在使用curl的时候,经常会有数据交互,所以比较重要。
在upload.php文件中,print_r($_post); 使用 curl 捕获upload.php数组的输出([name] => test [sex] => 1 [birth] => 20101010)
4. 获取一些带有页面访问控制的页面

之前写过一篇文章。有兴趣的可以看看页面访问控制的3种方法。
如果使用上述方法捕获,会报如下错误
您无权查看此页面
您无权使用您提供的凭据查看此目录或页面,因为您的 Web 浏览器正在发送 Web 服务器未配置为接受的 www-authenticate 标头字段。
这时候我们会使用 curlopt_userpwd 来验证
上面php curl常用的五个经典例子,都是小编分享的内容。希望能给大家一个参考,也希望大家多多支持万千网。
php curl抓取网页数据(网站制作居于LINUX+PHP+MYSQL框架,循环取出需要的内容)
网站优化 • 优采云 发表了文章 • 0 个评论 • 65 次浏览 • 2021-10-27 07:13
(.*?)
(.*?)
#是';
preg_match_all($regular,$html_data,$connect);//进行正则匹配得到你想要的
//循环出需要的内容数组
foreach($connect as $k =>$var){
if($k==2 || $k==3|| $k==5 || $k==7){
$b = array_merge(array_filter($connect[$k]));
$array[]=$b;
}
}
获取到数据数组后,可以根据需要添加数据
内容详情需要爬取获取新闻内容页面的链接,也需要使用curl获取信息
需要注意的是,正则表达式中的html需要和页面的格式一致。可以到原来的网站,右键查看源码,查看格式,复制html即可抓包。如果仍然无法捕获 内容可能格式不正确。有些地方可能会有更少或更多的空间。这时候直接在标签之间(.*?)。也可以一点一点的进行匹配,看看哪个部分不匹配。
天龙网络为客户提供网站开发定制服务,网站生产生活在LINUX+PHP+MYSQL框架下,欢迎客户咨询我们的建站热线 查看全部
php curl抓取网页数据(网站制作居于LINUX+PHP+MYSQL框架,循环取出需要的内容)
(.*?)
(.*?)
#是';
preg_match_all($regular,$html_data,$connect);//进行正则匹配得到你想要的
//循环出需要的内容数组
foreach($connect as $k =>$var){
if($k==2 || $k==3|| $k==5 || $k==7){
$b = array_merge(array_filter($connect[$k]));
$array[]=$b;
}
}
获取到数据数组后,可以根据需要添加数据
内容详情需要爬取获取新闻内容页面的链接,也需要使用curl获取信息
需要注意的是,正则表达式中的html需要和页面的格式一致。可以到原来的网站,右键查看源码,查看格式,复制html即可抓包。如果仍然无法捕获 内容可能格式不正确。有些地方可能会有更少或更多的空间。这时候直接在标签之间(.*?)。也可以一点一点的进行匹配,看看哪个部分不匹配。
天龙网络为客户提供网站开发定制服务,网站生产生活在LINUX+PHP+MYSQL框架下,欢迎客户咨询我们的建站热线
php curl抓取网页数据(使用PHP的cURL库可以简单和有效地去抓网页)
网站优化 • 优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2021-10-23 23:13
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取 Web 内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个PHP库。
启用卷曲设置
首先我们要先判断我们的PHP是否启用了这个库,可以通过php_info()函数来获取这个信息。
﹤?php<br />phpinfo();<br />?﹥
如果在网页上可以看到如下输出,说明cURL库已经开启。
如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,去掉前面的分号。如下:
//取消下在的注释<br />extension=php_curl.dll
如果你在 Linux 下,那么你需要重新编译你的 PHP。编辑时需要开启编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这里有一个小程序:
﹤?php
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置你需要爬取的网址
curl_setopt($curl, CURLOPT_URL,'');
// 设置标题
curl_setopt($curl, CURLOPT_HEADER, 1);
// 设置 cURL 参数,并要求将结果保存为字符串或输出到屏幕。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 运行 cURL 并请求一个网页
$data = curl_exec($curl);
// 关闭 URL 请求
curl_close($curl);
// 显示获取的数据
var_dump($data);
如何发布数据
上面是抓取网页的代码,下面是到某个网页的POST数据。假设我们有一个处理表单的URL,可以接受两个表单域,一个是电话号码,一个是短信内容。
﹤?php<br />$phoneNumber = '13912345678';<br />$message = 'This message was generated by curl and php';<br />$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' .
urlencode($message) . '&SUBMIT=Send';<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php');<br />curl_setopt($ch, CURLOPT_HEADER, 1);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />curl_setopt($ch, CURLOPT_POST, 1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);<br />$data = curl_exec();<br />curl_close($ch);<br />?﹥
从上面的程序可以看出,CURLOPT_POST是用来设置HTTP协议的POST方法而不是GET方法的,然后CURLOPT_POSTFIELDS是用来设置POST数据的。
关于代理服务器
以下是如何使用代理服务器的示例。请注意高亮的代码,代码很简单,我就不多说了。
﹤?php <br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');<br />curl_setopt($ch, CURLOPT_HEADER, 1);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);<br />curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');<br />curl_setopt($ch, CURLOPT_PROXYUS<a target="_blank"
rel="nofollow" href=
"http://www.csai.cn/incsearch/s ... %3BWD, 'user:password');<br />$data = curl_exec();<br />curl_close($ch);<br />?﹥
关于 SSL 和 Cookie 查看全部
php curl抓取网页数据(使用PHP的cURL库可以简单和有效地去抓网页)
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取 Web 内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个PHP库。
启用卷曲设置
首先我们要先判断我们的PHP是否启用了这个库,可以通过php_info()函数来获取这个信息。
﹤?php<br />phpinfo();<br />?﹥
如果在网页上可以看到如下输出,说明cURL库已经开启。
如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,去掉前面的分号。如下:
//取消下在的注释<br />extension=php_curl.dll
如果你在 Linux 下,那么你需要重新编译你的 PHP。编辑时需要开启编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这里有一个小程序:
﹤?php
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置你需要爬取的网址
curl_setopt($curl, CURLOPT_URL,'');
// 设置标题
curl_setopt($curl, CURLOPT_HEADER, 1);
// 设置 cURL 参数,并要求将结果保存为字符串或输出到屏幕。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 运行 cURL 并请求一个网页
$data = curl_exec($curl);
// 关闭 URL 请求
curl_close($curl);
// 显示获取的数据
var_dump($data);
如何发布数据
上面是抓取网页的代码,下面是到某个网页的POST数据。假设我们有一个处理表单的URL,可以接受两个表单域,一个是电话号码,一个是短信内容。
﹤?php<br />$phoneNumber = '13912345678';<br />$message = 'This message was generated by curl and php';<br />$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' .
urlencode($message) . '&SUBMIT=Send';<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php');<br />curl_setopt($ch, CURLOPT_HEADER, 1);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />curl_setopt($ch, CURLOPT_POST, 1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);<br />$data = curl_exec();<br />curl_close($ch);<br />?﹥
从上面的程序可以看出,CURLOPT_POST是用来设置HTTP协议的POST方法而不是GET方法的,然后CURLOPT_POSTFIELDS是用来设置POST数据的。
关于代理服务器
以下是如何使用代理服务器的示例。请注意高亮的代码,代码很简单,我就不多说了。
﹤?php <br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');<br />curl_setopt($ch, CURLOPT_HEADER, 1);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);<br />curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');<br />curl_setopt($ch, CURLOPT_PROXYUS<a target="_blank"
rel="nofollow" href=
"http://www.csai.cn/incsearch/s ... %3BWD, 'user:password');<br />$data = curl_exec();<br />curl_close($ch);<br />?﹥
关于 SSL 和 Cookie
php curl抓取网页数据(使用PHP的cURL库可以简单和有效地去抓网页。)
网站优化 • 优采云 发表了文章 • 0 个评论 • 73 次浏览 • 2021-10-23 23:09
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取 Web 内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个PHP库。
启用卷曲设置
首先我们要先判断我们的PHP是否启用了这个库,可以通过php_info()函数来获取这个信息。
﹤?php<br />
phpinfo();<br />
?﹥
如果在网页上可以看到如下输出,说明cURL库已经开启。
如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,去掉前面的分号。如下:
//取消下在的注释<br />
extension=php_curl.dll
如果你在 Linux 下,那么你需要重新编译你的 PHP。编辑时需要开启编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这里有一个小程序:
﹤?php
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置你需要爬取的网址
curl_setopt($curl, CURLOPT_URL,'');
// 设置标题
curl_setopt($curl, CURLOPT_HEADER, 1);
// 设置cURL参数,询问结果是保存在字符串中还是输出到屏幕上。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 运行 cURL 并请求一个网页
$data = curl_exec($curl);
// 关闭 URL 请求
curl_close($curl);
// 显示获取的数据
var_dump($data);
如何发布数据
上面是抓取网页的代码,下面是到某个网页的POST数据。假设我们有一个处理表单的URL,可以接受两个表单域,一个是电话号码,一个是短信内容。
﹤?php<br />
$phoneNumber = '13912345678';<br />
$message = 'This message was generated by curl and php';<br />
$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' . urlencode($message) . '&SUBMIT=Send';<br />
$ch = curl_init();<br />
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php');<br />
curl_setopt($ch, CURLOPT_HEADER, 1);<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />
curl_setopt($ch, CURLOPT_POST, 1);<br />
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);<br />
$data = curl_exec();<br />
curl_close($ch);<br />
?﹥
从上面的程序可以看出,CURLOPT_POST是用来设置HTTP协议的POST方法而不是GET方法的,然后CURLOPT_POSTFIELDS是用来设置POST数据的。
关于代理服务器
以下是如何使用代理服务器的示例。请注意高亮的代码,代码很简单,我就不多说了。
﹤?php <br />
$ch = curl_init();<br />
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');<br />
curl_setopt($ch, CURLOPT_HEADER, 1);<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);<br />
curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');<br />
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');<br />
$data = curl_exec();<br />
curl_close($ch);<br />
?﹥
关于 SSL 和 Cookie 查看全部
php curl抓取网页数据(使用PHP的cURL库可以简单和有效地去抓网页。)
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取 Web 内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个PHP库。
启用卷曲设置
首先我们要先判断我们的PHP是否启用了这个库,可以通过php_info()函数来获取这个信息。
﹤?php<br />
phpinfo();<br />
?﹥
如果在网页上可以看到如下输出,说明cURL库已经开启。
如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,去掉前面的分号。如下:
//取消下在的注释<br />
extension=php_curl.dll
如果你在 Linux 下,那么你需要重新编译你的 PHP。编辑时需要开启编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这里有一个小程序:
﹤?php
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置你需要爬取的网址
curl_setopt($curl, CURLOPT_URL,'');
// 设置标题
curl_setopt($curl, CURLOPT_HEADER, 1);
// 设置cURL参数,询问结果是保存在字符串中还是输出到屏幕上。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 运行 cURL 并请求一个网页
$data = curl_exec($curl);
// 关闭 URL 请求
curl_close($curl);
// 显示获取的数据
var_dump($data);
如何发布数据
上面是抓取网页的代码,下面是到某个网页的POST数据。假设我们有一个处理表单的URL,可以接受两个表单域,一个是电话号码,一个是短信内容。
﹤?php<br />
$phoneNumber = '13912345678';<br />
$message = 'This message was generated by curl and php';<br />
$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' . urlencode($message) . '&SUBMIT=Send';<br />
$ch = curl_init();<br />
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php');<br />
curl_setopt($ch, CURLOPT_HEADER, 1);<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />
curl_setopt($ch, CURLOPT_POST, 1);<br />
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);<br />
$data = curl_exec();<br />
curl_close($ch);<br />
?﹥
从上面的程序可以看出,CURLOPT_POST是用来设置HTTP协议的POST方法而不是GET方法的,然后CURLOPT_POSTFIELDS是用来设置POST数据的。
关于代理服务器
以下是如何使用代理服务器的示例。请注意高亮的代码,代码很简单,我就不多说了。
﹤?php <br />
$ch = curl_init();<br />
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');<br />
curl_setopt($ch, CURLOPT_HEADER, 1);<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);<br />
curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');<br />
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');<br />
$data = curl_exec();<br />
curl_close($ch);<br />
?﹥
关于 SSL 和 Cookie
php curl抓取网页数据(检查PHP是否CURL在PHP的主配置文件库中的应用)
网站优化 • 优采云 发表了文章 • 0 个评论 • 82 次浏览 • 2021-10-17 15:23
PHP的Curl库用于获取网络上的资源,就像模拟平常浏览器打开一样。它可用于轻松抓取网页上的信息。同时,这个库还提供了多种设置,可以设置各种HTTP协议中的参数。使用CURL,可以完全模拟用户登录、浏览、网页发送信息、编写各种脚本。
检查 PHP 是否加载 CURL
在 PHP 的主配置文件 php.ini 中,确保打开 curl 功能。
第一个例子
我们用curl抓取施博文博客的首页
上面的代码可以得到一个页面的源代码,借助PHP强大的正则表达式,可以很方便的从页面中提取一些数据。当然,如果在URL地址后添加参数,则可以使用get方法提交参数。
在帖子中提交数据
为了一次性提交大量数据,并且为了更加保密,通常的做法是使用post方式提交数据。使用curl库,也可以很方便的模拟post方法。假设要提交的数据以关联数组$data的形式存储在data中。
上面代码中,第一行表示要post提交的数据,第二行是存储在关联数组中的数据对。发送此请求时, $data 中的数据将自动以 post request 的格式发送。
设置 User-Agent、Cookie 和 Referer
通常,一个网站记录用户的在线状态是通过Cookie信息记录的,User-Agent和Referer也是用来判断访问者是否有权限读取相应信息的,比如“防盗链”函数,也就是验证 HTTP 头中的 Referer 信息,用来做判断。Curl 也为我们提供了修改这些信息的方法,如下:
模拟登录百度账号
博主编写的《百度贴吧登录系统》广泛使用curl来模拟用户登录和登录。登录部分收录了大部分日常使用中curl库的常用例子,系统完全开源是的,可以在这里查看代码(Github)。
其他功能
除了上面提到的一些常用的方法外,PHP的curl库还提供了ssl连接、文件上传(put)方法等各种功能。你可以在PHP官方手册页找到相关介绍:
PHP Document-Curl 查看全部
php curl抓取网页数据(检查PHP是否CURL在PHP的主配置文件库中的应用)
PHP的Curl库用于获取网络上的资源,就像模拟平常浏览器打开一样。它可用于轻松抓取网页上的信息。同时,这个库还提供了多种设置,可以设置各种HTTP协议中的参数。使用CURL,可以完全模拟用户登录、浏览、网页发送信息、编写各种脚本。
检查 PHP 是否加载 CURL
在 PHP 的主配置文件 php.ini 中,确保打开 curl 功能。
第一个例子
我们用curl抓取施博文博客的首页
上面的代码可以得到一个页面的源代码,借助PHP强大的正则表达式,可以很方便的从页面中提取一些数据。当然,如果在URL地址后添加参数,则可以使用get方法提交参数。
在帖子中提交数据
为了一次性提交大量数据,并且为了更加保密,通常的做法是使用post方式提交数据。使用curl库,也可以很方便的模拟post方法。假设要提交的数据以关联数组$data的形式存储在data中。
上面代码中,第一行表示要post提交的数据,第二行是存储在关联数组中的数据对。发送此请求时, $data 中的数据将自动以 post request 的格式发送。
设置 User-Agent、Cookie 和 Referer
通常,一个网站记录用户的在线状态是通过Cookie信息记录的,User-Agent和Referer也是用来判断访问者是否有权限读取相应信息的,比如“防盗链”函数,也就是验证 HTTP 头中的 Referer 信息,用来做判断。Curl 也为我们提供了修改这些信息的方法,如下:
模拟登录百度账号
博主编写的《百度贴吧登录系统》广泛使用curl来模拟用户登录和登录。登录部分收录了大部分日常使用中curl库的常用例子,系统完全开源是的,可以在这里查看代码(Github)。
其他功能
除了上面提到的一些常用的方法外,PHP的curl库还提供了ssl连接、文件上传(put)方法等各种功能。你可以在PHP官方手册页找到相关介绍:
PHP Document-Curl
php curl抓取网页数据(具有很好的phpcurl获取页面内容或提交数据,)
网站优化 • 优采云 发表了文章 • 0 个评论 • 77 次浏览 • 2021-10-05 20:14
更新时间:2019年1月15日09:17:58 作者:四魂
今天小编就给大家分享一篇关于php curl如何在不直接输出返回结果的情况下获取https页面内容的文章。有很好的参考价值,希望对大家有所帮助。跟着小编一起来看看吧
使用 php curl 获取页面内容或提交数据。有时您希望将返回的内容存储为变量而不是直接输出。
方法:将 curl 的 CURLOPT_RETURNTRANSFER 选项设置为 1 或 true。
例如:
$url = 'http://www.baidu.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
// 不要http header 加快效率
curl_setopt($curl, CURLOPT_HEADER, 0);
// https请求 不验证证书和hosts
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($ch); //已经获取到内容,没有输出到页面上.
curl_close($ch);
以上php curl获取https页面内容的设置方法,不直接输出返回结果,都是编辑器共享的内容。希望能给大家一个参考,也希望大家多多支持脚本之家。 查看全部
php curl抓取网页数据(具有很好的phpcurl获取页面内容或提交数据,)
更新时间:2019年1月15日09:17:58 作者:四魂
今天小编就给大家分享一篇关于php curl如何在不直接输出返回结果的情况下获取https页面内容的文章。有很好的参考价值,希望对大家有所帮助。跟着小编一起来看看吧
使用 php curl 获取页面内容或提交数据。有时您希望将返回的内容存储为变量而不是直接输出。
方法:将 curl 的 CURLOPT_RETURNTRANSFER 选项设置为 1 或 true。
例如:
$url = 'http://www.baidu.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
// 不要http header 加快效率
curl_setopt($curl, CURLOPT_HEADER, 0);
// https请求 不验证证书和hosts
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($ch); //已经获取到内容,没有输出到页面上.
curl_close($ch);
以上php curl获取https页面内容的设置方法,不直接输出返回结果,都是编辑器共享的内容。希望能给大家一个参考,也希望大家多多支持脚本之家。
php curl抓取网页数据(使用PHP的cURL库可以简单和有效地去抓网页。)
网站优化 • 优采云 发表了文章 • 0 个评论 • 88 次浏览 • 2021-10-05 20:12
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取网页内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个PHP库。
启用卷曲设置
首先我们要先判断我们的PHP是否启用了这个库,可以通过php_info()函数来获取这个信息。
﹤?php<br />phpinfo();<br />?﹥
如果在网页上可以看到如下输出,说明cURL库已经开启。
如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,去掉前面的分号。如下:
//取消下在的注释<br />extension=php_curl.dll
如果你在 Linux 下,那么你需要重新编译你的 PHP。编辑时需要开启编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这里有一个小程序:
﹤?php
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置你需要爬取的网址
curl_setopt($curl, CURLOPT_URL,'#39;);
// 设置标题
curl_setopt($curl, CURLOPT_HEADER, 1);
// 设置cURL参数,询问结果是保存在字符串中还是输出到屏幕上。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 运行 cURL 并请求一个网页
$data = curl_exec($curl);
// 关闭 URL 请求
curl_close($curl);
// 显示获取的数据
var_dump($data);
如何发布数据
上面是抓取网页的代码,下面是到某个网页的POST数据。假设我们有一个处理表单的URL,可以接受两个表单域,一个是电话号码,一个是短信内容。
﹤?php<br />$phoneNumber = '13912345678';<br />$message = 'This message was generated by curl and php';<br />$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' .
urlencode($message) . '&SUBMIT=Send';<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php');<br />curl_setopt($ch, CURLOPT_HEADER, 1);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />curl_setopt($ch, CURLOPT_POST, 1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);<br />$data = curl_exec();<br />curl_close($ch);<br />?﹥
从上面的程序可以看出,CURLOPT_POST是用来设置HTTP协议的POST方法而不是GET方法的,然后CURLOPT_POSTFIELDS是用来设置POST数据的。
关于代理服务器
以下是如何使用代理服务器的示例。请注意高亮的代码,代码很简单,我就不多说了。
﹤?php <br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');<br />curl_setopt($ch, CURLOPT_HEADER, 1);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);<br />curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');<br />curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');<br />$data = curl_exec();<br />curl_close($ch);<br />?﹥
关于 SSL 和 Cookie 查看全部
php curl抓取网页数据(使用PHP的cURL库可以简单和有效地去抓网页。)
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取网页内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个PHP库。
启用卷曲设置
首先我们要先判断我们的PHP是否启用了这个库,可以通过php_info()函数来获取这个信息。
﹤?php<br />phpinfo();<br />?﹥
如果在网页上可以看到如下输出,说明cURL库已经开启。
如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,去掉前面的分号。如下:
//取消下在的注释<br />extension=php_curl.dll
如果你在 Linux 下,那么你需要重新编译你的 PHP。编辑时需要开启编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这里有一个小程序:
﹤?php
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置你需要爬取的网址
curl_setopt($curl, CURLOPT_URL,'#39;);
// 设置标题
curl_setopt($curl, CURLOPT_HEADER, 1);
// 设置cURL参数,询问结果是保存在字符串中还是输出到屏幕上。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 运行 cURL 并请求一个网页
$data = curl_exec($curl);
// 关闭 URL 请求
curl_close($curl);
// 显示获取的数据
var_dump($data);
如何发布数据
上面是抓取网页的代码,下面是到某个网页的POST数据。假设我们有一个处理表单的URL,可以接受两个表单域,一个是电话号码,一个是短信内容。
﹤?php<br />$phoneNumber = '13912345678';<br />$message = 'This message was generated by curl and php';<br />$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' .
urlencode($message) . '&SUBMIT=Send';<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php');<br />curl_setopt($ch, CURLOPT_HEADER, 1);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />curl_setopt($ch, CURLOPT_POST, 1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);<br />$data = curl_exec();<br />curl_close($ch);<br />?﹥
从上面的程序可以看出,CURLOPT_POST是用来设置HTTP协议的POST方法而不是GET方法的,然后CURLOPT_POSTFIELDS是用来设置POST数据的。
关于代理服务器
以下是如何使用代理服务器的示例。请注意高亮的代码,代码很简单,我就不多说了。
﹤?php <br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');<br />curl_setopt($ch, CURLOPT_HEADER, 1);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);<br />curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');<br />curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');<br />$data = curl_exec();<br />curl_close($ch);<br />?﹥
关于 SSL 和 Cookie
php curl抓取网页数据(学习“两者效率的稳定性问题”的讲解内容简单清晰)
网站优化 • 优采云 发表了文章 • 0 个评论 • 78 次浏览 • 2021-10-02 14:03
本文文章主要讲解《如何解决PHP CURL或file_get_contents的代码获取页面标题的问题以及两者效率的稳定性问题》。文章中的讲解简单明了,易学易懂。请关注下面的编辑。思路慢慢深入,一起来学习学习《如何解决PHP CURL或者file_get_contents的代码获取页面标题的问题以及两者效率的稳定性》!
推荐的获取CURL的方法
使用 file_get_contents
看一下 file_get_contents 性能
1)fopen/file_get_contents 每次请求远程URL中的数据时,都会再次进行DNS查询,不会缓存DNS信息。但是 CURL 会自动缓存 DNS 信息。请求同域名下的网页或图片,只需要进行一次DNS查询。这大大减少了 DNS 查询的数量。所以CURL的性能要比fopen/file_get_contents好很多。
2)fopen/file_get_contents 在请求 HTTP 时使用 http_fopen_wrapper,不会保持存活。但是卷曲可以。这样,在多次请求多个链接时,curl 的效率会更高。(应该可以设置标题)
3)fopen/file_get_contents 函数会受到php.ini 文件中allow_url_open 选项配置的影响。如果配置关闭,则该功能无效。并且 curl 不受此配置的影响。
4)curl 可以模拟多种请求,如:POST 数据、表单提交等,用户可以根据自己的需求自定义请求。而 fopen/file_get_contents 只能使用 get 来获取数据。
5)fopen/file_get_contents 无法正确下载二进制文件
6)fopen/file_get_contents 无法正确处理 ssl 请求
7)curl 可以利用多线程
8) 使用file_get_contents时,如果网络有问题,这里很容易积累一些进程
9)如果要进行连续连接,请多次请求多个页面。那么 file_get_contents 就会出错。获取的内容也可能是错误的。所以在做类似采集的事情的时候,肯定有问题。使用curl进行采集爬取,如果你还不相信,我们再做一个测试。
curl和file_get_contents PHP源码性能对比如下:
第182话
测试访问
file_get_contents 速度:4.2404510975 秒
卷曲速度:2.8205530643 秒
curl 比 file_get_contents 快约 30%,最重要的是,服务器负载更低。
ps:php函数file_get_contents和curl的效率和稳定性问题
我习惯使用方便快捷的file_get_contents函数去抓取其他家网站的内容,但是一直遇到获取失败的问题。虽然按照手册中的例子设置了超时时间,但大多数时候并不好用:
$config['context'] = stream_context_create(array('http' => array('method' => "GET",'timeout' => 5)));
'timeout' => 5//这个超时时间不稳定,经常难以使用。这时候再看服务器的连接池,会发现一堆类似下面的错误,让你头疼:
file_get_contents(***): 无法打开流...
作为最后的手段,我安装了 curl 库并编写了一个函数替换:
function curl_get_contents($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); //设置访问的url地址
//curl_setopt($ch,CURLOPT_HEADER,1); //是否显示头部信息
curl_setopt($ch, CURLOPT_TIMEOUT, 5); //设置超时
curl_setopt($ch, CURLOPT_USERAGENT, _USERAGENT_); //用户访问代理 User-Agent
curl_setopt($ch, CURLOPT_REFERER,_REFERER_); //设置 referer
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); //跟踪301
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回结果
$r = curl_exec($ch);
curl_close($ch);
return $r;
}
这样,除了真正的网络问题外,没有更多的问题。
这是其他人对 curl 和 file_get_contents 的测试:
File_get_contents 需要几秒钟才能获取:
2.31319094
2.30374217
2.21512604
3.30553889
2.30124092
curl 使用的时间:
0.68719101
0.64675593
0.64326
0.81983113
0.63956594
感谢您的阅读。以上就是《如何解决PHP CURL或file_get_contents的代码获取页面标题以及两者效率稳定性问题》的内容。看完这篇文章,相信大家都在思考如何解决PHP CURL或者file_get_contents获取页面标题的问题。代码的稳定性问题和两者的效率问题有比较深刻的体会,具体的用法需要大家验证。这就是一宿云。小编会为大家推送更多相关知识点文章,欢迎关注! 查看全部
php curl抓取网页数据(学习“两者效率的稳定性问题”的讲解内容简单清晰)
本文文章主要讲解《如何解决PHP CURL或file_get_contents的代码获取页面标题的问题以及两者效率的稳定性问题》。文章中的讲解简单明了,易学易懂。请关注下面的编辑。思路慢慢深入,一起来学习学习《如何解决PHP CURL或者file_get_contents的代码获取页面标题的问题以及两者效率的稳定性》!
推荐的获取CURL的方法
使用 file_get_contents
看一下 file_get_contents 性能
1)fopen/file_get_contents 每次请求远程URL中的数据时,都会再次进行DNS查询,不会缓存DNS信息。但是 CURL 会自动缓存 DNS 信息。请求同域名下的网页或图片,只需要进行一次DNS查询。这大大减少了 DNS 查询的数量。所以CURL的性能要比fopen/file_get_contents好很多。
2)fopen/file_get_contents 在请求 HTTP 时使用 http_fopen_wrapper,不会保持存活。但是卷曲可以。这样,在多次请求多个链接时,curl 的效率会更高。(应该可以设置标题)
3)fopen/file_get_contents 函数会受到php.ini 文件中allow_url_open 选项配置的影响。如果配置关闭,则该功能无效。并且 curl 不受此配置的影响。
4)curl 可以模拟多种请求,如:POST 数据、表单提交等,用户可以根据自己的需求自定义请求。而 fopen/file_get_contents 只能使用 get 来获取数据。
5)fopen/file_get_contents 无法正确下载二进制文件
6)fopen/file_get_contents 无法正确处理 ssl 请求
7)curl 可以利用多线程
8) 使用file_get_contents时,如果网络有问题,这里很容易积累一些进程
9)如果要进行连续连接,请多次请求多个页面。那么 file_get_contents 就会出错。获取的内容也可能是错误的。所以在做类似采集的事情的时候,肯定有问题。使用curl进行采集爬取,如果你还不相信,我们再做一个测试。
curl和file_get_contents PHP源码性能对比如下:
第182话
测试访问
file_get_contents 速度:4.2404510975 秒
卷曲速度:2.8205530643 秒
curl 比 file_get_contents 快约 30%,最重要的是,服务器负载更低。
ps:php函数file_get_contents和curl的效率和稳定性问题
我习惯使用方便快捷的file_get_contents函数去抓取其他家网站的内容,但是一直遇到获取失败的问题。虽然按照手册中的例子设置了超时时间,但大多数时候并不好用:
$config['context'] = stream_context_create(array('http' => array('method' => "GET",'timeout' => 5)));
'timeout' => 5//这个超时时间不稳定,经常难以使用。这时候再看服务器的连接池,会发现一堆类似下面的错误,让你头疼:
file_get_contents(***): 无法打开流...
作为最后的手段,我安装了 curl 库并编写了一个函数替换:
function curl_get_contents($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); //设置访问的url地址
//curl_setopt($ch,CURLOPT_HEADER,1); //是否显示头部信息
curl_setopt($ch, CURLOPT_TIMEOUT, 5); //设置超时
curl_setopt($ch, CURLOPT_USERAGENT, _USERAGENT_); //用户访问代理 User-Agent
curl_setopt($ch, CURLOPT_REFERER,_REFERER_); //设置 referer
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); //跟踪301
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回结果
$r = curl_exec($ch);
curl_close($ch);
return $r;
}
这样,除了真正的网络问题外,没有更多的问题。
这是其他人对 curl 和 file_get_contents 的测试:
File_get_contents 需要几秒钟才能获取:
2.31319094
2.30374217
2.21512604
3.30553889
2.30124092
curl 使用的时间:
0.68719101
0.64675593
0.64326
0.81983113
0.63956594
感谢您的阅读。以上就是《如何解决PHP CURL或file_get_contents的代码获取页面标题以及两者效率稳定性问题》的内容。看完这篇文章,相信大家都在思考如何解决PHP CURL或者file_get_contents获取页面标题的问题。代码的稳定性问题和两者的效率问题有比较深刻的体会,具体的用法需要大家验证。这就是一宿云。小编会为大家推送更多相关知识点文章,欢迎关注!
php curl抓取网页数据( 怎样抓取AJAX网站的内容?只不过异步内容 )
网站优化 • 优采云 发表了文章 • 0 个评论 • 94 次浏览 • 2021-09-26 04:32
怎样抓取AJAX网站的内容?只不过异步内容
)
用PHP-curl方法捕获Ajax异步内容的思想分析和代码共享
更新时间:2014年8月25日11:17:48贡献:hebedich
如何获取Ajax的内容网站?这是一个热点问题,也是一个棘手的问题。但事实上,抓取Ajax异步内容页面和抓取普通页面之间并没有什么区别。Ajax只是发出一个异步HTTP请求。只需使用类似于firebug的工具来查找请求的后端服务URL和值传递参数,然后获取URL传递参数
事实上,Ajax异步内容页面和普通页面之间几乎没有区别。Ajax只是发出一个异步HTTP请求。只需使用类似于firebug的工具来查找请求的后端服务URL和值传递参数,然后获取URL传递参数
使用firebug的网络工具
如果抓取页面,内容中未显示的数据就是一堆JS代码
代码
$cookie_file=tempnam('./temp','cookie');
$ch = curl_init();
$url1 = "http://www.cdut.edu.cn/default.html";
curl_setopt($ch,CURLOPT_URL,$url1);
curl_setopt($ch,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_ENCODING ,'gzip'); //加入gzip解析
//设置连接结束后保存cookie信息的文件
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
$content=curl_exec($ch);
curl_close($ch);
$ch3 = curl_init();
$url3 = "http://www.cdut.edu.cn/xww/dwr ... 3B%3B
$curlPost = "callCount=1&page=/xww/type/1000020118.html&httpSessionId=12A9B726E6A2D4D3B09DE7952B2F282C&scriptSessionId=295315B4B4141B09DA888D3A3ADB8FAA658&c0-scriptName=portalAjax&c0-methodName=getNewsXml&c0-id=0&c0-param0=string:10000201&c0-param1=string:1000020118&c0-param2=string:news_&c0-param3=number:5969&c0-param4=number:1&c0-param5=null:null&c0-param6=null:null&batchId=0";
curl_setopt($ch3,CURLOPT_URL,$url3);
curl_setopt($ch3,CURLOPT_POST,1);
curl_setopt($ch3,CURLOPT_POSTFIELDS,$curlPost);
//设置连接结束后保存cookie信息的文件
curl_setopt($ch3,CURLOPT_COOKIEFILE,$cookie_file);
$content1=curl_exec($ch3);
curl_close($ch3); 查看全部
php curl抓取网页数据(
怎样抓取AJAX网站的内容?只不过异步内容
)
用PHP-curl方法捕获Ajax异步内容的思想分析和代码共享
更新时间:2014年8月25日11:17:48贡献:hebedich
如何获取Ajax的内容网站?这是一个热点问题,也是一个棘手的问题。但事实上,抓取Ajax异步内容页面和抓取普通页面之间并没有什么区别。Ajax只是发出一个异步HTTP请求。只需使用类似于firebug的工具来查找请求的后端服务URL和值传递参数,然后获取URL传递参数
事实上,Ajax异步内容页面和普通页面之间几乎没有区别。Ajax只是发出一个异步HTTP请求。只需使用类似于firebug的工具来查找请求的后端服务URL和值传递参数,然后获取URL传递参数
使用firebug的网络工具

如果抓取页面,内容中未显示的数据就是一堆JS代码

代码
$cookie_file=tempnam('./temp','cookie');
$ch = curl_init();
$url1 = "http://www.cdut.edu.cn/default.html";
curl_setopt($ch,CURLOPT_URL,$url1);
curl_setopt($ch,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_ENCODING ,'gzip'); //加入gzip解析
//设置连接结束后保存cookie信息的文件
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
$content=curl_exec($ch);
curl_close($ch);
$ch3 = curl_init();
$url3 = "http://www.cdut.edu.cn/xww/dwr ... 3B%3B
$curlPost = "callCount=1&page=/xww/type/1000020118.html&httpSessionId=12A9B726E6A2D4D3B09DE7952B2F282C&scriptSessionId=295315B4B4141B09DA888D3A3ADB8FAA658&c0-scriptName=portalAjax&c0-methodName=getNewsXml&c0-id=0&c0-param0=string:10000201&c0-param1=string:1000020118&c0-param2=string:news_&c0-param3=number:5969&c0-param4=number:1&c0-param5=null:null&c0-param6=null:null&batchId=0";
curl_setopt($ch3,CURLOPT_URL,$url3);
curl_setopt($ch3,CURLOPT_POST,1);
curl_setopt($ch3,CURLOPT_POSTFIELDS,$curlPost);
//设置连接结束后保存cookie信息的文件
curl_setopt($ch3,CURLOPT_COOKIEFILE,$cookie_file);
$content1=curl_exec($ch3);
curl_close($ch3);
php curl抓取网页数据(web开发的通用web框架框架是怎么样的呢?)
网站优化 • 优采云 发表了文章 • 0 个评论 • 100 次浏览 • 2021-09-24 06:06
phpcurl抓取网页数据,用的是curllib实现的。可以直接修改模块名就能获取整个页面的数据源代码。没有定制门槛,完全免费的,用着很方便。
提取标题的话就用beautifulsoup,字段拆分的话就用lxml(lxml是java的),不过一般抓取页面用这些都足够了,
beautifulsoup+lxml或requests就足够了如果是爬取图片,
提取图片javascript是可以的提取html页面python可以用xmllib等库提取图片javascript是可以的对于本地文件javascript是不可以处理的
web开发网站可以使用phper或者dbaman之类的来做,phper会用it的语言解析html页面,dbaman会用linux的语言把html文件转化为kib或者mb级别的小文件然后压缩处理;使用一个编程语言来搞定网站开发事情还是比较麻烦的,web开发还是集中于php等web开发语言比较好,使用xmlkit、libuv之类的开发model,最后再用python解析出来。
首先web开发由于使用了tomcat这一全球知名javaweb开发框架,使得它对html的解析是非常合适的。它既可以进行java开发,又可以使用php,也可以使用python。html可以和mvc一样分层,又可以模块化封装。所以web开发的语言也是非常多。你使用哪种语言搭配就使用哪种语言的web框架。
对于web开发的通用web框架,除了php和python这两种方案外,可以考虑第三方的javaweb框架,比如shopify等。 查看全部
php curl抓取网页数据(web开发的通用web框架框架是怎么样的呢?)
phpcurl抓取网页数据,用的是curllib实现的。可以直接修改模块名就能获取整个页面的数据源代码。没有定制门槛,完全免费的,用着很方便。
提取标题的话就用beautifulsoup,字段拆分的话就用lxml(lxml是java的),不过一般抓取页面用这些都足够了,
beautifulsoup+lxml或requests就足够了如果是爬取图片,
提取图片javascript是可以的提取html页面python可以用xmllib等库提取图片javascript是可以的对于本地文件javascript是不可以处理的
web开发网站可以使用phper或者dbaman之类的来做,phper会用it的语言解析html页面,dbaman会用linux的语言把html文件转化为kib或者mb级别的小文件然后压缩处理;使用一个编程语言来搞定网站开发事情还是比较麻烦的,web开发还是集中于php等web开发语言比较好,使用xmlkit、libuv之类的开发model,最后再用python解析出来。
首先web开发由于使用了tomcat这一全球知名javaweb开发框架,使得它对html的解析是非常合适的。它既可以进行java开发,又可以使用php,也可以使用python。html可以和mvc一样分层,又可以模块化封装。所以web开发的语言也是非常多。你使用哪种语言搭配就使用哪种语言的web框架。
对于web开发的通用web框架,除了php和python这两种方案外,可以考虑第三方的javaweb框架,比如shopify等。
php curl抓取网页数据(抓ajax异步内容页面和抓普通的页面区别。)
网站优化 • 优采云 发表了文章 • 0 个评论 • 133 次浏览 • 2021-09-14 01:12
其实抓取ajax异步内容页面和抓取普通页面没有太大区别。 Ajax 只是一个异步 http 请求。用类似firebug的工具,找到请求的后端服务url和传参值,然后抓取url传参即可。
使用 Firebug 的网络工具
如果抓取一个页面,内容中没有显示的数据就是一堆JS代码。
代码
$cookie_file=tempnam('./temp','cookie');
$ch = curl_init();
$url1 = "http://www.cdut.edu.cn/default.html";
curl_setopt($ch,CURLOPT_URL,$url1);
curl_setopt($ch,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_ENCODING ,'gzip'); //加入gzip解析
//设置连接结束后保存cookie信息的文件
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
$content=curl_exec($ch);
curl_close($ch);
$ch3 = curl_init();
$url3 = "http://www.cdut.edu.cn/xww/dwr ... 3B%3B
$curlPost = "callCount=1&page=/xww/type/1000020118.html&httpSessionId=12A9B726E6A2D4D3B09DE7952B2F282C&scriptSessionId=295315B4B4141B09DA888D3A3ADB8FAA658&c0-scriptName=portalAjax&c0-methodName=getNewsXml&c0-id=0&c0-param0=string:10000201&c0-param1=string:1000020118&c0-param2=string:news_&c0-param3=number:5969&c0-param4=number:1&c0-param5=null:null&c0-param6=null:null&batchId=0";
curl_setopt($ch3,CURLOPT_URL,$url3);
curl_setopt($ch3,CURLOPT_POST,1);
curl_setopt($ch3,CURLOPT_POSTFIELDS,$curlPost);
//设置连接结束后保存cookie信息的文件
curl_setopt($ch3,CURLOPT_COOKIEFILE,$cookie_file);
$content1=curl_exec($ch3);
curl_close($ch3);
我是王与虎的分界线 查看全部
php curl抓取网页数据(抓ajax异步内容页面和抓普通的页面区别。)
其实抓取ajax异步内容页面和抓取普通页面没有太大区别。 Ajax 只是一个异步 http 请求。用类似firebug的工具,找到请求的后端服务url和传参值,然后抓取url传参即可。
使用 Firebug 的网络工具

如果抓取一个页面,内容中没有显示的数据就是一堆JS代码。

代码
$cookie_file=tempnam('./temp','cookie');
$ch = curl_init();
$url1 = "http://www.cdut.edu.cn/default.html";
curl_setopt($ch,CURLOPT_URL,$url1);
curl_setopt($ch,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_ENCODING ,'gzip'); //加入gzip解析
//设置连接结束后保存cookie信息的文件
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
$content=curl_exec($ch);
curl_close($ch);
$ch3 = curl_init();
$url3 = "http://www.cdut.edu.cn/xww/dwr ... 3B%3B
$curlPost = "callCount=1&page=/xww/type/1000020118.html&httpSessionId=12A9B726E6A2D4D3B09DE7952B2F282C&scriptSessionId=295315B4B4141B09DA888D3A3ADB8FAA658&c0-scriptName=portalAjax&c0-methodName=getNewsXml&c0-id=0&c0-param0=string:10000201&c0-param1=string:1000020118&c0-param2=string:news_&c0-param3=number:5969&c0-param4=number:1&c0-param5=null:null&c0-param6=null:null&batchId=0";
curl_setopt($ch3,CURLOPT_URL,$url3);
curl_setopt($ch3,CURLOPT_POST,1);
curl_setopt($ch3,CURLOPT_POSTFIELDS,$curlPost);
//设置连接结束后保存cookie信息的文件
curl_setopt($ch3,CURLOPT_COOKIEFILE,$cookie_file);
$content1=curl_exec($ch3);
curl_close($ch3);
我是王与虎的分界线
php curl抓取网页数据(PHP的调用测试(get(get)函数(图) )
网站优化 • 优采云 发表了文章 • 0 个评论 • 177 次浏览 • 2021-09-12 21:06
)
PHP 的 curl 功能真的很强大。里面有个curl_multi_init函数,就是批处理任务。可以用它来实现多进程同时抓取多条记录,优化常见的网页抓取程序。
一个简单的获取函数:
function http_get_multi($urls){
$count = count($urls);
$data = [];
$chs = [];
// 创建批处理cURL句柄
$mh = curl_multi_init();
// 创建cURL资源
for($i = 0; $i < $count; $i ++){
$chs[ $i ] = curl_init();
// 设置URL和相应的选项
curl_setopt($chs[ $i ], CURLOPT_RETURNTRANSFER, 1); // return don't print
curl_setopt($chs[ $i ], CURLOPT_URL, $urls[$i]);
curl_setopt($chs[ $i ], CURLOPT_HEADER, 0);
curl_multi_add_handle($mh, $chs[ $i ]);
}
// 增加句柄
// for($i = 0; $i < $count; $i ++){
// curl_multi_add_handle($mh, $chs[ $i ]);
// }
// 执行批处理句柄
do {
$mrc = curl_multi_exec($mh, $active);
} while ($active > 0);
while ($active and $mrc == CURLM_OK) {
if (curl_multi_select($mh) != -1) {
do {
$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
for($i = 0; $i < $count; $i ++){
$content = curl_multi_getcontent($chs[ $i ]);
$data[ $i ] = ( curl_errno($chs[ $i ]) == 0 ) ? $content : false;
}
// 关闭全部句柄
for($i = 0; $i < $count; $i ++){
curl_multi_remove_handle($mh, $chs[ $i ]);
}
curl_multi_close($mh);
return $data;
}
下面的调用测试(get() 函数就像这里:):
//弄很多个网页的url
$url = [
'http://www.baidu.com',
'http://www.163.com',
'http://www.sina.com.cn',
'http://www.qq.com',
'http://www.sohu.com',
'http://www.douban.com',
'http://www.cnblogs.com',
'http://www.taobao.com',
'http://www.php.net',
];
$urls = [];
for($i = 0; $i < 10; $i ++){
foreach($url as $r)
$urls[] = $r . '/?v=' . rand();
}
//并发请求
$datas = http_get_multi($urls);
foreach($datas as $key => $data){
file_put_contents('log/multi_' . $key . '.txt', $data); // 记录一下请求结果。记得创建一个log文件夹
}
$t2 = microtime(true);
echo $t2 - $t1;
echo '<br />';
//同步请求, get()函数如这里: http://www.cnblogs.com/whatmiss/p/7114954.html
$t1 = microtime(true);
foreach($urls as $key => $url){
file_put_contents('log/get_' . $key . '.txt', get($url)); // 记录一下请求结果。记得创建一个log文件夹
}
$t2 = microtime(true);
echo $t2 - $t1;
测试结果显示出明显的差距,随着数据量的增加,差距会呈指数级扩大:
2.4481401443481
21.68923997879
8.925509929657
24.73141503334
3.243185043335
23.384337902069
3.2841880321503
24.754415035248
3.2091829776764
29.068662881851 查看全部
php curl抓取网页数据(PHP的调用测试(get(get)函数(图)
)
PHP 的 curl 功能真的很强大。里面有个curl_multi_init函数,就是批处理任务。可以用它来实现多进程同时抓取多条记录,优化常见的网页抓取程序。
一个简单的获取函数:
function http_get_multi($urls){
$count = count($urls);
$data = [];
$chs = [];
// 创建批处理cURL句柄
$mh = curl_multi_init();
// 创建cURL资源
for($i = 0; $i < $count; $i ++){
$chs[ $i ] = curl_init();
// 设置URL和相应的选项
curl_setopt($chs[ $i ], CURLOPT_RETURNTRANSFER, 1); // return don't print
curl_setopt($chs[ $i ], CURLOPT_URL, $urls[$i]);
curl_setopt($chs[ $i ], CURLOPT_HEADER, 0);
curl_multi_add_handle($mh, $chs[ $i ]);
}
// 增加句柄
// for($i = 0; $i < $count; $i ++){
// curl_multi_add_handle($mh, $chs[ $i ]);
// }
// 执行批处理句柄
do {
$mrc = curl_multi_exec($mh, $active);
} while ($active > 0);
while ($active and $mrc == CURLM_OK) {
if (curl_multi_select($mh) != -1) {
do {
$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
for($i = 0; $i < $count; $i ++){
$content = curl_multi_getcontent($chs[ $i ]);
$data[ $i ] = ( curl_errno($chs[ $i ]) == 0 ) ? $content : false;
}
// 关闭全部句柄
for($i = 0; $i < $count; $i ++){
curl_multi_remove_handle($mh, $chs[ $i ]);
}
curl_multi_close($mh);
return $data;
}
下面的调用测试(get() 函数就像这里:):
//弄很多个网页的url
$url = [
'http://www.baidu.com',
'http://www.163.com',
'http://www.sina.com.cn',
'http://www.qq.com',
'http://www.sohu.com',
'http://www.douban.com',
'http://www.cnblogs.com',
'http://www.taobao.com',
'http://www.php.net',
];
$urls = [];
for($i = 0; $i < 10; $i ++){
foreach($url as $r)
$urls[] = $r . '/?v=' . rand();
}
//并发请求
$datas = http_get_multi($urls);
foreach($datas as $key => $data){
file_put_contents('log/multi_' . $key . '.txt', $data); // 记录一下请求结果。记得创建一个log文件夹
}
$t2 = microtime(true);
echo $t2 - $t1;
echo '<br />';
//同步请求, get()函数如这里: http://www.cnblogs.com/whatmiss/p/7114954.html
$t1 = microtime(true);
foreach($urls as $key => $url){
file_put_contents('log/get_' . $key . '.txt', get($url)); // 记录一下请求结果。记得创建一个log文件夹
}
$t2 = microtime(true);
echo $t2 - $t1;
测试结果显示出明显的差距,随着数据量的增加,差距会呈指数级扩大:
2.4481401443481
21.68923997879
8.925509929657
24.73141503334
3.243185043335
23.384337902069
3.2841880321503
24.754415035248
3.2091829776764
29.068662881851
php curl抓取网页数据(网站制作居于LINUX+PHP+MYSQL框架,循环取出需要的内容)
网站优化 • 优采云 发表了文章 • 0 个评论 • 83 次浏览 • 2021-09-11 06:04
(.*?)
(.*?)
#is';
preg_match_all($regular,$html_data,$connect);//进行正则匹配,得到你想要的
//循环出需要的内容数组
foreach($connect as $k =>$var){
if($k==2 || $k==3|| $k==5|| $k==7){
$b= array_merge(array_filter($connect[$k]));
$array[]=$b;
}
}
获取数据数组后,可以根据需要添加数据
需要抓取内容详细信息才能获得指向新闻内容页面的链接。同样使用 curl 获取信息
需要注意的是,正则表达式中的html需要和页面的格式一致。可以到原来的网站,右键查看源码,查看格式,复制要抓包的html。如果仍然无法捕获 内容可能格式不正确。在某些地方可能会有更少的空间或更多的空间。这时候直接在标签之间(.*?)。也可以一点一点的进行匹配,看看哪个部分不匹配。
方微网络为客户提供网站开发定制服务,网站production居住在LINUX+PHP+MYSQL框架中,欢迎客户咨询我们的建站热线 查看全部
php curl抓取网页数据(网站制作居于LINUX+PHP+MYSQL框架,循环取出需要的内容)
(.*?)
(.*?)
#is';
preg_match_all($regular,$html_data,$connect);//进行正则匹配,得到你想要的
//循环出需要的内容数组
foreach($connect as $k =>$var){
if($k==2 || $k==3|| $k==5|| $k==7){
$b= array_merge(array_filter($connect[$k]));
$array[]=$b;
}
}
获取数据数组后,可以根据需要添加数据
需要抓取内容详细信息才能获得指向新闻内容页面的链接。同样使用 curl 获取信息
需要注意的是,正则表达式中的html需要和页面的格式一致。可以到原来的网站,右键查看源码,查看格式,复制要抓包的html。如果仍然无法捕获 内容可能格式不正确。在某些地方可能会有更少的空间或更多的空间。这时候直接在标签之间(.*?)。也可以一点一点的进行匹配,看看哪个部分不匹配。
方微网络为客户提供网站开发定制服务,网站production居住在LINUX+PHP+MYSQL框架中,欢迎客户咨询我们的建站热线