
php curl抓取网页指定内容
php curl抓取网页指定内容(抓取网页指定内容抓取结果返回请求头,其中accept可不定义)
网站优化 • 优采云 发表了文章 • 0 个评论 • 41 次浏览 • 2021-12-27 19:01
phpcurl抓取网页指定内容字段{phpcurl//处理http请求.request("websocket:4000/",user_agent)}getget方法抓取指定内容内容抓取request_body_data结果返回请求头,其中accept字段可不定义。#!/usr/bin/envphp/***抓取指定内容中指定字段的字符串*@paramaccept*@return*/publicfunctiongetbody_data(stringaccept){if(accept==""||accept==""){returntrue;}returnaccept;}publicfunctiongetbody(stringaccept){if(accept==""||accept==""){returntrue;}returnaccept;}publicfunctiongetbody(stringaccept){if(accept==""||accept==""){returntrue;}returnaccept;}。
先用sqlite数据库转成一个.io的api文件,在该api文件中的http方法中post()接受参数,request()、get()接受返回结果。每个字段的值由accept判断,不要放在字段之前。
谢谢邀请回答,可能是要抓取某些公共资源的某些字段,首先必须要进行解析,使用indexdatasource.parse()方法;select之后看sql语句,若还需要匹配查询(如find_ext_content等),则要用accept方法,否则使用post方法。实例:抓取xxx.php代码:select*fromxxx.xxwhereid='xxx'andname='xxx';accept:'//'request:''post:''data:{'id':3222}accept_text:'[accept-language=en-us]'host:'single-host'path:'xxx.php'}。 查看全部
php curl抓取网页指定内容(抓取网页指定内容抓取结果返回请求头,其中accept可不定义)
phpcurl抓取网页指定内容字段{phpcurl//处理http请求.request("websocket:4000/",user_agent)}getget方法抓取指定内容内容抓取request_body_data结果返回请求头,其中accept字段可不定义。#!/usr/bin/envphp/***抓取指定内容中指定字段的字符串*@paramaccept*@return*/publicfunctiongetbody_data(stringaccept){if(accept==""||accept==""){returntrue;}returnaccept;}publicfunctiongetbody(stringaccept){if(accept==""||accept==""){returntrue;}returnaccept;}publicfunctiongetbody(stringaccept){if(accept==""||accept==""){returntrue;}returnaccept;}。
先用sqlite数据库转成一个.io的api文件,在该api文件中的http方法中post()接受参数,request()、get()接受返回结果。每个字段的值由accept判断,不要放在字段之前。
谢谢邀请回答,可能是要抓取某些公共资源的某些字段,首先必须要进行解析,使用indexdatasource.parse()方法;select之后看sql语句,若还需要匹配查询(如find_ext_content等),则要用accept方法,否则使用post方法。实例:抓取xxx.php代码:select*fromxxx.xxwhereid='xxx'andname='xxx';accept:'//'request:''post:''data:{'id':3222}accept_text:'[accept-language=en-us]'host:'single-host'path:'xxx.php'}。
php curl抓取网页指定内容(私有云的IP,如上图箭头所于成功了吗?(组图) )
网站优化 • 优采云 发表了文章 • 0 个评论 • 61 次浏览 • 2021-12-20 03:18
)
在最近承接的一个项目中,需要使用curl在公有云阿里云中连接甲方的内网(私有云)域名,拉回用户积分等相关数据。方案草图如下,公有云和私有云之间通过专线连接。
问:是私有云中的域名。解析后的IP地址无法从外网访问。BUT解析为外网可访问的IP,所以curl傻傻的连接到这个IP上。
需求:curl("")——网络包发送到-->私有云IP,如上图箭头所示。
设想的解决方案:指定curl的dst主机ip地址
实践一:静态路由
更改/etc/hosts,添加一条记录
10.23.xx.xx
考虑到未来服务器数量的横向扩展,运维人员需要做代码部署以外的工作,很容易让人忘记这些步骤而不采用
实践二:PHP手册
在目前的PHP curl手册中,只能找到下图中的选项来实现相同的功能,但是需要PHP7,项目中使用的是PHP5.6。经过
练习三:思考
1) 记得终端下的curl命令有个--resolve选项可以指定目标IP
2) 我记得PHP接口的底层代码和C语言代码几乎一模一样。我查找了 /usr/include/curl/curl.h 文件并找到了它。
从这个C语言的宏可以看出,--resolve对应的选项常量的名字是CURLOPT_RESOLVE。我找了 PHP curl 文档,但我什至没有看到这个常量的定义。
仍然考虑到PHP接口的底层代码与C语言代码几乎一模一样,推测这个常量在PHP中也是同一个值。PHP文档虽然没有写,但是直接传入这个常识值应该是可以通过的。
编写如下实验代码,测试一下,还是成功了。
问题解决了~
----------------------------------------- 添加另一个方法----- ----------------------------------
该方法将url scheme中的hostname部分替换为目标IP地址,然后在http头中指定Host。
为什么这种方法可行?把它留给聪明的你来锻炼你的思维。
Answer Tips:考虑一下你在Apache/Nginx中是如何配置虚拟主机的,Host部分的作用是什么?
但是,是的,这是大写的。此方法仅对HTTP 100% 成功,对HTTPS 也是如此
嗯,跟证书签名里的主机名不符,太没感觉了,太安全了-->
查看全部
php curl抓取网页指定内容(私有云的IP,如上图箭头所于成功了吗?(组图)
)
在最近承接的一个项目中,需要使用curl在公有云阿里云中连接甲方的内网(私有云)域名,拉回用户积分等相关数据。方案草图如下,公有云和私有云之间通过专线连接。

问:是私有云中的域名。解析后的IP地址无法从外网访问。BUT解析为外网可访问的IP,所以curl傻傻的连接到这个IP上。
需求:curl("")——网络包发送到-->私有云IP,如上图箭头所示。
设想的解决方案:指定curl的dst主机ip地址
实践一:静态路由
更改/etc/hosts,添加一条记录
10.23.xx.xx
考虑到未来服务器数量的横向扩展,运维人员需要做代码部署以外的工作,很容易让人忘记这些步骤而不采用
实践二:PHP手册
在目前的PHP curl手册中,只能找到下图中的选项来实现相同的功能,但是需要PHP7,项目中使用的是PHP5.6。经过

练习三:思考
1) 记得终端下的curl命令有个--resolve选项可以指定目标IP

2) 我记得PHP接口的底层代码和C语言代码几乎一模一样。我查找了 /usr/include/curl/curl.h 文件并找到了它。

从这个C语言的宏可以看出,--resolve对应的选项常量的名字是CURLOPT_RESOLVE。我找了 PHP curl 文档,但我什至没有看到这个常量的定义。
仍然考虑到PHP接口的底层代码与C语言代码几乎一模一样,推测这个常量在PHP中也是同一个值。PHP文档虽然没有写,但是直接传入这个常识值应该是可以通过的。
编写如下实验代码,测试一下,还是成功了。

问题解决了~
----------------------------------------- 添加另一个方法----- ----------------------------------

该方法将url scheme中的hostname部分替换为目标IP地址,然后在http头中指定Host。
为什么这种方法可行?把它留给聪明的你来锻炼你的思维。
Answer Tips:考虑一下你在Apache/Nginx中是如何配置虚拟主机的,Host部分的作用是什么?
但是,是的,这是大写的。此方法仅对HTTP 100% 成功,对HTTPS 也是如此

嗯,跟证书签名里的主机名不符,太没感觉了,太安全了-->

php curl抓取网页指定内容(使用PHP的cURL库可以简单和有效地去抓网页。)
网站优化 • 优采云 发表了文章 • 0 个评论 • 42 次浏览 • 2021-12-19 09:20
使用 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抓取网页指定内容(PHP的curl()设置相关选项信息的使用总结)
网站优化 • 优采云 发表了文章 • 0 个评论 • 76 次浏览 • 2021-12-19 00:19
PHP的curl()在抓取网页的效率上比较高,并且支持多线程,而file_get_contents()的效率稍低。当然,使用curl时需要开启curl扩展。
代码实战
先看登录部分的代码:
//模拟登录
function login_post($url, $cookie, $post) {
$curl = curl_init();//初始化curl模块
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
curl_exec($curl);//执行cURL
curl_close($curl);//关闭cURL资源,并且释放系统资源
}
函数login_post()首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的URL地址,保存的cookie文件,post数据(用户名密码等信息),是否返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 的内置 http_build_query() 可以将数组转换为串联字符串。
接下来,如果登录成功,我们需要获取登录成功后的页面信息。
//登录成功后获取数据
function get_content($url, $cookie) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie
$rs = curl_exec($ch); //执行cURL抓取页面内容
curl_close($ch);
return $rs;
}
函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们设置CURLOPT_RETURNTRANSFER为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
我们的最终目的是获取模拟登录后的信息,即只有正常登录成功才能获取的有用信息。接下来我们以开源中国移动版为例,看看登录成功后如何抓取信息。
//设置post的数据
$post = array (
'email' => 'oschina账户',
'pwd' => 'oschina密码',
'goto_page' => '/my',
'error_page' => '/login',
'save_login' => '1',
'submit' => '现在登录'
);
//登录地址 $url = "http://m.oschina.net/action/user/login"; //设置cookie保存路径 $cookie = dirname(__FILE__) . '/cookie_oschina.txt'; //登录后要获取信息的地址 $url2 = "http://m.oschina.net/my"; //模拟登录
login_post($url, $cookie, $post); //获取登录页的信息 $content = get_content($url2, $cookie); //删除cookie文件
@ unlink($cookie); //匹配页面信息 $preg = "/(.*)/i";
preg_match_all($preg, $content, $arr); $str = $arr[1][0]; //输出内容 echo $str;
使用总结
1、初始化curl;
2、使用curl_setopt设置目标url,以及其他选项;
3、curl_exec,执行curl;
4、 执行后关闭curl;
5、 输出数据。
感谢您的阅读,希望对您有所帮助,感谢您对本站的支持! 查看全部
php curl抓取网页指定内容(PHP的curl()设置相关选项信息的使用总结)
PHP的curl()在抓取网页的效率上比较高,并且支持多线程,而file_get_contents()的效率稍低。当然,使用curl时需要开启curl扩展。
代码实战
先看登录部分的代码:
//模拟登录
function login_post($url, $cookie, $post) {
$curl = curl_init();//初始化curl模块
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
curl_exec($curl);//执行cURL
curl_close($curl);//关闭cURL资源,并且释放系统资源
}
函数login_post()首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的URL地址,保存的cookie文件,post数据(用户名密码等信息),是否返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 的内置 http_build_query() 可以将数组转换为串联字符串。
接下来,如果登录成功,我们需要获取登录成功后的页面信息。
//登录成功后获取数据
function get_content($url, $cookie) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie
$rs = curl_exec($ch); //执行cURL抓取页面内容
curl_close($ch);
return $rs;
}
函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们设置CURLOPT_RETURNTRANSFER为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
我们的最终目的是获取模拟登录后的信息,即只有正常登录成功才能获取的有用信息。接下来我们以开源中国移动版为例,看看登录成功后如何抓取信息。
//设置post的数据
$post = array (
'email' => 'oschina账户',
'pwd' => 'oschina密码',
'goto_page' => '/my',
'error_page' => '/login',
'save_login' => '1',
'submit' => '现在登录'
);
//登录地址 $url = "http://m.oschina.net/action/user/login"; //设置cookie保存路径 $cookie = dirname(__FILE__) . '/cookie_oschina.txt'; //登录后要获取信息的地址 $url2 = "http://m.oschina.net/my"; //模拟登录
login_post($url, $cookie, $post); //获取登录页的信息 $content = get_content($url2, $cookie); //删除cookie文件
@ unlink($cookie); //匹配页面信息 $preg = "/(.*)/i";
preg_match_all($preg, $content, $arr); $str = $arr[1][0]; //输出内容 echo $str;
使用总结
1、初始化curl;
2、使用curl_setopt设置目标url,以及其他选项;
3、curl_exec,执行curl;
4、 执行后关闭curl;
5、 输出数据。
感谢您的阅读,希望对您有所帮助,感谢您对本站的支持!
php curl抓取网页指定内容(phpcurl查看反弹链接用源码从web服务器爬回数据加密)
网站优化 • 优采云 发表了文章 • 0 个评论 • 54 次浏览 • 2021-12-09 07:01
phpcurl抓取网页指定内容,soeasy.//需要php基础。//进程以2s停止,无延迟withupdate('submit')as'post':update('submit')://服务器接受请求发送数据withupdate('accept')as'post':curl_install('post')//配置curl:[postread]='请求网址'//加载爬虫splash:curl_install('submit'):。
wget看api手册里面每一句分析一下就出来了。
f12查看反弹链接
用github源码从web服务器爬回数据加密存在excel里面
抓数据请用fastcgi网络.比如前端http请求,服务器用https协议连接.然后调用strtocache模块从文件读数据。
mysql,windbg,
楼上有人说到了github,实在不行用python的一个bitshare库,restfulapi,完爆sqlite,也不需要sqlite。大概的工作原理是一个restfulapi接口包含一些基本的mvc框架,比如apache或者php。
使用python写一个mysql操作系统,
拿这个向内行吹嘘:必须要了解tcp/ip协议,
楼上说的docker?不过比较bash的,介绍下containers这个api。 查看全部
php curl抓取网页指定内容(phpcurl查看反弹链接用源码从web服务器爬回数据加密)
phpcurl抓取网页指定内容,soeasy.//需要php基础。//进程以2s停止,无延迟withupdate('submit')as'post':update('submit')://服务器接受请求发送数据withupdate('accept')as'post':curl_install('post')//配置curl:[postread]='请求网址'//加载爬虫splash:curl_install('submit'):。
wget看api手册里面每一句分析一下就出来了。
f12查看反弹链接
用github源码从web服务器爬回数据加密存在excel里面
抓数据请用fastcgi网络.比如前端http请求,服务器用https协议连接.然后调用strtocache模块从文件读数据。
mysql,windbg,
楼上有人说到了github,实在不行用python的一个bitshare库,restfulapi,完爆sqlite,也不需要sqlite。大概的工作原理是一个restfulapi接口包含一些基本的mvc框架,比如apache或者php。
使用python写一个mysql操作系统,
拿这个向内行吹嘘:必须要了解tcp/ip协议,
楼上说的docker?不过比较bash的,介绍下containers这个api。
php curl抓取网页指定内容(phpcurl采集页面_html_dom解析,侵删推广)
网站优化 • 优采云 发表了文章 • 0 个评论 • 131 次浏览 • 2021-12-02 11:20
有的人看小说看习惯了,偶尔看几章。都是百度发布的,但基本上都是特别烦人的广告,或者是在整体div上加了链接,误触跳转到某些网站甚至无限循环。一些手机app也有很多广告,所以我可以写一个小程序来避免广告的烦恼。
本文将使用php curl采集页面simple_html_dom进行解析,实现真正去除广告。
随便找一本小说网站找书,但是这个网站在手机上特别棘手,而且存在以上问题:
以这本小说为借口。(免责声明:绝对不是宣传、侵扰)
一、了解curl的get方法
curl是一个命令行工具,通过指定的URL上传或下载数据,并显示数据。curl 中的 c 表示客户端,URL 表示 URL。
PHP中使用cURL实现Get和Post请求方法
只需抓取小说,只需要 get 方法。
以下示例代码是通过get请求获取第一章小说页面html的示例。您只需要更改 url 参数。
初始化、设置选项、证书验证、执行、关闭
评论特别详细。按照步骤发送 curl get 请求。如果是post请求,需要再增加一个设置来设置post选项,并传递参数,最后输出获取到的信息。运行结果如下,没有CSS渲染。
二、 解析页面
输出页面有很多不必要的内容。我们需要从所有的内容中提取我们需要的内容,比如标题和每章的内容。这时候就需要对页面进行解析。
有很多方法可以解析页面。此处使用 simple_html_dom。您需要下载并引用 simple_html_dom.php 类、实例对象,并调用内部方法。具体方法可以在官网查看,也可以在中文网站上查看其他文档。
先分析这个小说页面的源码,看本章标题和内容的对应元素
首先是标题:类书名下的h1下
然后内容:在id为content的div下
Simple_html_dom可以使用find方法,类似于jquery,使用选择器来查找定位元素。喜欢:
find('.bookname h1'); //找到类书名下的h1标题元素
find('#content'); //查找id为content的章节内容
在上面的基础上增加了代码:
include "simple_html_dom.php";
$html = new simple_html_dom();
@$html->load($res);
$h1 = $html->find('.bookname h1');
foreach ($h1 as $k=>$v) {
$artic['title'] = $v->innertext;
}
// 查找小说的具体内容
$divs = $html->find('#content');
foreach ($divs as $k=>$v) {
$content = $v->innertext;
}
// 正则替换去除多余部分
$pattern = "/(<p>.*?)|(.*?)/";
$artic['content'] = preg_replace($pattern,'',$content);
echo $artic['title'].'
';
echo $artic['content'];
使用上述分析方法得到的内容是一个数组。使用foreach获取数组内容,使用正则替换去除正文文本广告,将标题和小说内容放入数组中。最简单的写法就完成了。运行结果如下:
当然这种写法看起来更难受,可以自己封装函数类。以下是我自己编写的代码示例。当然也有一些不足,但是可以作为参考扩展。
以上示例代码的最终运行结果: 前几章,通过$_GET['n']输入数字并传递参数
总结:
知识点:curl(提示:curl模块采集任意网页php类)、正则、解析工具simple_html_dom
虽然写法已经初步完善,但最好自己部署服务器,效果最佳。否则只能在电脑上看,不太方便,而且你可能更愿意容忍广告。
以上就是使用php curl采集页面,使用simple_html_dom解析的详细内容! 查看全部
php curl抓取网页指定内容(phpcurl采集页面_html_dom解析,侵删推广)
有的人看小说看习惯了,偶尔看几章。都是百度发布的,但基本上都是特别烦人的广告,或者是在整体div上加了链接,误触跳转到某些网站甚至无限循环。一些手机app也有很多广告,所以我可以写一个小程序来避免广告的烦恼。
本文将使用php curl采集页面simple_html_dom进行解析,实现真正去除广告。
随便找一本小说网站找书,但是这个网站在手机上特别棘手,而且存在以上问题:

以这本小说为借口。(免责声明:绝对不是宣传、侵扰)
一、了解curl的get方法
curl是一个命令行工具,通过指定的URL上传或下载数据,并显示数据。curl 中的 c 表示客户端,URL 表示 URL。
PHP中使用cURL实现Get和Post请求方法
只需抓取小说,只需要 get 方法。
以下示例代码是通过get请求获取第一章小说页面html的示例。您只需要更改 url 参数。
初始化、设置选项、证书验证、执行、关闭
评论特别详细。按照步骤发送 curl get 请求。如果是post请求,需要再增加一个设置来设置post选项,并传递参数,最后输出获取到的信息。运行结果如下,没有CSS渲染。

二、 解析页面
输出页面有很多不必要的内容。我们需要从所有的内容中提取我们需要的内容,比如标题和每章的内容。这时候就需要对页面进行解析。
有很多方法可以解析页面。此处使用 simple_html_dom。您需要下载并引用 simple_html_dom.php 类、实例对象,并调用内部方法。具体方法可以在官网查看,也可以在中文网站上查看其他文档。
先分析这个小说页面的源码,看本章标题和内容的对应元素
首先是标题:类书名下的h1下

然后内容:在id为content的div下

Simple_html_dom可以使用find方法,类似于jquery,使用选择器来查找定位元素。喜欢:
find('.bookname h1'); //找到类书名下的h1标题元素
find('#content'); //查找id为content的章节内容
在上面的基础上增加了代码:
include "simple_html_dom.php";
$html = new simple_html_dom();
@$html->load($res);
$h1 = $html->find('.bookname h1');
foreach ($h1 as $k=>$v) {
$artic['title'] = $v->innertext;
}
// 查找小说的具体内容
$divs = $html->find('#content');
foreach ($divs as $k=>$v) {
$content = $v->innertext;
}
// 正则替换去除多余部分
$pattern = "/(<p>.*?)|(.*?)/";
$artic['content'] = preg_replace($pattern,'',$content);
echo $artic['title'].'
';
echo $artic['content'];
使用上述分析方法得到的内容是一个数组。使用foreach获取数组内容,使用正则替换去除正文文本广告,将标题和小说内容放入数组中。最简单的写法就完成了。运行结果如下:

当然这种写法看起来更难受,可以自己封装函数类。以下是我自己编写的代码示例。当然也有一些不足,但是可以作为参考扩展。
以上示例代码的最终运行结果: 前几章,通过$_GET['n']输入数字并传递参数

总结:
知识点:curl(提示:curl模块采集任意网页php类)、正则、解析工具simple_html_dom
虽然写法已经初步完善,但最好自己部署服务器,效果最佳。否则只能在电脑上看,不太方便,而且你可能更愿意容忍广告。
以上就是使用php curl采集页面,使用simple_html_dom解析的详细内容!
php curl抓取网页指定内容(curl要求php环境支持才行.可以运行phpinfo()函数)
网站优化 • 优采云 发表了文章 • 0 个评论 • 46 次浏览 • 2021-11-30 13:19
这个文章介绍了如何使用php通过curl获取远程图片。需要了解采集远程图片的朋友不防进入参考。 curl 需要php环境的支持。可以运行phpinfo()函数来支持,一般在php.ini中;扩展= php_curl.dll;去掉它。重新启动 IIS 或 APACHE。
/*
*@通过curl方式获取指定的图片到本地
*@ 完整的图片地址
*@ 要存储的文件名
*/
function getImg($url = "", $filename = "")
{
//去除URL连接上面可能的引号
//$url = preg_replace( '/(?:^['"]+|['"/]+$)/', '', $url );
$hander = curl_init();
$fp = fopen($filename,'wb');
curl_setopt($hander,CURLOPT_URL,$url);
curl_setopt($hander,CURLOPT_FILE,$fp);
curl_setopt($hander,CURLOPT_HEADER,0);
curl_setopt($hander,CURLOPT_FOLLOWLOCATION,1);
//curl_setopt($hander,CURLOPT_RETURNTRANSFER,false);//以数据流的方式返回数据,当为false是直接显示出来
curl_setopt($hander,CURLOPT_TIMEOUT,60);
curl_exec($hander);
curl_close($hander);
fclose($fp);
Return true;
}
调用时,直接getImg("/logo.jpg","upload/image.jpg")
实现代码2
代码如下:
<p> 查看全部
php curl抓取网页指定内容(curl要求php环境支持才行.可以运行phpinfo()函数)
这个文章介绍了如何使用php通过curl获取远程图片。需要了解采集远程图片的朋友不防进入参考。 curl 需要php环境的支持。可以运行phpinfo()函数来支持,一般在php.ini中;扩展= php_curl.dll;去掉它。重新启动 IIS 或 APACHE。
/*
*@通过curl方式获取指定的图片到本地
*@ 完整的图片地址
*@ 要存储的文件名
*/
function getImg($url = "", $filename = "")
{
//去除URL连接上面可能的引号
//$url = preg_replace( '/(?:^['"]+|['"/]+$)/', '', $url );
$hander = curl_init();
$fp = fopen($filename,'wb');
curl_setopt($hander,CURLOPT_URL,$url);
curl_setopt($hander,CURLOPT_FILE,$fp);
curl_setopt($hander,CURLOPT_HEADER,0);
curl_setopt($hander,CURLOPT_FOLLOWLOCATION,1);
//curl_setopt($hander,CURLOPT_RETURNTRANSFER,false);//以数据流的方式返回数据,当为false是直接显示出来
curl_setopt($hander,CURLOPT_TIMEOUT,60);
curl_exec($hander);
curl_close($hander);
fclose($fp);
Return true;
}
调用时,直接getImg("/logo.jpg","upload/image.jpg")
实现代码2
代码如下:
<p>
php curl抓取网页指定内容(phpcurl抓取网页指定内容讲解抓取数据使用方法抓取)
网站优化 • 优采云 发表了文章 • 0 个评论 • 64 次浏览 • 2021-11-24 18:02
phpcurl抓取网页指定内容;现在很多一些网站都会采用http协议传输数据,这些数据会有一些字符串进行转换,如\[,\\,\a转换成ascii码等,一些字符编码不是这么统一,所以我们就可以采用curl抓取数据,做成字符串输出来,下面将详细讲解curl的一些使用方法。下面我们先通过上面的几个例子实现下对curl的一些操作。
对于curl的作用,我之前也介绍过,是能够抓取一些php文件上的数据的,很多公司都会使用它抓取数据,但是目前还没有采用自己写工具来抓取数据。其实不必这么麻烦,curl也很简单,通过curl我们就可以抓取域名下面的所有数据了,甚至可以抓取国外的一些网站的数据。首先我们在域名下面新建一个文件夹或者其他我们定义好的名字然后把我们要抓取的网站放进去,根据自己的需要命名保存接下来就是curl的使用了,我们通过curl就可以抓取了,我们下面介绍下curl怎么抓取我们上面设置好的文件,一个一个来介绍:一、解析网页在浏览器中抓取的网页通过http协议,而通过curl获取的就可以用我们上面说的方法解析出来;我们要抓取的信息我们在写代码抓取之前在设置抓取的参数,一般curl会有这些参数我们通过--user-agent-program就可以设置我们需要抓取的http代码即可抓取;二、抓取网页数据获取到我们想要的数据后,我们要做的是根据提供的编码规则或者其他编码规则来进行解析数据,这个时候就用到了net::http或者json来进行解析,net一般有我们的特定编码规则,我们通过编码规则进行解析;一般抓取到我们想要的数据后,我们就可以进行输出,只需要再打开浏览器输入我们刚才所设置的代码就可以出现我们想要的数据了;注意一下,一般我们是以gb2312编码进行解析的,如果是utf-8编码的请提前给我们的net开启编码方式,要不然输出的文件会出现乱码;写在最后:要保证我们在进行抓取时无需预先设置抓取参数,并且数据同样可以通过utf-8编码输出;curl接触的人越来越多,肯定有不少人也可以使用,毕竟curl是一个很成熟的网络抓取工具,拥有很多的小工具;实在不行可以使用自己写的脚本,毕竟这东西即便也提供免费抓取脚本;如果你有其他更好的curl使用方法,欢迎留言,我们一起交流。 查看全部
php curl抓取网页指定内容(phpcurl抓取网页指定内容讲解抓取数据使用方法抓取)
phpcurl抓取网页指定内容;现在很多一些网站都会采用http协议传输数据,这些数据会有一些字符串进行转换,如\[,\\,\a转换成ascii码等,一些字符编码不是这么统一,所以我们就可以采用curl抓取数据,做成字符串输出来,下面将详细讲解curl的一些使用方法。下面我们先通过上面的几个例子实现下对curl的一些操作。
对于curl的作用,我之前也介绍过,是能够抓取一些php文件上的数据的,很多公司都会使用它抓取数据,但是目前还没有采用自己写工具来抓取数据。其实不必这么麻烦,curl也很简单,通过curl我们就可以抓取域名下面的所有数据了,甚至可以抓取国外的一些网站的数据。首先我们在域名下面新建一个文件夹或者其他我们定义好的名字然后把我们要抓取的网站放进去,根据自己的需要命名保存接下来就是curl的使用了,我们通过curl就可以抓取了,我们下面介绍下curl怎么抓取我们上面设置好的文件,一个一个来介绍:一、解析网页在浏览器中抓取的网页通过http协议,而通过curl获取的就可以用我们上面说的方法解析出来;我们要抓取的信息我们在写代码抓取之前在设置抓取的参数,一般curl会有这些参数我们通过--user-agent-program就可以设置我们需要抓取的http代码即可抓取;二、抓取网页数据获取到我们想要的数据后,我们要做的是根据提供的编码规则或者其他编码规则来进行解析数据,这个时候就用到了net::http或者json来进行解析,net一般有我们的特定编码规则,我们通过编码规则进行解析;一般抓取到我们想要的数据后,我们就可以进行输出,只需要再打开浏览器输入我们刚才所设置的代码就可以出现我们想要的数据了;注意一下,一般我们是以gb2312编码进行解析的,如果是utf-8编码的请提前给我们的net开启编码方式,要不然输出的文件会出现乱码;写在最后:要保证我们在进行抓取时无需预先设置抓取参数,并且数据同样可以通过utf-8编码输出;curl接触的人越来越多,肯定有不少人也可以使用,毕竟curl是一个很成熟的网络抓取工具,拥有很多的小工具;实在不行可以使用自己写的脚本,毕竟这东西即便也提供免费抓取脚本;如果你有其他更好的curl使用方法,欢迎留言,我们一起交流。
php curl抓取网页指定内容(phpcurl获取页面内容或提交数据有时候希望返回的内容 )
网站优化 • 优采云 发表了文章 • 0 个评论 • 55 次浏览 • 2021-11-20 05:22
)
使用 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获取页面内容或提交数据有时候希望返回的内容
)
使用 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抓取网页指定内容(网站制作居于LINUX+PHP+MYSQL框架,循环取出需要的内容)
网站优化 • 优采云 发表了文章 • 0 个评论 • 64 次浏览 • 2021-11-20 05:16
(.*?)
(.*?)
#是';
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抓取网页指定内容(phpcurl抓取网页指定内容、为每个页面分配、去重favicon标签)
网站优化 • 优采云 发表了文章 • 0 个评论 • 53 次浏览 • 2021-11-14 16:01
phpcurl抓取网页指定内容、为每个页面分配url、去重favicon标签,
1.curl(connectionprotocol)是一种全连接的网络协议2.webmagicdriver(webmediaserver)是一种dom编程器3.php解释器nodejs运行的浏览器4.页面(html或者http)本身就是一个数据库5.第二条里面关于php的词条包含了这三项6.浏览器本身没有数据库7.假设你要记录“一个xx年xx月xx日xx时,我在操场跑步(或者其他的xx类似事件)”这个时间信息的话,对应的的txt文档就是一个数据库。没有数据库计算器你可以忽略这一条了。
web前端,客户端、服务端。数据库是人们日常工作中常用的解决问题的方式。人们从在浏览器中输入url(/)到主动连接到数据库开始下载数据库相关数据。就是从浏览器服务器到数据库。
客户端的原生接口请求到底接口,
我觉得网页上涉及到数据库的主要是以下几点:
1、读写文件
2、搜索引擎
3、打开网页
4、人在浏览器里输入网址
5、搜索引擎出来网页
6、如果是在网页浏览器里输入网址(或者其他方式)返回的可能是静态网页,也就是一个预编译好的网页,一般由html和javascript这两类文件组成;动态网页就是根据你的数据库以及html结构,本身能定义好的格式发送给浏览器服务器,浏览器服务器直接输出这个网页,
7、请求数据库的逻辑实现,特别是对于单一不连接的请求来说,应该是数据库链接;对于拥有多个不连接的请求来说,应该考虑权限等情况,
8、javascript的使用,一般采用cgi模式不是很容易碰到数据库,除非是复杂点的,
9、上面说的有部分含糊,但是总体上, 查看全部
php curl抓取网页指定内容(phpcurl抓取网页指定内容、为每个页面分配、去重favicon标签)
phpcurl抓取网页指定内容、为每个页面分配url、去重favicon标签,
1.curl(connectionprotocol)是一种全连接的网络协议2.webmagicdriver(webmediaserver)是一种dom编程器3.php解释器nodejs运行的浏览器4.页面(html或者http)本身就是一个数据库5.第二条里面关于php的词条包含了这三项6.浏览器本身没有数据库7.假设你要记录“一个xx年xx月xx日xx时,我在操场跑步(或者其他的xx类似事件)”这个时间信息的话,对应的的txt文档就是一个数据库。没有数据库计算器你可以忽略这一条了。
web前端,客户端、服务端。数据库是人们日常工作中常用的解决问题的方式。人们从在浏览器中输入url(/)到主动连接到数据库开始下载数据库相关数据。就是从浏览器服务器到数据库。
客户端的原生接口请求到底接口,
我觉得网页上涉及到数据库的主要是以下几点:
1、读写文件
2、搜索引擎
3、打开网页
4、人在浏览器里输入网址
5、搜索引擎出来网页
6、如果是在网页浏览器里输入网址(或者其他方式)返回的可能是静态网页,也就是一个预编译好的网页,一般由html和javascript这两类文件组成;动态网页就是根据你的数据库以及html结构,本身能定义好的格式发送给浏览器服务器,浏览器服务器直接输出这个网页,
7、请求数据库的逻辑实现,特别是对于单一不连接的请求来说,应该是数据库链接;对于拥有多个不连接的请求来说,应该考虑权限等情况,
8、javascript的使用,一般采用cgi模式不是很容易碰到数据库,除非是复杂点的,
9、上面说的有部分含糊,但是总体上,
php curl抓取网页指定内容(做过_get_contents与curl效率及稳定性详细分析介绍)
网站优化 • 优采云 发表了文章 • 0 个评论 • 58 次浏览 • 2021-11-13 20:02
本文文章是对file_get_contents和curl的效率和稳定性的详细分析和介绍。有需要的朋友可以参考
我做过很多抓取其他网站内容的产品,习惯了方便快捷的file_get_contents功能,但总是遇到获取失败的问题。虽然按照手册中的例子设置了超时时间,但大多数时候它不会起作用:
复制代码代码如下:
$config['context'] = stream_context_create(array('http' => array('method' => “GET”,
'timeout' => 5//这个超时时间不稳定,经常不起作用
)
));
这时候再看服务器的连接池,会发现一堆类似的错误,让你头疼:
file_get_contents(***): 无法打开流...
作为最后的手段,我安装了 curl 库并编写了一个函数替换:
复制代码代码如下:
函数 curl_file_get_contents($durl){
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL,$durl);
curl_setopt($ch, CURLOPT_TIMEOUT,5);
curl_setopt($ch, CURLOPT_USERAGENT, _USERAGENT_);
curl_setopt($ch, CURLOPT_REFERER,_REFERER_);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$r=curl_exec($ch);
curl_close($ch);
返回$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
是不是差距很大?哈哈,根据我的经验,这两个工具不仅速度不同,稳定性也不同。推荐对网络数据抓取稳定性要求高的朋友使用上面的curl_file_get_contents函数,不仅稳定快速,还能假冒浏览器欺骗目标地址!
以上就是分析file_get_contents和curl的效率和稳定性的详细内容。更多详情请关注其他相关html中文网站文章! 查看全部
php curl抓取网页指定内容(做过_get_contents与curl效率及稳定性详细分析介绍)
本文文章是对file_get_contents和curl的效率和稳定性的详细分析和介绍。有需要的朋友可以参考
我做过很多抓取其他网站内容的产品,习惯了方便快捷的file_get_contents功能,但总是遇到获取失败的问题。虽然按照手册中的例子设置了超时时间,但大多数时候它不会起作用:
复制代码代码如下:
$config['context'] = stream_context_create(array('http' => array('method' => “GET”,
'timeout' => 5//这个超时时间不稳定,经常不起作用
)
));
这时候再看服务器的连接池,会发现一堆类似的错误,让你头疼:
file_get_contents(***): 无法打开流...
作为最后的手段,我安装了 curl 库并编写了一个函数替换:
复制代码代码如下:
函数 curl_file_get_contents($durl){
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL,$durl);
curl_setopt($ch, CURLOPT_TIMEOUT,5);
curl_setopt($ch, CURLOPT_USERAGENT, _USERAGENT_);
curl_setopt($ch, CURLOPT_REFERER,_REFERER_);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$r=curl_exec($ch);
curl_close($ch);
返回$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
是不是差距很大?哈哈,根据我的经验,这两个工具不仅速度不同,稳定性也不同。推荐对网络数据抓取稳定性要求高的朋友使用上面的curl_file_get_contents函数,不仅稳定快速,还能假冒浏览器欺骗目标地址!
以上就是分析file_get_contents和curl的效率和稳定性的详细内容。更多详情请关注其他相关html中文网站文章!
php curl抓取网页指定内容(一下PHP中的curl扩展(一)_curl和libcurl简介)
网站优化 • 优采云 发表了文章 • 0 个评论 • 55 次浏览 • 2021-11-13 01:11
本文章主要介绍了在PHP中使用curl的入门教程。这篇文章讲解了curl的概述,curl的安装,在PHP中使用curl的步骤,一个简单的curl代码示例等,有需要的朋友可以参考以下
概述
在我上一篇文章《curl和libcurl介绍》中,简单给大家介绍了curl相关知识。这个 文章 向您介绍了 PHP 中的 curl 扩展。
虽然在上一篇文章中对curl和libcurl进行了区分,也解释了一些相关的概念。同时我也知道PHP中的curl扩展其实就是libcurl的一个包。不过在本文章中,为了书写方便,我们将不再区分这两个概念。所以,文章接下来提到的curl其实是指libcurl。绕来绕去迷茫。
关于PHP中的curl扩展,这里就不过多介绍了,大家可以查看文档。
安装卷曲
关于curl的安装,这里就不过多介绍了。windows和linux的进程是一样的。根据平台选择相应的安装方式,然后打开php.ini文件中的curl扩展,其他扩展的安装也是一样的。
在 PHP 中使用 curl 的步骤
在PHP中,curl可以完成各种功能,比如爬取网页、上传/下载文件、模拟登录等。但是这些功能的实现都是基于四步来完成的,所以curl的使用并不复杂。
使用curl时,主要分为以下四个步骤:
1.初始化一个curl实例-curl_init()
2.curl 执行时设置相关选项-curl_setopt()
3.执行 curl query-curl_exec()
4.关闭卷曲--curl_close()
这四步中,1、3、4步很简单。最麻烦的是第2步,这一步是设置curl选项,有100多个不同的选项,要完成不同的功能,就要结合这些选项。
下面是对这四个步骤的解释:
1.初始化一个curl实例,这一步用到了curl_init()函数,查看php手册,可以看到该函数的返回值是一个资源(resource)类型,我们需要使用一个变量来保存这个实例,因为后面的步骤会用到这个实例。具体代码示例:
复制代码代码如下:
$curl=curl_init(); //输出资源(2, curl)
2. 设置curl相关选项,使用curl_setopt()函数设置curl选项。该函数接受三个参数:第一个参数是要设置的curl的实例,也就是第一步中的实例,第二个参数要设置的选项是一个预定义的常量。具体选项有哪些?您可以在手册中查看。第三个参数是要设置的选项的具体值。
代码示例:
复制代码代码如下:
curl_setopt ($curl, CURLOPT_URL, "");
3.执行curl查询,这一步用到了curl_exec()函数。该函数接受一个参数,该参数也是步骤 1 中获取的实例。
代码示例:
复制代码代码如下:
curl_exec ($curl);
4.关闭当前curl,这一步使用curl_close()函数。该函数还接受步骤 1 中获得的 curl 实例作为参数。
代码示例:
复制代码代码如下:
curl_close($curl);
PHP中curl的使用一般遵循这四个步骤,其中不同的功能主要是通过2个步骤的不同设置来完成的,所以第二个步骤是最麻烦的,有的甚至需要你仔细理解。
一个简单的 curl 代码示例
我已经向您介绍了使用 curl 的四个步骤。下面简单演示一个抓取网页内容的例子。代码很简单,但希望能帮助大家更好地理解curl。 查看全部
php curl抓取网页指定内容(一下PHP中的curl扩展(一)_curl和libcurl简介)
本文章主要介绍了在PHP中使用curl的入门教程。这篇文章讲解了curl的概述,curl的安装,在PHP中使用curl的步骤,一个简单的curl代码示例等,有需要的朋友可以参考以下
概述
在我上一篇文章《curl和libcurl介绍》中,简单给大家介绍了curl相关知识。这个 文章 向您介绍了 PHP 中的 curl 扩展。
虽然在上一篇文章中对curl和libcurl进行了区分,也解释了一些相关的概念。同时我也知道PHP中的curl扩展其实就是libcurl的一个包。不过在本文章中,为了书写方便,我们将不再区分这两个概念。所以,文章接下来提到的curl其实是指libcurl。绕来绕去迷茫。
关于PHP中的curl扩展,这里就不过多介绍了,大家可以查看文档。
安装卷曲
关于curl的安装,这里就不过多介绍了。windows和linux的进程是一样的。根据平台选择相应的安装方式,然后打开php.ini文件中的curl扩展,其他扩展的安装也是一样的。
在 PHP 中使用 curl 的步骤
在PHP中,curl可以完成各种功能,比如爬取网页、上传/下载文件、模拟登录等。但是这些功能的实现都是基于四步来完成的,所以curl的使用并不复杂。
使用curl时,主要分为以下四个步骤:
1.初始化一个curl实例-curl_init()
2.curl 执行时设置相关选项-curl_setopt()
3.执行 curl query-curl_exec()
4.关闭卷曲--curl_close()
这四步中,1、3、4步很简单。最麻烦的是第2步,这一步是设置curl选项,有100多个不同的选项,要完成不同的功能,就要结合这些选项。
下面是对这四个步骤的解释:
1.初始化一个curl实例,这一步用到了curl_init()函数,查看php手册,可以看到该函数的返回值是一个资源(resource)类型,我们需要使用一个变量来保存这个实例,因为后面的步骤会用到这个实例。具体代码示例:
复制代码代码如下:
$curl=curl_init(); //输出资源(2, curl)
2. 设置curl相关选项,使用curl_setopt()函数设置curl选项。该函数接受三个参数:第一个参数是要设置的curl的实例,也就是第一步中的实例,第二个参数要设置的选项是一个预定义的常量。具体选项有哪些?您可以在手册中查看。第三个参数是要设置的选项的具体值。
代码示例:
复制代码代码如下:
curl_setopt ($curl, CURLOPT_URL, "");
3.执行curl查询,这一步用到了curl_exec()函数。该函数接受一个参数,该参数也是步骤 1 中获取的实例。
代码示例:
复制代码代码如下:
curl_exec ($curl);
4.关闭当前curl,这一步使用curl_close()函数。该函数还接受步骤 1 中获得的 curl 实例作为参数。
代码示例:
复制代码代码如下:
curl_close($curl);
PHP中curl的使用一般遵循这四个步骤,其中不同的功能主要是通过2个步骤的不同设置来完成的,所以第二个步骤是最麻烦的,有的甚至需要你仔细理解。
一个简单的 curl 代码示例
我已经向您介绍了使用 curl 的四个步骤。下面简单演示一个抓取网页内容的例子。代码很简单,但希望能帮助大家更好地理解curl。
php curl抓取网页指定内容(cURL实战来源:PHP中的数据传输神器-慕课网 )
网站优化 • 优采云 发表了文章 • 0 个评论 • 47 次浏览 • 2021-11-12 23:10
)
cURL的实际来源:PHP-MU类网中的数据传输神器cURL()
破碎的想法:
这部分知识没学好,需要练习。 FTP服务器也没有设置。
cURL 官方文档:
cURL 实战:
test1(1)使用curl做一个简单的网络爬虫
(2)使用curl抓取网页信息并替换部分内容
%s
','北京');
$curlobj = curl_init();
curl_setopt($curlobj, CURLOPT_URL, "http://www.webxml.com.cn/WebSe ... 6quot;);
curl_setopt($curlobj, CURLOPT_POST, 1);
curl_setopt($curlobj, CURLOPT_HEADER, 0);
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlobj, CURLOPT_POSTFIELDS, $data);
curl_setopt($curlobj, CURLOPT_HTTPHEADER, array("Content-Type: application/soap+xml; charset=utf-8",
"Content-length: ".strlen($data),
"SOAPAction:\"http://WebXml.com.cn/getWeatherbyCityName\""));
$rtn = curl_exec($curlobj);
if(!curl_errno($curlobj)){
$info = curl_getinfo($curlobj);
print_r($info);
echo "RETURN: " . $rtn;
} else {
echo 'Curl error: ' . curl_error($curlobj);
}
curl_close($curlobj);
结果:
test3(1)登录CSDN下载我的博客页面
(2)页面链接跳转抓取的自定义实现
<p> 查看全部
php curl抓取网页指定内容(cURL实战来源:PHP中的数据传输神器-慕课网
)
cURL的实际来源:PHP-MU类网中的数据传输神器cURL()

破碎的想法:
这部分知识没学好,需要练习。 FTP服务器也没有设置。
cURL 官方文档:
cURL 实战:
test1(1)使用curl做一个简单的网络爬虫
(2)使用curl抓取网页信息并替换部分内容
%s
','北京');
$curlobj = curl_init();
curl_setopt($curlobj, CURLOPT_URL, "http://www.webxml.com.cn/WebSe ... 6quot;);
curl_setopt($curlobj, CURLOPT_POST, 1);
curl_setopt($curlobj, CURLOPT_HEADER, 0);
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlobj, CURLOPT_POSTFIELDS, $data);
curl_setopt($curlobj, CURLOPT_HTTPHEADER, array("Content-Type: application/soap+xml; charset=utf-8",
"Content-length: ".strlen($data),
"SOAPAction:\"http://WebXml.com.cn/getWeatherbyCityName\""));
$rtn = curl_exec($curlobj);
if(!curl_errno($curlobj)){
$info = curl_getinfo($curlobj);
print_r($info);
echo "RETURN: " . $rtn;
} else {
echo 'Curl error: ' . curl_error($curlobj);
}
curl_close($curlobj);
结果:

test3(1)登录CSDN下载我的博客页面
(2)页面链接跳转抓取的自定义实现
<p>
php curl抓取网页指定内容(PHP外部资源函数fopen/file_get_contents好很多)
网站优化 • 优采云 发表了文章 • 0 个评论 • 57 次浏览 • 2021-11-11 04:06
1、fopen的使用
复制代码代码如下:
复制代码代码如下:
// 以下代码可用于 PHP 5 及更高版本
但是上面的代码很容易出现打开流失败:HTTP request failed!错误,解决方法
有人说在php.ini中,有两个选项:allow_url_fopen = on(代表可以通过url打开远程文件),user_agent="PHP"(代表通过哪个脚本访问网络,默认有“ ;" 在它前面。是的。)重新启动服务器。
但有些人仍然有这个警告信息。想要完美解决,还是一步之遥。您必须在 php.ini 中设置 user_agent。php 的默认 user_agent 是 PHP。我们把它改成 Mozilla/4.0 (compatible ; MSIE 6.0; Windows NT 5.0) 来模拟浏览器
<IMG src="/upload/201106/20110606090106493.gif" border=0>
user_agent="Mozilla/4.0(兼容;MSIE 6.0;Windows NT 5.0)”
我在工作中遇到了这个问题,并完美解决了,所以分享给大家。
2、由 curl 实现
复制代码代码如下:
linux下可以使用以下代码下载
exec("wget {$url}");
PHP中fopen/file_get_contents/curl抓取外部资源的区别
fopen / file_get_contents 会对每一个请求重新做DNS查询,DNS信息不会被缓存。
但是 CURL 会自动缓存 DNS 信息。请求同域名下的网页或图片,只需要进行一次DNS查询。
这大大减少了 DNS 查询的数量。
所以CURL的性能要比fopen/file_get_contents好很多。 查看全部
php curl抓取网页指定内容(PHP外部资源函数fopen/file_get_contents好很多)
1、fopen的使用
复制代码代码如下:
复制代码代码如下:
// 以下代码可用于 PHP 5 及更高版本
但是上面的代码很容易出现打开流失败:HTTP request failed!错误,解决方法
有人说在php.ini中,有两个选项:allow_url_fopen = on(代表可以通过url打开远程文件),user_agent="PHP"(代表通过哪个脚本访问网络,默认有“ ;" 在它前面。是的。)重新启动服务器。
但有些人仍然有这个警告信息。想要完美解决,还是一步之遥。您必须在 php.ini 中设置 user_agent。php 的默认 user_agent 是 PHP。我们把它改成 Mozilla/4.0 (compatible ; MSIE 6.0; Windows NT 5.0) 来模拟浏览器
<IMG src="/upload/201106/20110606090106493.gif" border=0>
user_agent="Mozilla/4.0(兼容;MSIE 6.0;Windows NT 5.0)”
我在工作中遇到了这个问题,并完美解决了,所以分享给大家。
2、由 curl 实现
复制代码代码如下:
linux下可以使用以下代码下载
exec("wget {$url}");
PHP中fopen/file_get_contents/curl抓取外部资源的区别
fopen / file_get_contents 会对每一个请求重新做DNS查询,DNS信息不会被缓存。
但是 CURL 会自动缓存 DNS 信息。请求同域名下的网页或图片,只需要进行一次DNS查询。
这大大减少了 DNS 查询的数量。
所以CURL的性能要比fopen/file_get_contents好很多。
php curl抓取网页指定内容( PHP的curl()使用总结及使用的使用)
网站优化 • 优采云 发表了文章 • 0 个评论 • 60 次浏览 • 2021-11-09 23:17
PHP的curl()使用总结及使用的使用)
PHP模拟登录并获取数据
CURL 是一个强大的 PHP 库。使用PHP的cURL库可以轻松有效地抓取网页和采集内容,设置cookies来完成模拟登录网页,curl提供了丰富的功能,开发者可以从PHP手册中获取更多关于cURL的信息。本文以模拟登录开源中国(oschina)为例,与大家分享cURL的使用。
PHP的curl()在抓取网页的效率上比较高,并且支持多线程,而file_get_contents()效率稍低。当然,使用curl时需要开启curl扩展。
代码实战
我们先来看看登录部分的代码:
//模拟登录 <br />function login_post($url, $cookie, $post) { <br /> $curl = curl_init();//初始化curl模块 <br /> curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址 <br /> curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息 <br /> curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息 <br /> curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中 <br /> curl_setopt($curl, CURLOPT_POST, 1);//post方式提交 <br /> curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息 <br /> curl_exec($curl);//执行cURL <br /> curl_close($curl);//关闭cURL资源,并且释放系统资源 <br />} <br />
函数login_post()首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的URL地址、保存的cookie文件、post数据(用户名和密码等)、返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 自带的 http_build_query() 可以将数组转换为串联字符串。
接下来,如果登录成功,我们需要获取登录成功后的页面信息。
//登录成功后获取数据 <br />function get_content($url, $cookie) { <br /> $ch = curl_init(); <br /> curl_setopt($ch, CURLOPT_URL, $url); <br /> curl_setopt($ch, CURLOPT_HEADER, 0); <br /> curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); <br /> curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie <br /> $rs = curl_exec($ch); //执行cURL抓取页面内容 <br /> curl_close($ch); <br /> return $rs; <br />} <br />
函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们设置CURLOPT_RETURNTRANSFER为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
我们的最终目标是获取模拟登录后的信息,即只有正常登录成功才能获取的有用信息。接下来我们以开源中国移动版为例,看看登录成功后如何抓取信息。
//设置post的数据 <br />$post = array ( <br /> 'email' => 'oschina账户', <br /> 'pwd' => 'oschina密码', <br /> 'goto_page' => '/my', <br /> 'error_page' => '/login', <br /> 'save_login' => '1', <br /> 'submit' => '现在登录' <br />); <br /> <br />//登录地址 <br />$url = "http://m.oschina.net/action/user/login"; <br />//设置cookie保存路径 <br />$cookie = dirname(__FILE__) . '/cookie_oschina.txt'; <br />//登录后要获取信息的地址 <br />$url2 = "http://m.oschina.net/my"; <br />//模拟登录 <br />login_post($url, $cookie, $post); <br />//获取登录页的信息 <br />$content = get_content($url2, $cookie); <br />//删除cookie文件 <br />@ unlink($cookie); <br />//匹配页面信息 <br />$preg = "/(.*)/i"; <br />preg_match_all($preg, $content, $arr); <br />$str = $arr[1][0]; <br />//输出内容 <br />echo $str; <br />
运行上面的代码后,我们会看到最终得到了登录用户的头像。
使用总结
1、初始化curl;
2、使用curl_setopt设置目标url,以及其他选项;
3、curl_exec,执行curl;
4、 执行后关闭curl;
5、 输出数据。
参考
《php中curl和curl介绍》,作者不详,
“使用 PHP CURL 发布数据”,作者:Veda,
《php使用curl模拟登录discuz,模拟发帖》,作者:tianxin,
免责声明:本文为原创文章,版权归作者所有。如需转载,请注明出处并保留原文链接: 查看全部
php curl抓取网页指定内容(
PHP的curl()使用总结及使用的使用)
PHP模拟登录并获取数据
CURL 是一个强大的 PHP 库。使用PHP的cURL库可以轻松有效地抓取网页和采集内容,设置cookies来完成模拟登录网页,curl提供了丰富的功能,开发者可以从PHP手册中获取更多关于cURL的信息。本文以模拟登录开源中国(oschina)为例,与大家分享cURL的使用。
PHP的curl()在抓取网页的效率上比较高,并且支持多线程,而file_get_contents()效率稍低。当然,使用curl时需要开启curl扩展。
代码实战
我们先来看看登录部分的代码:
//模拟登录 <br />function login_post($url, $cookie, $post) { <br /> $curl = curl_init();//初始化curl模块 <br /> curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址 <br /> curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息 <br /> curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息 <br /> curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中 <br /> curl_setopt($curl, CURLOPT_POST, 1);//post方式提交 <br /> curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息 <br /> curl_exec($curl);//执行cURL <br /> curl_close($curl);//关闭cURL资源,并且释放系统资源 <br />} <br />
函数login_post()首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的URL地址、保存的cookie文件、post数据(用户名和密码等)、返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 自带的 http_build_query() 可以将数组转换为串联字符串。
接下来,如果登录成功,我们需要获取登录成功后的页面信息。
//登录成功后获取数据 <br />function get_content($url, $cookie) { <br /> $ch = curl_init(); <br /> curl_setopt($ch, CURLOPT_URL, $url); <br /> curl_setopt($ch, CURLOPT_HEADER, 0); <br /> curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); <br /> curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie <br /> $rs = curl_exec($ch); //执行cURL抓取页面内容 <br /> curl_close($ch); <br /> return $rs; <br />} <br />
函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们设置CURLOPT_RETURNTRANSFER为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
我们的最终目标是获取模拟登录后的信息,即只有正常登录成功才能获取的有用信息。接下来我们以开源中国移动版为例,看看登录成功后如何抓取信息。
//设置post的数据 <br />$post = array ( <br /> 'email' => 'oschina账户', <br /> 'pwd' => 'oschina密码', <br /> 'goto_page' => '/my', <br /> 'error_page' => '/login', <br /> 'save_login' => '1', <br /> 'submit' => '现在登录' <br />); <br /> <br />//登录地址 <br />$url = "http://m.oschina.net/action/user/login"; <br />//设置cookie保存路径 <br />$cookie = dirname(__FILE__) . '/cookie_oschina.txt'; <br />//登录后要获取信息的地址 <br />$url2 = "http://m.oschina.net/my"; <br />//模拟登录 <br />login_post($url, $cookie, $post); <br />//获取登录页的信息 <br />$content = get_content($url2, $cookie); <br />//删除cookie文件 <br />@ unlink($cookie); <br />//匹配页面信息 <br />$preg = "/(.*)/i"; <br />preg_match_all($preg, $content, $arr); <br />$str = $arr[1][0]; <br />//输出内容 <br />echo $str; <br />
运行上面的代码后,我们会看到最终得到了登录用户的头像。

使用总结
1、初始化curl;
2、使用curl_setopt设置目标url,以及其他选项;
3、curl_exec,执行curl;
4、 执行后关闭curl;
5、 输出数据。
参考
《php中curl和curl介绍》,作者不详,
“使用 PHP CURL 发布数据”,作者:Veda,
《php使用curl模拟登录discuz,模拟发帖》,作者:tianxin,
免责声明:本文为原创文章,版权归作者所有。如需转载,请注明出处并保留原文链接:
php curl抓取网页指定内容(小程序里面的链接使用navigator组件在html中的应用)
网站优化 • 优采云 发表了文章 • 0 个评论 • 53 次浏览 • 2021-11-08 23:03
本文文章将详细讲解从小程序外部跳转到指定小程序页面_小程序页面获取链接的方法。我觉得很实用,所以分享给大家作为参考,希望大家看完这篇文章后,能有所收获。
小程序中的链接使用了navigator组件
在html中使用标签,一个标签可以链接到网络中的任何地址
小程序中的导航器只能应用于当前小程序中的链接跳转
跳转A
跳转B
第一个无效
第二个可以正确跳转,需要注意的是:url中的页面不能是tabBar(底部菜单)中的页面
但是可以通过open-type属性设置
重定向属性,打开新页面时,关闭原页面(在新页面上,不能再返回原页面)
跳转
跳转和传递参数时(不带引号,会自动加双引号,否则会出现多个引号,所以直接写:id=111&name=张三):
跳转
通过onLoad事件获取url参数,加载本页面时自动将参数放入页面
跳转
跳转
Page({
data: {
},
onLoad : function(datas) {
console.log(datas);
}
})
点击链接1,data的值为{id: "111", name: "张三"},点击链接2,data的值为{id: "123", name: "小明"}
hover-class 是点击后的样式
wx.navigateTo
这个Api也可以完成页面跳转,和navigator一样(没有redirect属性)
跳转
navigator : function() {
wx.navigateTo({
url: 'test/t?id=100&user=xiaoming',
success : function(e) {
console.log(e.errMsg);
}
})
}
wx.redirectTo
这个Api也可以完成页面跳转,和navigator一样(带redirect属性),操作和上面一样
wx.navigateBack
这个Api是用来返回的,从当前页面到上层页面(根据下面的参数)
Page({
data: {
},
back : function() {
wx.navigateBack({
delta : 1 // 值为1, 则是返回上一级, 值为2就返回上两级...
})
}
})
如果dellta的值为1,可以省略dellta属性:wx.navigateBack(())
如果delta的值超过它可以返回的总层数,它会返回首页
关于从小程序外部跳转到指定小程序页面_小程序页面获取链接的方法,希望以上内容可以对大家有所帮助,大家多多学习。如果你觉得文章不错,可以分享给更多人看。 查看全部
php curl抓取网页指定内容(小程序里面的链接使用navigator组件在html中的应用)
本文文章将详细讲解从小程序外部跳转到指定小程序页面_小程序页面获取链接的方法。我觉得很实用,所以分享给大家作为参考,希望大家看完这篇文章后,能有所收获。
小程序中的链接使用了navigator组件
在html中使用标签,一个标签可以链接到网络中的任何地址
小程序中的导航器只能应用于当前小程序中的链接跳转
跳转A
跳转B
第一个无效
第二个可以正确跳转,需要注意的是:url中的页面不能是tabBar(底部菜单)中的页面
但是可以通过open-type属性设置
重定向属性,打开新页面时,关闭原页面(在新页面上,不能再返回原页面)
跳转
跳转和传递参数时(不带引号,会自动加双引号,否则会出现多个引号,所以直接写:id=111&name=张三):
跳转
通过onLoad事件获取url参数,加载本页面时自动将参数放入页面
跳转
跳转
Page({
data: {
},
onLoad : function(datas) {
console.log(datas);
}
})
点击链接1,data的值为{id: "111", name: "张三"},点击链接2,data的值为{id: "123", name: "小明"}
hover-class 是点击后的样式
wx.navigateTo
这个Api也可以完成页面跳转,和navigator一样(没有redirect属性)
跳转
navigator : function() {
wx.navigateTo({
url: 'test/t?id=100&user=xiaoming',
success : function(e) {
console.log(e.errMsg);
}
})
}
wx.redirectTo
这个Api也可以完成页面跳转,和navigator一样(带redirect属性),操作和上面一样
wx.navigateBack
这个Api是用来返回的,从当前页面到上层页面(根据下面的参数)
Page({
data: {
},
back : function() {
wx.navigateBack({
delta : 1 // 值为1, 则是返回上一级, 值为2就返回上两级...
})
}
})
如果dellta的值为1,可以省略dellta属性:wx.navigateBack(())
如果delta的值超过它可以返回的总层数,它会返回首页
关于从小程序外部跳转到指定小程序页面_小程序页面获取链接的方法,希望以上内容可以对大家有所帮助,大家多多学习。如果你觉得文章不错,可以分享给更多人看。
php curl抓取网页指定内容(phpcurl抓取网页指定内容抓取web中所有的的script标签)
网站优化 • 优采云 发表了文章 • 0 个评论 • 48 次浏览 • 2021-11-05 14:01
phpcurl抓取网页指定内容抓取web中所有的script标签:$。cookie_url=curl_get_script(cookie_url,'www。');$。cookie_from_url=curl_get_script(cookie_url,'/');echo$。cookie_from_url;复制代码:。
google-siteadd
1.通过网页的script标签来抓取html页面;2.xpath方式提取页面内容,
你说的是用于打开html页面的抓取工具吗?正是这个提供抓取规则的script标签才是使用的主角,看到你有一句半句的描述,估计是你想抓取页面标签内容,那么正确做法是一边抓一边爬,你说的内容应该是抓到后返回给curl,curl解析后返回给浏览器我在一篇文章上看到的抓取方法:)基于restful的http调用机制学习。
看一下这个:超简单的网站收藏夹抓取方法httpwebsocketwebsocket总结和使用方法一般可以抓取全部网页的,但是使用的时候要记得分开抓,否则一个网页会有很多抓取代码。
baiduwebsocket
我在windows下用的是/这个,好像一个浏览器可以抓一个。
netbeans本地抓取
我有php/python/java的httprestful客户端,其实用googlechrome开浏览器的rest接口抓过去也挺好用的。 查看全部
php curl抓取网页指定内容(phpcurl抓取网页指定内容抓取web中所有的的script标签)
phpcurl抓取网页指定内容抓取web中所有的script标签:$。cookie_url=curl_get_script(cookie_url,'www。');$。cookie_from_url=curl_get_script(cookie_url,'/');echo$。cookie_from_url;复制代码:。
google-siteadd
1.通过网页的script标签来抓取html页面;2.xpath方式提取页面内容,
你说的是用于打开html页面的抓取工具吗?正是这个提供抓取规则的script标签才是使用的主角,看到你有一句半句的描述,估计是你想抓取页面标签内容,那么正确做法是一边抓一边爬,你说的内容应该是抓到后返回给curl,curl解析后返回给浏览器我在一篇文章上看到的抓取方法:)基于restful的http调用机制学习。
看一下这个:超简单的网站收藏夹抓取方法httpwebsocketwebsocket总结和使用方法一般可以抓取全部网页的,但是使用的时候要记得分开抓,否则一个网页会有很多抓取代码。
baiduwebsocket
我在windows下用的是/这个,好像一个浏览器可以抓一个。
netbeans本地抓取
我有php/python/java的httprestful客户端,其实用googlechrome开浏览器的rest接口抓过去也挺好用的。
php curl抓取网页指定内容(phpcurl抓取网页指定内容(知乎,facebook,)安装)
网站优化 • 优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2021-11-01 15:27
phpcurl抓取网页指定内容(知乎,facebook,twitter)安装curl:$curl--version进入curl命令行模式,$curl--nameurl注意name,curl指定的网址需要换成你自己的网址(你自己是需要加标签表示你浏览器的地址)执行抓取指定内容:curl-print选中要抓取的内容,例如要抓取:-print-url-to-curl输出的结果会包含标签(不同的浏览器标记方式不同)注意pythonrequests库也有抓取网页的命令curl_request库抓取文章或博客的页面:$curl--filehello。
pypythonrequests抓取文章或博客的页面:$curl_request--file[url]-t[options]。xml[output]但是。xml格式不稳定$curl_request_encoding参数可以是"utf-8"%curl_request_decoding参数可以是"utf-8"选择指定的编码方式,例如:%curl_request_utf8="gbk"%curl_request_utf8="gb2312"%curl_request_utf8="json"--user-agent%curl_request_user-agent="mozilla/5。
0(compatible;)applewebkit/537。36(khtml,likegecko)chrome/62。3343。93safari/537。36"%curl_request_agent="mozilla/5。0(compatible;)applewebkit/537。36(khtml,likegecko)chrome/61。
2402。106safari/537。36">(注意一定要指定编码方式,推荐用json格式;选择默认编码选项有问题)抓取指定的文章:$curl_request_encoding="utf-8"%curl_request_decoding参数可以是"utf-8"%$curl_request_encoding:"gbk"%$curl_request_decoding:"json"$curl_request_encoding表示的编码方式(例如:%curl_request_encoding="gbk"%curl_request_decoding:"json"%)但是。
xml格式不稳定$curl_request_encoding="utf-8"%curl_request_decoding选择指定的编码方式,例如:%curl_request_encoding="gbk"%$curl_request_decoding:"json"$curl_request_decoding:"content-type">%curl_request_encoding="gbk"%$curl_request_decoding:"json"抓取指定的时间(暂不清楚为何只有20分钟才能抓取):$curl_request_timeout=20元数据就是要抓取的内容,php框架自带,curl调用curl_request函数抓取后缀相同的元数据文件,后缀相同一般就是分类页面,例如:,返回一个字符串page_title,这个字符。 查看全部
php curl抓取网页指定内容(phpcurl抓取网页指定内容(知乎,facebook,)安装)
phpcurl抓取网页指定内容(知乎,facebook,twitter)安装curl:$curl--version进入curl命令行模式,$curl--nameurl注意name,curl指定的网址需要换成你自己的网址(你自己是需要加标签表示你浏览器的地址)执行抓取指定内容:curl-print选中要抓取的内容,例如要抓取:-print-url-to-curl输出的结果会包含标签(不同的浏览器标记方式不同)注意pythonrequests库也有抓取网页的命令curl_request库抓取文章或博客的页面:$curl--filehello。
pypythonrequests抓取文章或博客的页面:$curl_request--file[url]-t[options]。xml[output]但是。xml格式不稳定$curl_request_encoding参数可以是"utf-8"%curl_request_decoding参数可以是"utf-8"选择指定的编码方式,例如:%curl_request_utf8="gbk"%curl_request_utf8="gb2312"%curl_request_utf8="json"--user-agent%curl_request_user-agent="mozilla/5。
0(compatible;)applewebkit/537。36(khtml,likegecko)chrome/62。3343。93safari/537。36"%curl_request_agent="mozilla/5。0(compatible;)applewebkit/537。36(khtml,likegecko)chrome/61。
2402。106safari/537。36">(注意一定要指定编码方式,推荐用json格式;选择默认编码选项有问题)抓取指定的文章:$curl_request_encoding="utf-8"%curl_request_decoding参数可以是"utf-8"%$curl_request_encoding:"gbk"%$curl_request_decoding:"json"$curl_request_encoding表示的编码方式(例如:%curl_request_encoding="gbk"%curl_request_decoding:"json"%)但是。
xml格式不稳定$curl_request_encoding="utf-8"%curl_request_decoding选择指定的编码方式,例如:%curl_request_encoding="gbk"%$curl_request_decoding:"json"$curl_request_decoding:"content-type">%curl_request_encoding="gbk"%$curl_request_decoding:"json"抓取指定的时间(暂不清楚为何只有20分钟才能抓取):$curl_request_timeout=20元数据就是要抓取的内容,php框架自带,curl调用curl_request函数抓取后缀相同的元数据文件,后缀相同一般就是分类页面,例如:,返回一个字符串page_title,这个字符。
php curl抓取网页指定内容(PHP模拟登录并获取数据_post()使用的总结)
网站优化 • 优采云 发表了文章 • 0 个评论 • 65 次浏览 • 2021-10-29 12:05
PHP模拟登录并获取数据
CURL 是一个强大的 PHP 库。使用PHP的cURL库可以轻松有效地抓取网页和采集内容,设置cookies来完成模拟登录网页,curl提供了丰富的功能,开发者可以从PHP手册中获取更多关于cURL的信息。本文以模拟登录开源中国(oschina)为例,与大家分享cURL的使用。
PHP的curl()在抓取网页的效率上比较高,并且支持多线程,而file_get_contents()的效率稍低。当然,使用curl时需要开启curl扩展。
代码实战
我们先来看看登录部分的代码:
//模拟登录 <br style="margin:0px;padding:0px;">function login_post($url, $cookie, $post) { <br style="margin:0px;padding:0px;">
$curl = curl_init();//初始化curl模块 <br style="margin:0px;padding:0px;">
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址 <br style="margin:0px;padding:0px;">
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息 <br style="margin:0px;padding:0px;">
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息 <br style="margin:0px;padding:0px;">
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中 <br style="margin:0px;padding:0px;">
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交 <br style="margin:0px;padding:0px;">
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息 <br style="margin:0px;padding:0px;">
curl_exec($curl);//执行cURL <br style="margin:0px;padding:0px;">
curl_close($curl);//关闭cURL资源,并且释放系统资源 <br style="margin:0px;padding:0px;">
} <br style="margin:0px;padding:0px;">
login_post()函数首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的URL地址、保存的cookie文件、post数据(用户名密码等信息)、返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 自带的 http_build_query() 可以将数组转换为串联字符串。
接下来,如果登录成功,我们需要获取登录成功后的页面信息。
//登录成功后获取数据 <br style="margin:0px;padding:0px;">function get_content($url, $cookie) { <br style="margin:0px;padding:0px;">
$ch = curl_init(); <br style="margin:0px;padding:0px;">
curl_setopt($ch, CURLOPT_URL, $url); <br style="margin:0px;padding:0px;">
curl_setopt($ch, CURLOPT_HEADER, 0); <br style="margin:0px;padding:0px;">
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); <br style="margin:0px;padding:0px;">
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie <br style="margin:0px;padding:0px;">
$rs = curl_exec($ch); //执行cURL抓取页面内容 <br style="margin:0px;padding:0px;">
curl_close($ch); <br style="margin:0px;padding:0px;">
return $rs; <br style="margin:0px;padding:0px;">
} <br style="margin:0px;padding:0px;">
函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们设置CURLOPT_RETURNTRANSFER为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
我们的最终目标是获取模拟登录后的信息,即只有正常登录成功才能获取的有用信息。接下来我们以开源中国移动版为例,看看登录成功后如何抓取信息。
//设置post的数据 <br style="margin:0px;padding:0px;">$post = array ( <br style="margin:0px;padding:0px;">
'email' => 'oschina账户', <br style="margin:0px;padding:0px;">
'pwd' => 'oschina密码', <br style="margin:0px;padding:0px;">
'goto_page' => '/my', <br style="margin:0px;padding:0px;">
'error_page' => '/login', <br style="margin:0px;padding:0px;">
'save_login' => '1', <br style="margin:0px;padding:0px;">
'submit' => '现在登录' <br style="margin:0px;padding:0px;">
); <br style="margin:0px;padding:0px;">
<br style="margin:0px;padding:0px;">//登录地址 <br style="margin:0px;padding:0px;">$url = "http://m.oschina.net/action/user/login"; <br style="margin:0px;padding:0px;">//设置cookie保存路径 <br style="margin:0px;padding:0px;">$cookie = dirname(__FILE__) . '/cookie_oschina.txt'; <br style="margin:0px;padding:0px;">//登录后要获取信息的地址 <br style="margin:0px;padding:0px;">$url2 = "http://m.oschina.net/my"; <br style="margin:0px;padding:0px;">//模拟登录 <br style="margin:0px;padding:0px;">
login_post($url, $cookie, $post); <br style="margin:0px;padding:0px;">//获取登录页的信息 <br style="margin:0px;padding:0px;">$content = get_content($url2, $cookie); <br style="margin:0px;padding:0px;">//删除cookie文件 <br style="margin:0px;padding:0px;">
@ unlink($cookie); <br style="margin:0px;padding:0px;">//匹配页面信息 <br style="margin:0px;padding:0px;">$preg = "/(.*)/i"; <br style="margin:0px;padding:0px;">
preg_match_all($preg, $content, $arr); <br style="margin:0px;padding:0px;">$str = $arr[1][0]; <br style="margin:0px;padding:0px;">//输出内容 <br style="margin:0px;padding:0px;">echo $str; <br style="margin:0px;padding:0px;">
运行上面的代码后,我们会看到最终得到了登录用户的头像。
使用总结
1、初始化curl;
2、使用curl_setopt设置目标url,以及其他选项;
3、curl_exec,执行curl;
4、 执行后关闭curl;
5、 输出数据。
参考
《php中curl和curl介绍》,作者不详,
“使用 PHP CURL 发布数据”,作者:Veda,
《php使用curl模拟登录discuz,模拟发帖》,作者:tianxin,
免责声明:本文为原创文章,版权归作者所有。如需转载,请注明出处并保留原文链接: 查看全部
php curl抓取网页指定内容(PHP模拟登录并获取数据_post()使用的总结)
PHP模拟登录并获取数据
CURL 是一个强大的 PHP 库。使用PHP的cURL库可以轻松有效地抓取网页和采集内容,设置cookies来完成模拟登录网页,curl提供了丰富的功能,开发者可以从PHP手册中获取更多关于cURL的信息。本文以模拟登录开源中国(oschina)为例,与大家分享cURL的使用。
PHP的curl()在抓取网页的效率上比较高,并且支持多线程,而file_get_contents()的效率稍低。当然,使用curl时需要开启curl扩展。
代码实战
我们先来看看登录部分的代码:
//模拟登录 <br style="margin:0px;padding:0px;">function login_post($url, $cookie, $post) { <br style="margin:0px;padding:0px;">
$curl = curl_init();//初始化curl模块 <br style="margin:0px;padding:0px;">
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址 <br style="margin:0px;padding:0px;">
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息 <br style="margin:0px;padding:0px;">
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息 <br style="margin:0px;padding:0px;">
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中 <br style="margin:0px;padding:0px;">
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交 <br style="margin:0px;padding:0px;">
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息 <br style="margin:0px;padding:0px;">
curl_exec($curl);//执行cURL <br style="margin:0px;padding:0px;">
curl_close($curl);//关闭cURL资源,并且释放系统资源 <br style="margin:0px;padding:0px;">
} <br style="margin:0px;padding:0px;">
login_post()函数首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的URL地址、保存的cookie文件、post数据(用户名密码等信息)、返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 自带的 http_build_query() 可以将数组转换为串联字符串。
接下来,如果登录成功,我们需要获取登录成功后的页面信息。
//登录成功后获取数据 <br style="margin:0px;padding:0px;">function get_content($url, $cookie) { <br style="margin:0px;padding:0px;">
$ch = curl_init(); <br style="margin:0px;padding:0px;">
curl_setopt($ch, CURLOPT_URL, $url); <br style="margin:0px;padding:0px;">
curl_setopt($ch, CURLOPT_HEADER, 0); <br style="margin:0px;padding:0px;">
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); <br style="margin:0px;padding:0px;">
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie <br style="margin:0px;padding:0px;">
$rs = curl_exec($ch); //执行cURL抓取页面内容 <br style="margin:0px;padding:0px;">
curl_close($ch); <br style="margin:0px;padding:0px;">
return $rs; <br style="margin:0px;padding:0px;">
} <br style="margin:0px;padding:0px;">
函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们设置CURLOPT_RETURNTRANSFER为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
我们的最终目标是获取模拟登录后的信息,即只有正常登录成功才能获取的有用信息。接下来我们以开源中国移动版为例,看看登录成功后如何抓取信息。
//设置post的数据 <br style="margin:0px;padding:0px;">$post = array ( <br style="margin:0px;padding:0px;">
'email' => 'oschina账户', <br style="margin:0px;padding:0px;">
'pwd' => 'oschina密码', <br style="margin:0px;padding:0px;">
'goto_page' => '/my', <br style="margin:0px;padding:0px;">
'error_page' => '/login', <br style="margin:0px;padding:0px;">
'save_login' => '1', <br style="margin:0px;padding:0px;">
'submit' => '现在登录' <br style="margin:0px;padding:0px;">
); <br style="margin:0px;padding:0px;">
<br style="margin:0px;padding:0px;">//登录地址 <br style="margin:0px;padding:0px;">$url = "http://m.oschina.net/action/user/login"; <br style="margin:0px;padding:0px;">//设置cookie保存路径 <br style="margin:0px;padding:0px;">$cookie = dirname(__FILE__) . '/cookie_oschina.txt'; <br style="margin:0px;padding:0px;">//登录后要获取信息的地址 <br style="margin:0px;padding:0px;">$url2 = "http://m.oschina.net/my"; <br style="margin:0px;padding:0px;">//模拟登录 <br style="margin:0px;padding:0px;">
login_post($url, $cookie, $post); <br style="margin:0px;padding:0px;">//获取登录页的信息 <br style="margin:0px;padding:0px;">$content = get_content($url2, $cookie); <br style="margin:0px;padding:0px;">//删除cookie文件 <br style="margin:0px;padding:0px;">
@ unlink($cookie); <br style="margin:0px;padding:0px;">//匹配页面信息 <br style="margin:0px;padding:0px;">$preg = "/(.*)/i"; <br style="margin:0px;padding:0px;">
preg_match_all($preg, $content, $arr); <br style="margin:0px;padding:0px;">$str = $arr[1][0]; <br style="margin:0px;padding:0px;">//输出内容 <br style="margin:0px;padding:0px;">echo $str; <br style="margin:0px;padding:0px;">
运行上面的代码后,我们会看到最终得到了登录用户的头像。

使用总结
1、初始化curl;
2、使用curl_setopt设置目标url,以及其他选项;
3、curl_exec,执行curl;
4、 执行后关闭curl;
5、 输出数据。
参考
《php中curl和curl介绍》,作者不详,
“使用 PHP CURL 发布数据”,作者:Veda,
《php使用curl模拟登录discuz,模拟发帖》,作者:tianxin,
免责声明:本文为原创文章,版权归作者所有。如需转载,请注明出处并保留原文链接:
php curl抓取网页指定内容(抓取网页指定内容抓取结果返回请求头,其中accept可不定义)
网站优化 • 优采云 发表了文章 • 0 个评论 • 41 次浏览 • 2021-12-27 19:01
phpcurl抓取网页指定内容字段{phpcurl//处理http请求.request("websocket:4000/",user_agent)}getget方法抓取指定内容内容抓取request_body_data结果返回请求头,其中accept字段可不定义。#!/usr/bin/envphp/***抓取指定内容中指定字段的字符串*@paramaccept*@return*/publicfunctiongetbody_data(stringaccept){if(accept==""||accept==""){returntrue;}returnaccept;}publicfunctiongetbody(stringaccept){if(accept==""||accept==""){returntrue;}returnaccept;}publicfunctiongetbody(stringaccept){if(accept==""||accept==""){returntrue;}returnaccept;}。
先用sqlite数据库转成一个.io的api文件,在该api文件中的http方法中post()接受参数,request()、get()接受返回结果。每个字段的值由accept判断,不要放在字段之前。
谢谢邀请回答,可能是要抓取某些公共资源的某些字段,首先必须要进行解析,使用indexdatasource.parse()方法;select之后看sql语句,若还需要匹配查询(如find_ext_content等),则要用accept方法,否则使用post方法。实例:抓取xxx.php代码:select*fromxxx.xxwhereid='xxx'andname='xxx';accept:'//'request:''post:''data:{'id':3222}accept_text:'[accept-language=en-us]'host:'single-host'path:'xxx.php'}。 查看全部
php curl抓取网页指定内容(抓取网页指定内容抓取结果返回请求头,其中accept可不定义)
phpcurl抓取网页指定内容字段{phpcurl//处理http请求.request("websocket:4000/",user_agent)}getget方法抓取指定内容内容抓取request_body_data结果返回请求头,其中accept字段可不定义。#!/usr/bin/envphp/***抓取指定内容中指定字段的字符串*@paramaccept*@return*/publicfunctiongetbody_data(stringaccept){if(accept==""||accept==""){returntrue;}returnaccept;}publicfunctiongetbody(stringaccept){if(accept==""||accept==""){returntrue;}returnaccept;}publicfunctiongetbody(stringaccept){if(accept==""||accept==""){returntrue;}returnaccept;}。
先用sqlite数据库转成一个.io的api文件,在该api文件中的http方法中post()接受参数,request()、get()接受返回结果。每个字段的值由accept判断,不要放在字段之前。
谢谢邀请回答,可能是要抓取某些公共资源的某些字段,首先必须要进行解析,使用indexdatasource.parse()方法;select之后看sql语句,若还需要匹配查询(如find_ext_content等),则要用accept方法,否则使用post方法。实例:抓取xxx.php代码:select*fromxxx.xxwhereid='xxx'andname='xxx';accept:'//'request:''post:''data:{'id':3222}accept_text:'[accept-language=en-us]'host:'single-host'path:'xxx.php'}。
php curl抓取网页指定内容(私有云的IP,如上图箭头所于成功了吗?(组图) )
网站优化 • 优采云 发表了文章 • 0 个评论 • 61 次浏览 • 2021-12-20 03:18
)
在最近承接的一个项目中,需要使用curl在公有云阿里云中连接甲方的内网(私有云)域名,拉回用户积分等相关数据。方案草图如下,公有云和私有云之间通过专线连接。
问:是私有云中的域名。解析后的IP地址无法从外网访问。BUT解析为外网可访问的IP,所以curl傻傻的连接到这个IP上。
需求:curl("")——网络包发送到-->私有云IP,如上图箭头所示。
设想的解决方案:指定curl的dst主机ip地址
实践一:静态路由
更改/etc/hosts,添加一条记录
10.23.xx.xx
考虑到未来服务器数量的横向扩展,运维人员需要做代码部署以外的工作,很容易让人忘记这些步骤而不采用
实践二:PHP手册
在目前的PHP curl手册中,只能找到下图中的选项来实现相同的功能,但是需要PHP7,项目中使用的是PHP5.6。经过
练习三:思考
1) 记得终端下的curl命令有个--resolve选项可以指定目标IP
2) 我记得PHP接口的底层代码和C语言代码几乎一模一样。我查找了 /usr/include/curl/curl.h 文件并找到了它。
从这个C语言的宏可以看出,--resolve对应的选项常量的名字是CURLOPT_RESOLVE。我找了 PHP curl 文档,但我什至没有看到这个常量的定义。
仍然考虑到PHP接口的底层代码与C语言代码几乎一模一样,推测这个常量在PHP中也是同一个值。PHP文档虽然没有写,但是直接传入这个常识值应该是可以通过的。
编写如下实验代码,测试一下,还是成功了。
问题解决了~
----------------------------------------- 添加另一个方法----- ----------------------------------
该方法将url scheme中的hostname部分替换为目标IP地址,然后在http头中指定Host。
为什么这种方法可行?把它留给聪明的你来锻炼你的思维。
Answer Tips:考虑一下你在Apache/Nginx中是如何配置虚拟主机的,Host部分的作用是什么?
但是,是的,这是大写的。此方法仅对HTTP 100% 成功,对HTTPS 也是如此
嗯,跟证书签名里的主机名不符,太没感觉了,太安全了-->
查看全部
php curl抓取网页指定内容(私有云的IP,如上图箭头所于成功了吗?(组图)
)
在最近承接的一个项目中,需要使用curl在公有云阿里云中连接甲方的内网(私有云)域名,拉回用户积分等相关数据。方案草图如下,公有云和私有云之间通过专线连接。

问:是私有云中的域名。解析后的IP地址无法从外网访问。BUT解析为外网可访问的IP,所以curl傻傻的连接到这个IP上。
需求:curl("")——网络包发送到-->私有云IP,如上图箭头所示。
设想的解决方案:指定curl的dst主机ip地址
实践一:静态路由
更改/etc/hosts,添加一条记录
10.23.xx.xx
考虑到未来服务器数量的横向扩展,运维人员需要做代码部署以外的工作,很容易让人忘记这些步骤而不采用
实践二:PHP手册
在目前的PHP curl手册中,只能找到下图中的选项来实现相同的功能,但是需要PHP7,项目中使用的是PHP5.6。经过

练习三:思考
1) 记得终端下的curl命令有个--resolve选项可以指定目标IP

2) 我记得PHP接口的底层代码和C语言代码几乎一模一样。我查找了 /usr/include/curl/curl.h 文件并找到了它。

从这个C语言的宏可以看出,--resolve对应的选项常量的名字是CURLOPT_RESOLVE。我找了 PHP curl 文档,但我什至没有看到这个常量的定义。
仍然考虑到PHP接口的底层代码与C语言代码几乎一模一样,推测这个常量在PHP中也是同一个值。PHP文档虽然没有写,但是直接传入这个常识值应该是可以通过的。
编写如下实验代码,测试一下,还是成功了。

问题解决了~
----------------------------------------- 添加另一个方法----- ----------------------------------

该方法将url scheme中的hostname部分替换为目标IP地址,然后在http头中指定Host。
为什么这种方法可行?把它留给聪明的你来锻炼你的思维。
Answer Tips:考虑一下你在Apache/Nginx中是如何配置虚拟主机的,Host部分的作用是什么?
但是,是的,这是大写的。此方法仅对HTTP 100% 成功,对HTTPS 也是如此

嗯,跟证书签名里的主机名不符,太没感觉了,太安全了-->

php curl抓取网页指定内容(使用PHP的cURL库可以简单和有效地去抓网页。)
网站优化 • 优采云 发表了文章 • 0 个评论 • 42 次浏览 • 2021-12-19 09:20
使用 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抓取网页指定内容(PHP的curl()设置相关选项信息的使用总结)
网站优化 • 优采云 发表了文章 • 0 个评论 • 76 次浏览 • 2021-12-19 00:19
PHP的curl()在抓取网页的效率上比较高,并且支持多线程,而file_get_contents()的效率稍低。当然,使用curl时需要开启curl扩展。
代码实战
先看登录部分的代码:
//模拟登录
function login_post($url, $cookie, $post) {
$curl = curl_init();//初始化curl模块
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
curl_exec($curl);//执行cURL
curl_close($curl);//关闭cURL资源,并且释放系统资源
}
函数login_post()首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的URL地址,保存的cookie文件,post数据(用户名密码等信息),是否返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 的内置 http_build_query() 可以将数组转换为串联字符串。
接下来,如果登录成功,我们需要获取登录成功后的页面信息。
//登录成功后获取数据
function get_content($url, $cookie) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie
$rs = curl_exec($ch); //执行cURL抓取页面内容
curl_close($ch);
return $rs;
}
函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们设置CURLOPT_RETURNTRANSFER为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
我们的最终目的是获取模拟登录后的信息,即只有正常登录成功才能获取的有用信息。接下来我们以开源中国移动版为例,看看登录成功后如何抓取信息。
//设置post的数据
$post = array (
'email' => 'oschina账户',
'pwd' => 'oschina密码',
'goto_page' => '/my',
'error_page' => '/login',
'save_login' => '1',
'submit' => '现在登录'
);
//登录地址 $url = "http://m.oschina.net/action/user/login"; //设置cookie保存路径 $cookie = dirname(__FILE__) . '/cookie_oschina.txt'; //登录后要获取信息的地址 $url2 = "http://m.oschina.net/my"; //模拟登录
login_post($url, $cookie, $post); //获取登录页的信息 $content = get_content($url2, $cookie); //删除cookie文件
@ unlink($cookie); //匹配页面信息 $preg = "/(.*)/i";
preg_match_all($preg, $content, $arr); $str = $arr[1][0]; //输出内容 echo $str;
使用总结
1、初始化curl;
2、使用curl_setopt设置目标url,以及其他选项;
3、curl_exec,执行curl;
4、 执行后关闭curl;
5、 输出数据。
感谢您的阅读,希望对您有所帮助,感谢您对本站的支持! 查看全部
php curl抓取网页指定内容(PHP的curl()设置相关选项信息的使用总结)
PHP的curl()在抓取网页的效率上比较高,并且支持多线程,而file_get_contents()的效率稍低。当然,使用curl时需要开启curl扩展。
代码实战
先看登录部分的代码:
//模拟登录
function login_post($url, $cookie, $post) {
$curl = curl_init();//初始化curl模块
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
curl_exec($curl);//执行cURL
curl_close($curl);//关闭cURL资源,并且释放系统资源
}
函数login_post()首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的URL地址,保存的cookie文件,post数据(用户名密码等信息),是否返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 的内置 http_build_query() 可以将数组转换为串联字符串。
接下来,如果登录成功,我们需要获取登录成功后的页面信息。
//登录成功后获取数据
function get_content($url, $cookie) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie
$rs = curl_exec($ch); //执行cURL抓取页面内容
curl_close($ch);
return $rs;
}
函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们设置CURLOPT_RETURNTRANSFER为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
我们的最终目的是获取模拟登录后的信息,即只有正常登录成功才能获取的有用信息。接下来我们以开源中国移动版为例,看看登录成功后如何抓取信息。
//设置post的数据
$post = array (
'email' => 'oschina账户',
'pwd' => 'oschina密码',
'goto_page' => '/my',
'error_page' => '/login',
'save_login' => '1',
'submit' => '现在登录'
);
//登录地址 $url = "http://m.oschina.net/action/user/login"; //设置cookie保存路径 $cookie = dirname(__FILE__) . '/cookie_oschina.txt'; //登录后要获取信息的地址 $url2 = "http://m.oschina.net/my"; //模拟登录
login_post($url, $cookie, $post); //获取登录页的信息 $content = get_content($url2, $cookie); //删除cookie文件
@ unlink($cookie); //匹配页面信息 $preg = "/(.*)/i";
preg_match_all($preg, $content, $arr); $str = $arr[1][0]; //输出内容 echo $str;
使用总结
1、初始化curl;
2、使用curl_setopt设置目标url,以及其他选项;
3、curl_exec,执行curl;
4、 执行后关闭curl;
5、 输出数据。
感谢您的阅读,希望对您有所帮助,感谢您对本站的支持!
php curl抓取网页指定内容(phpcurl查看反弹链接用源码从web服务器爬回数据加密)
网站优化 • 优采云 发表了文章 • 0 个评论 • 54 次浏览 • 2021-12-09 07:01
phpcurl抓取网页指定内容,soeasy.//需要php基础。//进程以2s停止,无延迟withupdate('submit')as'post':update('submit')://服务器接受请求发送数据withupdate('accept')as'post':curl_install('post')//配置curl:[postread]='请求网址'//加载爬虫splash:curl_install('submit'):。
wget看api手册里面每一句分析一下就出来了。
f12查看反弹链接
用github源码从web服务器爬回数据加密存在excel里面
抓数据请用fastcgi网络.比如前端http请求,服务器用https协议连接.然后调用strtocache模块从文件读数据。
mysql,windbg,
楼上有人说到了github,实在不行用python的一个bitshare库,restfulapi,完爆sqlite,也不需要sqlite。大概的工作原理是一个restfulapi接口包含一些基本的mvc框架,比如apache或者php。
使用python写一个mysql操作系统,
拿这个向内行吹嘘:必须要了解tcp/ip协议,
楼上说的docker?不过比较bash的,介绍下containers这个api。 查看全部
php curl抓取网页指定内容(phpcurl查看反弹链接用源码从web服务器爬回数据加密)
phpcurl抓取网页指定内容,soeasy.//需要php基础。//进程以2s停止,无延迟withupdate('submit')as'post':update('submit')://服务器接受请求发送数据withupdate('accept')as'post':curl_install('post')//配置curl:[postread]='请求网址'//加载爬虫splash:curl_install('submit'):。
wget看api手册里面每一句分析一下就出来了。
f12查看反弹链接
用github源码从web服务器爬回数据加密存在excel里面
抓数据请用fastcgi网络.比如前端http请求,服务器用https协议连接.然后调用strtocache模块从文件读数据。
mysql,windbg,
楼上有人说到了github,实在不行用python的一个bitshare库,restfulapi,完爆sqlite,也不需要sqlite。大概的工作原理是一个restfulapi接口包含一些基本的mvc框架,比如apache或者php。
使用python写一个mysql操作系统,
拿这个向内行吹嘘:必须要了解tcp/ip协议,
楼上说的docker?不过比较bash的,介绍下containers这个api。
php curl抓取网页指定内容(phpcurl采集页面_html_dom解析,侵删推广)
网站优化 • 优采云 发表了文章 • 0 个评论 • 131 次浏览 • 2021-12-02 11:20
有的人看小说看习惯了,偶尔看几章。都是百度发布的,但基本上都是特别烦人的广告,或者是在整体div上加了链接,误触跳转到某些网站甚至无限循环。一些手机app也有很多广告,所以我可以写一个小程序来避免广告的烦恼。
本文将使用php curl采集页面simple_html_dom进行解析,实现真正去除广告。
随便找一本小说网站找书,但是这个网站在手机上特别棘手,而且存在以上问题:
以这本小说为借口。(免责声明:绝对不是宣传、侵扰)
一、了解curl的get方法
curl是一个命令行工具,通过指定的URL上传或下载数据,并显示数据。curl 中的 c 表示客户端,URL 表示 URL。
PHP中使用cURL实现Get和Post请求方法
只需抓取小说,只需要 get 方法。
以下示例代码是通过get请求获取第一章小说页面html的示例。您只需要更改 url 参数。
初始化、设置选项、证书验证、执行、关闭
评论特别详细。按照步骤发送 curl get 请求。如果是post请求,需要再增加一个设置来设置post选项,并传递参数,最后输出获取到的信息。运行结果如下,没有CSS渲染。
二、 解析页面
输出页面有很多不必要的内容。我们需要从所有的内容中提取我们需要的内容,比如标题和每章的内容。这时候就需要对页面进行解析。
有很多方法可以解析页面。此处使用 simple_html_dom。您需要下载并引用 simple_html_dom.php 类、实例对象,并调用内部方法。具体方法可以在官网查看,也可以在中文网站上查看其他文档。
先分析这个小说页面的源码,看本章标题和内容的对应元素
首先是标题:类书名下的h1下
然后内容:在id为content的div下
Simple_html_dom可以使用find方法,类似于jquery,使用选择器来查找定位元素。喜欢:
find('.bookname h1'); //找到类书名下的h1标题元素
find('#content'); //查找id为content的章节内容
在上面的基础上增加了代码:
include "simple_html_dom.php";
$html = new simple_html_dom();
@$html->load($res);
$h1 = $html->find('.bookname h1');
foreach ($h1 as $k=>$v) {
$artic['title'] = $v->innertext;
}
// 查找小说的具体内容
$divs = $html->find('#content');
foreach ($divs as $k=>$v) {
$content = $v->innertext;
}
// 正则替换去除多余部分
$pattern = "/(<p>.*?)|(.*?)/";
$artic['content'] = preg_replace($pattern,'',$content);
echo $artic['title'].'
';
echo $artic['content'];
使用上述分析方法得到的内容是一个数组。使用foreach获取数组内容,使用正则替换去除正文文本广告,将标题和小说内容放入数组中。最简单的写法就完成了。运行结果如下:
当然这种写法看起来更难受,可以自己封装函数类。以下是我自己编写的代码示例。当然也有一些不足,但是可以作为参考扩展。
以上示例代码的最终运行结果: 前几章,通过$_GET['n']输入数字并传递参数
总结:
知识点:curl(提示:curl模块采集任意网页php类)、正则、解析工具simple_html_dom
虽然写法已经初步完善,但最好自己部署服务器,效果最佳。否则只能在电脑上看,不太方便,而且你可能更愿意容忍广告。
以上就是使用php curl采集页面,使用simple_html_dom解析的详细内容! 查看全部
php curl抓取网页指定内容(phpcurl采集页面_html_dom解析,侵删推广)
有的人看小说看习惯了,偶尔看几章。都是百度发布的,但基本上都是特别烦人的广告,或者是在整体div上加了链接,误触跳转到某些网站甚至无限循环。一些手机app也有很多广告,所以我可以写一个小程序来避免广告的烦恼。
本文将使用php curl采集页面simple_html_dom进行解析,实现真正去除广告。
随便找一本小说网站找书,但是这个网站在手机上特别棘手,而且存在以上问题:

以这本小说为借口。(免责声明:绝对不是宣传、侵扰)
一、了解curl的get方法
curl是一个命令行工具,通过指定的URL上传或下载数据,并显示数据。curl 中的 c 表示客户端,URL 表示 URL。
PHP中使用cURL实现Get和Post请求方法
只需抓取小说,只需要 get 方法。
以下示例代码是通过get请求获取第一章小说页面html的示例。您只需要更改 url 参数。
初始化、设置选项、证书验证、执行、关闭
评论特别详细。按照步骤发送 curl get 请求。如果是post请求,需要再增加一个设置来设置post选项,并传递参数,最后输出获取到的信息。运行结果如下,没有CSS渲染。

二、 解析页面
输出页面有很多不必要的内容。我们需要从所有的内容中提取我们需要的内容,比如标题和每章的内容。这时候就需要对页面进行解析。
有很多方法可以解析页面。此处使用 simple_html_dom。您需要下载并引用 simple_html_dom.php 类、实例对象,并调用内部方法。具体方法可以在官网查看,也可以在中文网站上查看其他文档。
先分析这个小说页面的源码,看本章标题和内容的对应元素
首先是标题:类书名下的h1下

然后内容:在id为content的div下

Simple_html_dom可以使用find方法,类似于jquery,使用选择器来查找定位元素。喜欢:
find('.bookname h1'); //找到类书名下的h1标题元素
find('#content'); //查找id为content的章节内容
在上面的基础上增加了代码:
include "simple_html_dom.php";
$html = new simple_html_dom();
@$html->load($res);
$h1 = $html->find('.bookname h1');
foreach ($h1 as $k=>$v) {
$artic['title'] = $v->innertext;
}
// 查找小说的具体内容
$divs = $html->find('#content');
foreach ($divs as $k=>$v) {
$content = $v->innertext;
}
// 正则替换去除多余部分
$pattern = "/(<p>.*?)|(.*?)/";
$artic['content'] = preg_replace($pattern,'',$content);
echo $artic['title'].'
';
echo $artic['content'];
使用上述分析方法得到的内容是一个数组。使用foreach获取数组内容,使用正则替换去除正文文本广告,将标题和小说内容放入数组中。最简单的写法就完成了。运行结果如下:

当然这种写法看起来更难受,可以自己封装函数类。以下是我自己编写的代码示例。当然也有一些不足,但是可以作为参考扩展。
以上示例代码的最终运行结果: 前几章,通过$_GET['n']输入数字并传递参数

总结:
知识点:curl(提示:curl模块采集任意网页php类)、正则、解析工具simple_html_dom
虽然写法已经初步完善,但最好自己部署服务器,效果最佳。否则只能在电脑上看,不太方便,而且你可能更愿意容忍广告。
以上就是使用php curl采集页面,使用simple_html_dom解析的详细内容!
php curl抓取网页指定内容(curl要求php环境支持才行.可以运行phpinfo()函数)
网站优化 • 优采云 发表了文章 • 0 个评论 • 46 次浏览 • 2021-11-30 13:19
这个文章介绍了如何使用php通过curl获取远程图片。需要了解采集远程图片的朋友不防进入参考。 curl 需要php环境的支持。可以运行phpinfo()函数来支持,一般在php.ini中;扩展= php_curl.dll;去掉它。重新启动 IIS 或 APACHE。
/*
*@通过curl方式获取指定的图片到本地
*@ 完整的图片地址
*@ 要存储的文件名
*/
function getImg($url = "", $filename = "")
{
//去除URL连接上面可能的引号
//$url = preg_replace( '/(?:^['"]+|['"/]+$)/', '', $url );
$hander = curl_init();
$fp = fopen($filename,'wb');
curl_setopt($hander,CURLOPT_URL,$url);
curl_setopt($hander,CURLOPT_FILE,$fp);
curl_setopt($hander,CURLOPT_HEADER,0);
curl_setopt($hander,CURLOPT_FOLLOWLOCATION,1);
//curl_setopt($hander,CURLOPT_RETURNTRANSFER,false);//以数据流的方式返回数据,当为false是直接显示出来
curl_setopt($hander,CURLOPT_TIMEOUT,60);
curl_exec($hander);
curl_close($hander);
fclose($fp);
Return true;
}
调用时,直接getImg("/logo.jpg","upload/image.jpg")
实现代码2
代码如下:
<p> 查看全部
php curl抓取网页指定内容(curl要求php环境支持才行.可以运行phpinfo()函数)
这个文章介绍了如何使用php通过curl获取远程图片。需要了解采集远程图片的朋友不防进入参考。 curl 需要php环境的支持。可以运行phpinfo()函数来支持,一般在php.ini中;扩展= php_curl.dll;去掉它。重新启动 IIS 或 APACHE。
/*
*@通过curl方式获取指定的图片到本地
*@ 完整的图片地址
*@ 要存储的文件名
*/
function getImg($url = "", $filename = "")
{
//去除URL连接上面可能的引号
//$url = preg_replace( '/(?:^['"]+|['"/]+$)/', '', $url );
$hander = curl_init();
$fp = fopen($filename,'wb');
curl_setopt($hander,CURLOPT_URL,$url);
curl_setopt($hander,CURLOPT_FILE,$fp);
curl_setopt($hander,CURLOPT_HEADER,0);
curl_setopt($hander,CURLOPT_FOLLOWLOCATION,1);
//curl_setopt($hander,CURLOPT_RETURNTRANSFER,false);//以数据流的方式返回数据,当为false是直接显示出来
curl_setopt($hander,CURLOPT_TIMEOUT,60);
curl_exec($hander);
curl_close($hander);
fclose($fp);
Return true;
}
调用时,直接getImg("/logo.jpg","upload/image.jpg")
实现代码2
代码如下:
<p>
php curl抓取网页指定内容(phpcurl抓取网页指定内容讲解抓取数据使用方法抓取)
网站优化 • 优采云 发表了文章 • 0 个评论 • 64 次浏览 • 2021-11-24 18:02
phpcurl抓取网页指定内容;现在很多一些网站都会采用http协议传输数据,这些数据会有一些字符串进行转换,如\[,\\,\a转换成ascii码等,一些字符编码不是这么统一,所以我们就可以采用curl抓取数据,做成字符串输出来,下面将详细讲解curl的一些使用方法。下面我们先通过上面的几个例子实现下对curl的一些操作。
对于curl的作用,我之前也介绍过,是能够抓取一些php文件上的数据的,很多公司都会使用它抓取数据,但是目前还没有采用自己写工具来抓取数据。其实不必这么麻烦,curl也很简单,通过curl我们就可以抓取域名下面的所有数据了,甚至可以抓取国外的一些网站的数据。首先我们在域名下面新建一个文件夹或者其他我们定义好的名字然后把我们要抓取的网站放进去,根据自己的需要命名保存接下来就是curl的使用了,我们通过curl就可以抓取了,我们下面介绍下curl怎么抓取我们上面设置好的文件,一个一个来介绍:一、解析网页在浏览器中抓取的网页通过http协议,而通过curl获取的就可以用我们上面说的方法解析出来;我们要抓取的信息我们在写代码抓取之前在设置抓取的参数,一般curl会有这些参数我们通过--user-agent-program就可以设置我们需要抓取的http代码即可抓取;二、抓取网页数据获取到我们想要的数据后,我们要做的是根据提供的编码规则或者其他编码规则来进行解析数据,这个时候就用到了net::http或者json来进行解析,net一般有我们的特定编码规则,我们通过编码规则进行解析;一般抓取到我们想要的数据后,我们就可以进行输出,只需要再打开浏览器输入我们刚才所设置的代码就可以出现我们想要的数据了;注意一下,一般我们是以gb2312编码进行解析的,如果是utf-8编码的请提前给我们的net开启编码方式,要不然输出的文件会出现乱码;写在最后:要保证我们在进行抓取时无需预先设置抓取参数,并且数据同样可以通过utf-8编码输出;curl接触的人越来越多,肯定有不少人也可以使用,毕竟curl是一个很成熟的网络抓取工具,拥有很多的小工具;实在不行可以使用自己写的脚本,毕竟这东西即便也提供免费抓取脚本;如果你有其他更好的curl使用方法,欢迎留言,我们一起交流。 查看全部
php curl抓取网页指定内容(phpcurl抓取网页指定内容讲解抓取数据使用方法抓取)
phpcurl抓取网页指定内容;现在很多一些网站都会采用http协议传输数据,这些数据会有一些字符串进行转换,如\[,\\,\a转换成ascii码等,一些字符编码不是这么统一,所以我们就可以采用curl抓取数据,做成字符串输出来,下面将详细讲解curl的一些使用方法。下面我们先通过上面的几个例子实现下对curl的一些操作。
对于curl的作用,我之前也介绍过,是能够抓取一些php文件上的数据的,很多公司都会使用它抓取数据,但是目前还没有采用自己写工具来抓取数据。其实不必这么麻烦,curl也很简单,通过curl我们就可以抓取域名下面的所有数据了,甚至可以抓取国外的一些网站的数据。首先我们在域名下面新建一个文件夹或者其他我们定义好的名字然后把我们要抓取的网站放进去,根据自己的需要命名保存接下来就是curl的使用了,我们通过curl就可以抓取了,我们下面介绍下curl怎么抓取我们上面设置好的文件,一个一个来介绍:一、解析网页在浏览器中抓取的网页通过http协议,而通过curl获取的就可以用我们上面说的方法解析出来;我们要抓取的信息我们在写代码抓取之前在设置抓取的参数,一般curl会有这些参数我们通过--user-agent-program就可以设置我们需要抓取的http代码即可抓取;二、抓取网页数据获取到我们想要的数据后,我们要做的是根据提供的编码规则或者其他编码规则来进行解析数据,这个时候就用到了net::http或者json来进行解析,net一般有我们的特定编码规则,我们通过编码规则进行解析;一般抓取到我们想要的数据后,我们就可以进行输出,只需要再打开浏览器输入我们刚才所设置的代码就可以出现我们想要的数据了;注意一下,一般我们是以gb2312编码进行解析的,如果是utf-8编码的请提前给我们的net开启编码方式,要不然输出的文件会出现乱码;写在最后:要保证我们在进行抓取时无需预先设置抓取参数,并且数据同样可以通过utf-8编码输出;curl接触的人越来越多,肯定有不少人也可以使用,毕竟curl是一个很成熟的网络抓取工具,拥有很多的小工具;实在不行可以使用自己写的脚本,毕竟这东西即便也提供免费抓取脚本;如果你有其他更好的curl使用方法,欢迎留言,我们一起交流。
php curl抓取网页指定内容(phpcurl获取页面内容或提交数据有时候希望返回的内容 )
网站优化 • 优采云 发表了文章 • 0 个评论 • 55 次浏览 • 2021-11-20 05:22
)
使用 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获取页面内容或提交数据有时候希望返回的内容
)
使用 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抓取网页指定内容(网站制作居于LINUX+PHP+MYSQL框架,循环取出需要的内容)
网站优化 • 优采云 发表了文章 • 0 个评论 • 64 次浏览 • 2021-11-20 05:16
(.*?)
(.*?)
#是';
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抓取网页指定内容(phpcurl抓取网页指定内容、为每个页面分配、去重favicon标签)
网站优化 • 优采云 发表了文章 • 0 个评论 • 53 次浏览 • 2021-11-14 16:01
phpcurl抓取网页指定内容、为每个页面分配url、去重favicon标签,
1.curl(connectionprotocol)是一种全连接的网络协议2.webmagicdriver(webmediaserver)是一种dom编程器3.php解释器nodejs运行的浏览器4.页面(html或者http)本身就是一个数据库5.第二条里面关于php的词条包含了这三项6.浏览器本身没有数据库7.假设你要记录“一个xx年xx月xx日xx时,我在操场跑步(或者其他的xx类似事件)”这个时间信息的话,对应的的txt文档就是一个数据库。没有数据库计算器你可以忽略这一条了。
web前端,客户端、服务端。数据库是人们日常工作中常用的解决问题的方式。人们从在浏览器中输入url(/)到主动连接到数据库开始下载数据库相关数据。就是从浏览器服务器到数据库。
客户端的原生接口请求到底接口,
我觉得网页上涉及到数据库的主要是以下几点:
1、读写文件
2、搜索引擎
3、打开网页
4、人在浏览器里输入网址
5、搜索引擎出来网页
6、如果是在网页浏览器里输入网址(或者其他方式)返回的可能是静态网页,也就是一个预编译好的网页,一般由html和javascript这两类文件组成;动态网页就是根据你的数据库以及html结构,本身能定义好的格式发送给浏览器服务器,浏览器服务器直接输出这个网页,
7、请求数据库的逻辑实现,特别是对于单一不连接的请求来说,应该是数据库链接;对于拥有多个不连接的请求来说,应该考虑权限等情况,
8、javascript的使用,一般采用cgi模式不是很容易碰到数据库,除非是复杂点的,
9、上面说的有部分含糊,但是总体上, 查看全部
php curl抓取网页指定内容(phpcurl抓取网页指定内容、为每个页面分配、去重favicon标签)
phpcurl抓取网页指定内容、为每个页面分配url、去重favicon标签,
1.curl(connectionprotocol)是一种全连接的网络协议2.webmagicdriver(webmediaserver)是一种dom编程器3.php解释器nodejs运行的浏览器4.页面(html或者http)本身就是一个数据库5.第二条里面关于php的词条包含了这三项6.浏览器本身没有数据库7.假设你要记录“一个xx年xx月xx日xx时,我在操场跑步(或者其他的xx类似事件)”这个时间信息的话,对应的的txt文档就是一个数据库。没有数据库计算器你可以忽略这一条了。
web前端,客户端、服务端。数据库是人们日常工作中常用的解决问题的方式。人们从在浏览器中输入url(/)到主动连接到数据库开始下载数据库相关数据。就是从浏览器服务器到数据库。
客户端的原生接口请求到底接口,
我觉得网页上涉及到数据库的主要是以下几点:
1、读写文件
2、搜索引擎
3、打开网页
4、人在浏览器里输入网址
5、搜索引擎出来网页
6、如果是在网页浏览器里输入网址(或者其他方式)返回的可能是静态网页,也就是一个预编译好的网页,一般由html和javascript这两类文件组成;动态网页就是根据你的数据库以及html结构,本身能定义好的格式发送给浏览器服务器,浏览器服务器直接输出这个网页,
7、请求数据库的逻辑实现,特别是对于单一不连接的请求来说,应该是数据库链接;对于拥有多个不连接的请求来说,应该考虑权限等情况,
8、javascript的使用,一般采用cgi模式不是很容易碰到数据库,除非是复杂点的,
9、上面说的有部分含糊,但是总体上,
php curl抓取网页指定内容(做过_get_contents与curl效率及稳定性详细分析介绍)
网站优化 • 优采云 发表了文章 • 0 个评论 • 58 次浏览 • 2021-11-13 20:02
本文文章是对file_get_contents和curl的效率和稳定性的详细分析和介绍。有需要的朋友可以参考
我做过很多抓取其他网站内容的产品,习惯了方便快捷的file_get_contents功能,但总是遇到获取失败的问题。虽然按照手册中的例子设置了超时时间,但大多数时候它不会起作用:
复制代码代码如下:
$config['context'] = stream_context_create(array('http' => array('method' => “GET”,
'timeout' => 5//这个超时时间不稳定,经常不起作用
)
));
这时候再看服务器的连接池,会发现一堆类似的错误,让你头疼:
file_get_contents(***): 无法打开流...
作为最后的手段,我安装了 curl 库并编写了一个函数替换:
复制代码代码如下:
函数 curl_file_get_contents($durl){
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL,$durl);
curl_setopt($ch, CURLOPT_TIMEOUT,5);
curl_setopt($ch, CURLOPT_USERAGENT, _USERAGENT_);
curl_setopt($ch, CURLOPT_REFERER,_REFERER_);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$r=curl_exec($ch);
curl_close($ch);
返回$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
是不是差距很大?哈哈,根据我的经验,这两个工具不仅速度不同,稳定性也不同。推荐对网络数据抓取稳定性要求高的朋友使用上面的curl_file_get_contents函数,不仅稳定快速,还能假冒浏览器欺骗目标地址!
以上就是分析file_get_contents和curl的效率和稳定性的详细内容。更多详情请关注其他相关html中文网站文章! 查看全部
php curl抓取网页指定内容(做过_get_contents与curl效率及稳定性详细分析介绍)
本文文章是对file_get_contents和curl的效率和稳定性的详细分析和介绍。有需要的朋友可以参考
我做过很多抓取其他网站内容的产品,习惯了方便快捷的file_get_contents功能,但总是遇到获取失败的问题。虽然按照手册中的例子设置了超时时间,但大多数时候它不会起作用:
复制代码代码如下:
$config['context'] = stream_context_create(array('http' => array('method' => “GET”,
'timeout' => 5//这个超时时间不稳定,经常不起作用
)
));
这时候再看服务器的连接池,会发现一堆类似的错误,让你头疼:
file_get_contents(***): 无法打开流...
作为最后的手段,我安装了 curl 库并编写了一个函数替换:
复制代码代码如下:
函数 curl_file_get_contents($durl){
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL,$durl);
curl_setopt($ch, CURLOPT_TIMEOUT,5);
curl_setopt($ch, CURLOPT_USERAGENT, _USERAGENT_);
curl_setopt($ch, CURLOPT_REFERER,_REFERER_);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$r=curl_exec($ch);
curl_close($ch);
返回$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
是不是差距很大?哈哈,根据我的经验,这两个工具不仅速度不同,稳定性也不同。推荐对网络数据抓取稳定性要求高的朋友使用上面的curl_file_get_contents函数,不仅稳定快速,还能假冒浏览器欺骗目标地址!
以上就是分析file_get_contents和curl的效率和稳定性的详细内容。更多详情请关注其他相关html中文网站文章!
php curl抓取网页指定内容(一下PHP中的curl扩展(一)_curl和libcurl简介)
网站优化 • 优采云 发表了文章 • 0 个评论 • 55 次浏览 • 2021-11-13 01:11
本文章主要介绍了在PHP中使用curl的入门教程。这篇文章讲解了curl的概述,curl的安装,在PHP中使用curl的步骤,一个简单的curl代码示例等,有需要的朋友可以参考以下
概述
在我上一篇文章《curl和libcurl介绍》中,简单给大家介绍了curl相关知识。这个 文章 向您介绍了 PHP 中的 curl 扩展。
虽然在上一篇文章中对curl和libcurl进行了区分,也解释了一些相关的概念。同时我也知道PHP中的curl扩展其实就是libcurl的一个包。不过在本文章中,为了书写方便,我们将不再区分这两个概念。所以,文章接下来提到的curl其实是指libcurl。绕来绕去迷茫。
关于PHP中的curl扩展,这里就不过多介绍了,大家可以查看文档。
安装卷曲
关于curl的安装,这里就不过多介绍了。windows和linux的进程是一样的。根据平台选择相应的安装方式,然后打开php.ini文件中的curl扩展,其他扩展的安装也是一样的。
在 PHP 中使用 curl 的步骤
在PHP中,curl可以完成各种功能,比如爬取网页、上传/下载文件、模拟登录等。但是这些功能的实现都是基于四步来完成的,所以curl的使用并不复杂。
使用curl时,主要分为以下四个步骤:
1.初始化一个curl实例-curl_init()
2.curl 执行时设置相关选项-curl_setopt()
3.执行 curl query-curl_exec()
4.关闭卷曲--curl_close()
这四步中,1、3、4步很简单。最麻烦的是第2步,这一步是设置curl选项,有100多个不同的选项,要完成不同的功能,就要结合这些选项。
下面是对这四个步骤的解释:
1.初始化一个curl实例,这一步用到了curl_init()函数,查看php手册,可以看到该函数的返回值是一个资源(resource)类型,我们需要使用一个变量来保存这个实例,因为后面的步骤会用到这个实例。具体代码示例:
复制代码代码如下:
$curl=curl_init(); //输出资源(2, curl)
2. 设置curl相关选项,使用curl_setopt()函数设置curl选项。该函数接受三个参数:第一个参数是要设置的curl的实例,也就是第一步中的实例,第二个参数要设置的选项是一个预定义的常量。具体选项有哪些?您可以在手册中查看。第三个参数是要设置的选项的具体值。
代码示例:
复制代码代码如下:
curl_setopt ($curl, CURLOPT_URL, "");
3.执行curl查询,这一步用到了curl_exec()函数。该函数接受一个参数,该参数也是步骤 1 中获取的实例。
代码示例:
复制代码代码如下:
curl_exec ($curl);
4.关闭当前curl,这一步使用curl_close()函数。该函数还接受步骤 1 中获得的 curl 实例作为参数。
代码示例:
复制代码代码如下:
curl_close($curl);
PHP中curl的使用一般遵循这四个步骤,其中不同的功能主要是通过2个步骤的不同设置来完成的,所以第二个步骤是最麻烦的,有的甚至需要你仔细理解。
一个简单的 curl 代码示例
我已经向您介绍了使用 curl 的四个步骤。下面简单演示一个抓取网页内容的例子。代码很简单,但希望能帮助大家更好地理解curl。 查看全部
php curl抓取网页指定内容(一下PHP中的curl扩展(一)_curl和libcurl简介)
本文章主要介绍了在PHP中使用curl的入门教程。这篇文章讲解了curl的概述,curl的安装,在PHP中使用curl的步骤,一个简单的curl代码示例等,有需要的朋友可以参考以下
概述
在我上一篇文章《curl和libcurl介绍》中,简单给大家介绍了curl相关知识。这个 文章 向您介绍了 PHP 中的 curl 扩展。
虽然在上一篇文章中对curl和libcurl进行了区分,也解释了一些相关的概念。同时我也知道PHP中的curl扩展其实就是libcurl的一个包。不过在本文章中,为了书写方便,我们将不再区分这两个概念。所以,文章接下来提到的curl其实是指libcurl。绕来绕去迷茫。
关于PHP中的curl扩展,这里就不过多介绍了,大家可以查看文档。
安装卷曲
关于curl的安装,这里就不过多介绍了。windows和linux的进程是一样的。根据平台选择相应的安装方式,然后打开php.ini文件中的curl扩展,其他扩展的安装也是一样的。
在 PHP 中使用 curl 的步骤
在PHP中,curl可以完成各种功能,比如爬取网页、上传/下载文件、模拟登录等。但是这些功能的实现都是基于四步来完成的,所以curl的使用并不复杂。
使用curl时,主要分为以下四个步骤:
1.初始化一个curl实例-curl_init()
2.curl 执行时设置相关选项-curl_setopt()
3.执行 curl query-curl_exec()
4.关闭卷曲--curl_close()
这四步中,1、3、4步很简单。最麻烦的是第2步,这一步是设置curl选项,有100多个不同的选项,要完成不同的功能,就要结合这些选项。
下面是对这四个步骤的解释:
1.初始化一个curl实例,这一步用到了curl_init()函数,查看php手册,可以看到该函数的返回值是一个资源(resource)类型,我们需要使用一个变量来保存这个实例,因为后面的步骤会用到这个实例。具体代码示例:
复制代码代码如下:
$curl=curl_init(); //输出资源(2, curl)
2. 设置curl相关选项,使用curl_setopt()函数设置curl选项。该函数接受三个参数:第一个参数是要设置的curl的实例,也就是第一步中的实例,第二个参数要设置的选项是一个预定义的常量。具体选项有哪些?您可以在手册中查看。第三个参数是要设置的选项的具体值。
代码示例:
复制代码代码如下:
curl_setopt ($curl, CURLOPT_URL, "");
3.执行curl查询,这一步用到了curl_exec()函数。该函数接受一个参数,该参数也是步骤 1 中获取的实例。
代码示例:
复制代码代码如下:
curl_exec ($curl);
4.关闭当前curl,这一步使用curl_close()函数。该函数还接受步骤 1 中获得的 curl 实例作为参数。
代码示例:
复制代码代码如下:
curl_close($curl);
PHP中curl的使用一般遵循这四个步骤,其中不同的功能主要是通过2个步骤的不同设置来完成的,所以第二个步骤是最麻烦的,有的甚至需要你仔细理解。
一个简单的 curl 代码示例
我已经向您介绍了使用 curl 的四个步骤。下面简单演示一个抓取网页内容的例子。代码很简单,但希望能帮助大家更好地理解curl。
php curl抓取网页指定内容(cURL实战来源:PHP中的数据传输神器-慕课网 )
网站优化 • 优采云 发表了文章 • 0 个评论 • 47 次浏览 • 2021-11-12 23:10
)
cURL的实际来源:PHP-MU类网中的数据传输神器cURL()
破碎的想法:
这部分知识没学好,需要练习。 FTP服务器也没有设置。
cURL 官方文档:
cURL 实战:
test1(1)使用curl做一个简单的网络爬虫
(2)使用curl抓取网页信息并替换部分内容
%s
','北京');
$curlobj = curl_init();
curl_setopt($curlobj, CURLOPT_URL, "http://www.webxml.com.cn/WebSe ... 6quot;);
curl_setopt($curlobj, CURLOPT_POST, 1);
curl_setopt($curlobj, CURLOPT_HEADER, 0);
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlobj, CURLOPT_POSTFIELDS, $data);
curl_setopt($curlobj, CURLOPT_HTTPHEADER, array("Content-Type: application/soap+xml; charset=utf-8",
"Content-length: ".strlen($data),
"SOAPAction:\"http://WebXml.com.cn/getWeatherbyCityName\""));
$rtn = curl_exec($curlobj);
if(!curl_errno($curlobj)){
$info = curl_getinfo($curlobj);
print_r($info);
echo "RETURN: " . $rtn;
} else {
echo 'Curl error: ' . curl_error($curlobj);
}
curl_close($curlobj);
结果:
test3(1)登录CSDN下载我的博客页面
(2)页面链接跳转抓取的自定义实现
<p> 查看全部
php curl抓取网页指定内容(cURL实战来源:PHP中的数据传输神器-慕课网
)
cURL的实际来源:PHP-MU类网中的数据传输神器cURL()

破碎的想法:
这部分知识没学好,需要练习。 FTP服务器也没有设置。
cURL 官方文档:
cURL 实战:
test1(1)使用curl做一个简单的网络爬虫
(2)使用curl抓取网页信息并替换部分内容
%s
','北京');
$curlobj = curl_init();
curl_setopt($curlobj, CURLOPT_URL, "http://www.webxml.com.cn/WebSe ... 6quot;);
curl_setopt($curlobj, CURLOPT_POST, 1);
curl_setopt($curlobj, CURLOPT_HEADER, 0);
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlobj, CURLOPT_POSTFIELDS, $data);
curl_setopt($curlobj, CURLOPT_HTTPHEADER, array("Content-Type: application/soap+xml; charset=utf-8",
"Content-length: ".strlen($data),
"SOAPAction:\"http://WebXml.com.cn/getWeatherbyCityName\""));
$rtn = curl_exec($curlobj);
if(!curl_errno($curlobj)){
$info = curl_getinfo($curlobj);
print_r($info);
echo "RETURN: " . $rtn;
} else {
echo 'Curl error: ' . curl_error($curlobj);
}
curl_close($curlobj);
结果:

test3(1)登录CSDN下载我的博客页面
(2)页面链接跳转抓取的自定义实现
<p>
php curl抓取网页指定内容(PHP外部资源函数fopen/file_get_contents好很多)
网站优化 • 优采云 发表了文章 • 0 个评论 • 57 次浏览 • 2021-11-11 04:06
1、fopen的使用
复制代码代码如下:
复制代码代码如下:
// 以下代码可用于 PHP 5 及更高版本
但是上面的代码很容易出现打开流失败:HTTP request failed!错误,解决方法
有人说在php.ini中,有两个选项:allow_url_fopen = on(代表可以通过url打开远程文件),user_agent="PHP"(代表通过哪个脚本访问网络,默认有“ ;" 在它前面。是的。)重新启动服务器。
但有些人仍然有这个警告信息。想要完美解决,还是一步之遥。您必须在 php.ini 中设置 user_agent。php 的默认 user_agent 是 PHP。我们把它改成 Mozilla/4.0 (compatible ; MSIE 6.0; Windows NT 5.0) 来模拟浏览器
<IMG src="/upload/201106/20110606090106493.gif" border=0>
user_agent="Mozilla/4.0(兼容;MSIE 6.0;Windows NT 5.0)”
我在工作中遇到了这个问题,并完美解决了,所以分享给大家。
2、由 curl 实现
复制代码代码如下:
linux下可以使用以下代码下载
exec("wget {$url}");
PHP中fopen/file_get_contents/curl抓取外部资源的区别
fopen / file_get_contents 会对每一个请求重新做DNS查询,DNS信息不会被缓存。
但是 CURL 会自动缓存 DNS 信息。请求同域名下的网页或图片,只需要进行一次DNS查询。
这大大减少了 DNS 查询的数量。
所以CURL的性能要比fopen/file_get_contents好很多。 查看全部
php curl抓取网页指定内容(PHP外部资源函数fopen/file_get_contents好很多)
1、fopen的使用
复制代码代码如下:
复制代码代码如下:
// 以下代码可用于 PHP 5 及更高版本
但是上面的代码很容易出现打开流失败:HTTP request failed!错误,解决方法
有人说在php.ini中,有两个选项:allow_url_fopen = on(代表可以通过url打开远程文件),user_agent="PHP"(代表通过哪个脚本访问网络,默认有“ ;" 在它前面。是的。)重新启动服务器。
但有些人仍然有这个警告信息。想要完美解决,还是一步之遥。您必须在 php.ini 中设置 user_agent。php 的默认 user_agent 是 PHP。我们把它改成 Mozilla/4.0 (compatible ; MSIE 6.0; Windows NT 5.0) 来模拟浏览器
<IMG src="/upload/201106/20110606090106493.gif" border=0>
user_agent="Mozilla/4.0(兼容;MSIE 6.0;Windows NT 5.0)”
我在工作中遇到了这个问题,并完美解决了,所以分享给大家。
2、由 curl 实现
复制代码代码如下:
linux下可以使用以下代码下载
exec("wget {$url}");
PHP中fopen/file_get_contents/curl抓取外部资源的区别
fopen / file_get_contents 会对每一个请求重新做DNS查询,DNS信息不会被缓存。
但是 CURL 会自动缓存 DNS 信息。请求同域名下的网页或图片,只需要进行一次DNS查询。
这大大减少了 DNS 查询的数量。
所以CURL的性能要比fopen/file_get_contents好很多。
php curl抓取网页指定内容( PHP的curl()使用总结及使用的使用)
网站优化 • 优采云 发表了文章 • 0 个评论 • 60 次浏览 • 2021-11-09 23:17
PHP的curl()使用总结及使用的使用)
PHP模拟登录并获取数据
CURL 是一个强大的 PHP 库。使用PHP的cURL库可以轻松有效地抓取网页和采集内容,设置cookies来完成模拟登录网页,curl提供了丰富的功能,开发者可以从PHP手册中获取更多关于cURL的信息。本文以模拟登录开源中国(oschina)为例,与大家分享cURL的使用。
PHP的curl()在抓取网页的效率上比较高,并且支持多线程,而file_get_contents()效率稍低。当然,使用curl时需要开启curl扩展。
代码实战
我们先来看看登录部分的代码:
//模拟登录 <br />function login_post($url, $cookie, $post) { <br /> $curl = curl_init();//初始化curl模块 <br /> curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址 <br /> curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息 <br /> curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息 <br /> curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中 <br /> curl_setopt($curl, CURLOPT_POST, 1);//post方式提交 <br /> curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息 <br /> curl_exec($curl);//执行cURL <br /> curl_close($curl);//关闭cURL资源,并且释放系统资源 <br />} <br />
函数login_post()首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的URL地址、保存的cookie文件、post数据(用户名和密码等)、返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 自带的 http_build_query() 可以将数组转换为串联字符串。
接下来,如果登录成功,我们需要获取登录成功后的页面信息。
//登录成功后获取数据 <br />function get_content($url, $cookie) { <br /> $ch = curl_init(); <br /> curl_setopt($ch, CURLOPT_URL, $url); <br /> curl_setopt($ch, CURLOPT_HEADER, 0); <br /> curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); <br /> curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie <br /> $rs = curl_exec($ch); //执行cURL抓取页面内容 <br /> curl_close($ch); <br /> return $rs; <br />} <br />
函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们设置CURLOPT_RETURNTRANSFER为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
我们的最终目标是获取模拟登录后的信息,即只有正常登录成功才能获取的有用信息。接下来我们以开源中国移动版为例,看看登录成功后如何抓取信息。
//设置post的数据 <br />$post = array ( <br /> 'email' => 'oschina账户', <br /> 'pwd' => 'oschina密码', <br /> 'goto_page' => '/my', <br /> 'error_page' => '/login', <br /> 'save_login' => '1', <br /> 'submit' => '现在登录' <br />); <br /> <br />//登录地址 <br />$url = "http://m.oschina.net/action/user/login"; <br />//设置cookie保存路径 <br />$cookie = dirname(__FILE__) . '/cookie_oschina.txt'; <br />//登录后要获取信息的地址 <br />$url2 = "http://m.oschina.net/my"; <br />//模拟登录 <br />login_post($url, $cookie, $post); <br />//获取登录页的信息 <br />$content = get_content($url2, $cookie); <br />//删除cookie文件 <br />@ unlink($cookie); <br />//匹配页面信息 <br />$preg = "/(.*)/i"; <br />preg_match_all($preg, $content, $arr); <br />$str = $arr[1][0]; <br />//输出内容 <br />echo $str; <br />
运行上面的代码后,我们会看到最终得到了登录用户的头像。
使用总结
1、初始化curl;
2、使用curl_setopt设置目标url,以及其他选项;
3、curl_exec,执行curl;
4、 执行后关闭curl;
5、 输出数据。
参考
《php中curl和curl介绍》,作者不详,
“使用 PHP CURL 发布数据”,作者:Veda,
《php使用curl模拟登录discuz,模拟发帖》,作者:tianxin,
免责声明:本文为原创文章,版权归作者所有。如需转载,请注明出处并保留原文链接: 查看全部
php curl抓取网页指定内容(
PHP的curl()使用总结及使用的使用)
PHP模拟登录并获取数据
CURL 是一个强大的 PHP 库。使用PHP的cURL库可以轻松有效地抓取网页和采集内容,设置cookies来完成模拟登录网页,curl提供了丰富的功能,开发者可以从PHP手册中获取更多关于cURL的信息。本文以模拟登录开源中国(oschina)为例,与大家分享cURL的使用。
PHP的curl()在抓取网页的效率上比较高,并且支持多线程,而file_get_contents()效率稍低。当然,使用curl时需要开启curl扩展。
代码实战
我们先来看看登录部分的代码:
//模拟登录 <br />function login_post($url, $cookie, $post) { <br /> $curl = curl_init();//初始化curl模块 <br /> curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址 <br /> curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息 <br /> curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息 <br /> curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中 <br /> curl_setopt($curl, CURLOPT_POST, 1);//post方式提交 <br /> curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息 <br /> curl_exec($curl);//执行cURL <br /> curl_close($curl);//关闭cURL资源,并且释放系统资源 <br />} <br />
函数login_post()首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的URL地址、保存的cookie文件、post数据(用户名和密码等)、返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 自带的 http_build_query() 可以将数组转换为串联字符串。
接下来,如果登录成功,我们需要获取登录成功后的页面信息。
//登录成功后获取数据 <br />function get_content($url, $cookie) { <br /> $ch = curl_init(); <br /> curl_setopt($ch, CURLOPT_URL, $url); <br /> curl_setopt($ch, CURLOPT_HEADER, 0); <br /> curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); <br /> curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie <br /> $rs = curl_exec($ch); //执行cURL抓取页面内容 <br /> curl_close($ch); <br /> return $rs; <br />} <br />
函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们设置CURLOPT_RETURNTRANSFER为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
我们的最终目标是获取模拟登录后的信息,即只有正常登录成功才能获取的有用信息。接下来我们以开源中国移动版为例,看看登录成功后如何抓取信息。
//设置post的数据 <br />$post = array ( <br /> 'email' => 'oschina账户', <br /> 'pwd' => 'oschina密码', <br /> 'goto_page' => '/my', <br /> 'error_page' => '/login', <br /> 'save_login' => '1', <br /> 'submit' => '现在登录' <br />); <br /> <br />//登录地址 <br />$url = "http://m.oschina.net/action/user/login"; <br />//设置cookie保存路径 <br />$cookie = dirname(__FILE__) . '/cookie_oschina.txt'; <br />//登录后要获取信息的地址 <br />$url2 = "http://m.oschina.net/my"; <br />//模拟登录 <br />login_post($url, $cookie, $post); <br />//获取登录页的信息 <br />$content = get_content($url2, $cookie); <br />//删除cookie文件 <br />@ unlink($cookie); <br />//匹配页面信息 <br />$preg = "/(.*)/i"; <br />preg_match_all($preg, $content, $arr); <br />$str = $arr[1][0]; <br />//输出内容 <br />echo $str; <br />
运行上面的代码后,我们会看到最终得到了登录用户的头像。

使用总结
1、初始化curl;
2、使用curl_setopt设置目标url,以及其他选项;
3、curl_exec,执行curl;
4、 执行后关闭curl;
5、 输出数据。
参考
《php中curl和curl介绍》,作者不详,
“使用 PHP CURL 发布数据”,作者:Veda,
《php使用curl模拟登录discuz,模拟发帖》,作者:tianxin,
免责声明:本文为原创文章,版权归作者所有。如需转载,请注明出处并保留原文链接:
php curl抓取网页指定内容(小程序里面的链接使用navigator组件在html中的应用)
网站优化 • 优采云 发表了文章 • 0 个评论 • 53 次浏览 • 2021-11-08 23:03
本文文章将详细讲解从小程序外部跳转到指定小程序页面_小程序页面获取链接的方法。我觉得很实用,所以分享给大家作为参考,希望大家看完这篇文章后,能有所收获。
小程序中的链接使用了navigator组件
在html中使用标签,一个标签可以链接到网络中的任何地址
小程序中的导航器只能应用于当前小程序中的链接跳转
跳转A
跳转B
第一个无效
第二个可以正确跳转,需要注意的是:url中的页面不能是tabBar(底部菜单)中的页面
但是可以通过open-type属性设置
重定向属性,打开新页面时,关闭原页面(在新页面上,不能再返回原页面)
跳转
跳转和传递参数时(不带引号,会自动加双引号,否则会出现多个引号,所以直接写:id=111&name=张三):
跳转
通过onLoad事件获取url参数,加载本页面时自动将参数放入页面
跳转
跳转
Page({
data: {
},
onLoad : function(datas) {
console.log(datas);
}
})
点击链接1,data的值为{id: "111", name: "张三"},点击链接2,data的值为{id: "123", name: "小明"}
hover-class 是点击后的样式
wx.navigateTo
这个Api也可以完成页面跳转,和navigator一样(没有redirect属性)
跳转
navigator : function() {
wx.navigateTo({
url: 'test/t?id=100&user=xiaoming',
success : function(e) {
console.log(e.errMsg);
}
})
}
wx.redirectTo
这个Api也可以完成页面跳转,和navigator一样(带redirect属性),操作和上面一样
wx.navigateBack
这个Api是用来返回的,从当前页面到上层页面(根据下面的参数)
Page({
data: {
},
back : function() {
wx.navigateBack({
delta : 1 // 值为1, 则是返回上一级, 值为2就返回上两级...
})
}
})
如果dellta的值为1,可以省略dellta属性:wx.navigateBack(())
如果delta的值超过它可以返回的总层数,它会返回首页
关于从小程序外部跳转到指定小程序页面_小程序页面获取链接的方法,希望以上内容可以对大家有所帮助,大家多多学习。如果你觉得文章不错,可以分享给更多人看。 查看全部
php curl抓取网页指定内容(小程序里面的链接使用navigator组件在html中的应用)
本文文章将详细讲解从小程序外部跳转到指定小程序页面_小程序页面获取链接的方法。我觉得很实用,所以分享给大家作为参考,希望大家看完这篇文章后,能有所收获。
小程序中的链接使用了navigator组件
在html中使用标签,一个标签可以链接到网络中的任何地址
小程序中的导航器只能应用于当前小程序中的链接跳转
跳转A
跳转B
第一个无效
第二个可以正确跳转,需要注意的是:url中的页面不能是tabBar(底部菜单)中的页面
但是可以通过open-type属性设置
重定向属性,打开新页面时,关闭原页面(在新页面上,不能再返回原页面)
跳转
跳转和传递参数时(不带引号,会自动加双引号,否则会出现多个引号,所以直接写:id=111&name=张三):
跳转
通过onLoad事件获取url参数,加载本页面时自动将参数放入页面
跳转
跳转
Page({
data: {
},
onLoad : function(datas) {
console.log(datas);
}
})
点击链接1,data的值为{id: "111", name: "张三"},点击链接2,data的值为{id: "123", name: "小明"}
hover-class 是点击后的样式
wx.navigateTo
这个Api也可以完成页面跳转,和navigator一样(没有redirect属性)
跳转
navigator : function() {
wx.navigateTo({
url: 'test/t?id=100&user=xiaoming',
success : function(e) {
console.log(e.errMsg);
}
})
}
wx.redirectTo
这个Api也可以完成页面跳转,和navigator一样(带redirect属性),操作和上面一样
wx.navigateBack
这个Api是用来返回的,从当前页面到上层页面(根据下面的参数)
Page({
data: {
},
back : function() {
wx.navigateBack({
delta : 1 // 值为1, 则是返回上一级, 值为2就返回上两级...
})
}
})
如果dellta的值为1,可以省略dellta属性:wx.navigateBack(())
如果delta的值超过它可以返回的总层数,它会返回首页
关于从小程序外部跳转到指定小程序页面_小程序页面获取链接的方法,希望以上内容可以对大家有所帮助,大家多多学习。如果你觉得文章不错,可以分享给更多人看。
php curl抓取网页指定内容(phpcurl抓取网页指定内容抓取web中所有的的script标签)
网站优化 • 优采云 发表了文章 • 0 个评论 • 48 次浏览 • 2021-11-05 14:01
phpcurl抓取网页指定内容抓取web中所有的script标签:$。cookie_url=curl_get_script(cookie_url,'www。');$。cookie_from_url=curl_get_script(cookie_url,'/');echo$。cookie_from_url;复制代码:。
google-siteadd
1.通过网页的script标签来抓取html页面;2.xpath方式提取页面内容,
你说的是用于打开html页面的抓取工具吗?正是这个提供抓取规则的script标签才是使用的主角,看到你有一句半句的描述,估计是你想抓取页面标签内容,那么正确做法是一边抓一边爬,你说的内容应该是抓到后返回给curl,curl解析后返回给浏览器我在一篇文章上看到的抓取方法:)基于restful的http调用机制学习。
看一下这个:超简单的网站收藏夹抓取方法httpwebsocketwebsocket总结和使用方法一般可以抓取全部网页的,但是使用的时候要记得分开抓,否则一个网页会有很多抓取代码。
baiduwebsocket
我在windows下用的是/这个,好像一个浏览器可以抓一个。
netbeans本地抓取
我有php/python/java的httprestful客户端,其实用googlechrome开浏览器的rest接口抓过去也挺好用的。 查看全部
php curl抓取网页指定内容(phpcurl抓取网页指定内容抓取web中所有的的script标签)
phpcurl抓取网页指定内容抓取web中所有的script标签:$。cookie_url=curl_get_script(cookie_url,'www。');$。cookie_from_url=curl_get_script(cookie_url,'/');echo$。cookie_from_url;复制代码:。
google-siteadd
1.通过网页的script标签来抓取html页面;2.xpath方式提取页面内容,
你说的是用于打开html页面的抓取工具吗?正是这个提供抓取规则的script标签才是使用的主角,看到你有一句半句的描述,估计是你想抓取页面标签内容,那么正确做法是一边抓一边爬,你说的内容应该是抓到后返回给curl,curl解析后返回给浏览器我在一篇文章上看到的抓取方法:)基于restful的http调用机制学习。
看一下这个:超简单的网站收藏夹抓取方法httpwebsocketwebsocket总结和使用方法一般可以抓取全部网页的,但是使用的时候要记得分开抓,否则一个网页会有很多抓取代码。
baiduwebsocket
我在windows下用的是/这个,好像一个浏览器可以抓一个。
netbeans本地抓取
我有php/python/java的httprestful客户端,其实用googlechrome开浏览器的rest接口抓过去也挺好用的。
php curl抓取网页指定内容(phpcurl抓取网页指定内容(知乎,facebook,)安装)
网站优化 • 优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2021-11-01 15:27
phpcurl抓取网页指定内容(知乎,facebook,twitter)安装curl:$curl--version进入curl命令行模式,$curl--nameurl注意name,curl指定的网址需要换成你自己的网址(你自己是需要加标签表示你浏览器的地址)执行抓取指定内容:curl-print选中要抓取的内容,例如要抓取:-print-url-to-curl输出的结果会包含标签(不同的浏览器标记方式不同)注意pythonrequests库也有抓取网页的命令curl_request库抓取文章或博客的页面:$curl--filehello。
pypythonrequests抓取文章或博客的页面:$curl_request--file[url]-t[options]。xml[output]但是。xml格式不稳定$curl_request_encoding参数可以是"utf-8"%curl_request_decoding参数可以是"utf-8"选择指定的编码方式,例如:%curl_request_utf8="gbk"%curl_request_utf8="gb2312"%curl_request_utf8="json"--user-agent%curl_request_user-agent="mozilla/5。
0(compatible;)applewebkit/537。36(khtml,likegecko)chrome/62。3343。93safari/537。36"%curl_request_agent="mozilla/5。0(compatible;)applewebkit/537。36(khtml,likegecko)chrome/61。
2402。106safari/537。36">(注意一定要指定编码方式,推荐用json格式;选择默认编码选项有问题)抓取指定的文章:$curl_request_encoding="utf-8"%curl_request_decoding参数可以是"utf-8"%$curl_request_encoding:"gbk"%$curl_request_decoding:"json"$curl_request_encoding表示的编码方式(例如:%curl_request_encoding="gbk"%curl_request_decoding:"json"%)但是。
xml格式不稳定$curl_request_encoding="utf-8"%curl_request_decoding选择指定的编码方式,例如:%curl_request_encoding="gbk"%$curl_request_decoding:"json"$curl_request_decoding:"content-type">%curl_request_encoding="gbk"%$curl_request_decoding:"json"抓取指定的时间(暂不清楚为何只有20分钟才能抓取):$curl_request_timeout=20元数据就是要抓取的内容,php框架自带,curl调用curl_request函数抓取后缀相同的元数据文件,后缀相同一般就是分类页面,例如:,返回一个字符串page_title,这个字符。 查看全部
php curl抓取网页指定内容(phpcurl抓取网页指定内容(知乎,facebook,)安装)
phpcurl抓取网页指定内容(知乎,facebook,twitter)安装curl:$curl--version进入curl命令行模式,$curl--nameurl注意name,curl指定的网址需要换成你自己的网址(你自己是需要加标签表示你浏览器的地址)执行抓取指定内容:curl-print选中要抓取的内容,例如要抓取:-print-url-to-curl输出的结果会包含标签(不同的浏览器标记方式不同)注意pythonrequests库也有抓取网页的命令curl_request库抓取文章或博客的页面:$curl--filehello。
pypythonrequests抓取文章或博客的页面:$curl_request--file[url]-t[options]。xml[output]但是。xml格式不稳定$curl_request_encoding参数可以是"utf-8"%curl_request_decoding参数可以是"utf-8"选择指定的编码方式,例如:%curl_request_utf8="gbk"%curl_request_utf8="gb2312"%curl_request_utf8="json"--user-agent%curl_request_user-agent="mozilla/5。
0(compatible;)applewebkit/537。36(khtml,likegecko)chrome/62。3343。93safari/537。36"%curl_request_agent="mozilla/5。0(compatible;)applewebkit/537。36(khtml,likegecko)chrome/61。
2402。106safari/537。36">(注意一定要指定编码方式,推荐用json格式;选择默认编码选项有问题)抓取指定的文章:$curl_request_encoding="utf-8"%curl_request_decoding参数可以是"utf-8"%$curl_request_encoding:"gbk"%$curl_request_decoding:"json"$curl_request_encoding表示的编码方式(例如:%curl_request_encoding="gbk"%curl_request_decoding:"json"%)但是。
xml格式不稳定$curl_request_encoding="utf-8"%curl_request_decoding选择指定的编码方式,例如:%curl_request_encoding="gbk"%$curl_request_decoding:"json"$curl_request_decoding:"content-type">%curl_request_encoding="gbk"%$curl_request_decoding:"json"抓取指定的时间(暂不清楚为何只有20分钟才能抓取):$curl_request_timeout=20元数据就是要抓取的内容,php框架自带,curl调用curl_request函数抓取后缀相同的元数据文件,后缀相同一般就是分类页面,例如:,返回一个字符串page_title,这个字符。
php curl抓取网页指定内容(PHP模拟登录并获取数据_post()使用的总结)
网站优化 • 优采云 发表了文章 • 0 个评论 • 65 次浏览 • 2021-10-29 12:05
PHP模拟登录并获取数据
CURL 是一个强大的 PHP 库。使用PHP的cURL库可以轻松有效地抓取网页和采集内容,设置cookies来完成模拟登录网页,curl提供了丰富的功能,开发者可以从PHP手册中获取更多关于cURL的信息。本文以模拟登录开源中国(oschina)为例,与大家分享cURL的使用。
PHP的curl()在抓取网页的效率上比较高,并且支持多线程,而file_get_contents()的效率稍低。当然,使用curl时需要开启curl扩展。
代码实战
我们先来看看登录部分的代码:
//模拟登录 <br style="margin:0px;padding:0px;">function login_post($url, $cookie, $post) { <br style="margin:0px;padding:0px;">
$curl = curl_init();//初始化curl模块 <br style="margin:0px;padding:0px;">
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址 <br style="margin:0px;padding:0px;">
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息 <br style="margin:0px;padding:0px;">
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息 <br style="margin:0px;padding:0px;">
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中 <br style="margin:0px;padding:0px;">
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交 <br style="margin:0px;padding:0px;">
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息 <br style="margin:0px;padding:0px;">
curl_exec($curl);//执行cURL <br style="margin:0px;padding:0px;">
curl_close($curl);//关闭cURL资源,并且释放系统资源 <br style="margin:0px;padding:0px;">
} <br style="margin:0px;padding:0px;">
login_post()函数首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的URL地址、保存的cookie文件、post数据(用户名密码等信息)、返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 自带的 http_build_query() 可以将数组转换为串联字符串。
接下来,如果登录成功,我们需要获取登录成功后的页面信息。
//登录成功后获取数据 <br style="margin:0px;padding:0px;">function get_content($url, $cookie) { <br style="margin:0px;padding:0px;">
$ch = curl_init(); <br style="margin:0px;padding:0px;">
curl_setopt($ch, CURLOPT_URL, $url); <br style="margin:0px;padding:0px;">
curl_setopt($ch, CURLOPT_HEADER, 0); <br style="margin:0px;padding:0px;">
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); <br style="margin:0px;padding:0px;">
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie <br style="margin:0px;padding:0px;">
$rs = curl_exec($ch); //执行cURL抓取页面内容 <br style="margin:0px;padding:0px;">
curl_close($ch); <br style="margin:0px;padding:0px;">
return $rs; <br style="margin:0px;padding:0px;">
} <br style="margin:0px;padding:0px;">
函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们设置CURLOPT_RETURNTRANSFER为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
我们的最终目标是获取模拟登录后的信息,即只有正常登录成功才能获取的有用信息。接下来我们以开源中国移动版为例,看看登录成功后如何抓取信息。
//设置post的数据 <br style="margin:0px;padding:0px;">$post = array ( <br style="margin:0px;padding:0px;">
'email' => 'oschina账户', <br style="margin:0px;padding:0px;">
'pwd' => 'oschina密码', <br style="margin:0px;padding:0px;">
'goto_page' => '/my', <br style="margin:0px;padding:0px;">
'error_page' => '/login', <br style="margin:0px;padding:0px;">
'save_login' => '1', <br style="margin:0px;padding:0px;">
'submit' => '现在登录' <br style="margin:0px;padding:0px;">
); <br style="margin:0px;padding:0px;">
<br style="margin:0px;padding:0px;">//登录地址 <br style="margin:0px;padding:0px;">$url = "http://m.oschina.net/action/user/login"; <br style="margin:0px;padding:0px;">//设置cookie保存路径 <br style="margin:0px;padding:0px;">$cookie = dirname(__FILE__) . '/cookie_oschina.txt'; <br style="margin:0px;padding:0px;">//登录后要获取信息的地址 <br style="margin:0px;padding:0px;">$url2 = "http://m.oschina.net/my"; <br style="margin:0px;padding:0px;">//模拟登录 <br style="margin:0px;padding:0px;">
login_post($url, $cookie, $post); <br style="margin:0px;padding:0px;">//获取登录页的信息 <br style="margin:0px;padding:0px;">$content = get_content($url2, $cookie); <br style="margin:0px;padding:0px;">//删除cookie文件 <br style="margin:0px;padding:0px;">
@ unlink($cookie); <br style="margin:0px;padding:0px;">//匹配页面信息 <br style="margin:0px;padding:0px;">$preg = "/(.*)/i"; <br style="margin:0px;padding:0px;">
preg_match_all($preg, $content, $arr); <br style="margin:0px;padding:0px;">$str = $arr[1][0]; <br style="margin:0px;padding:0px;">//输出内容 <br style="margin:0px;padding:0px;">echo $str; <br style="margin:0px;padding:0px;">
运行上面的代码后,我们会看到最终得到了登录用户的头像。
使用总结
1、初始化curl;
2、使用curl_setopt设置目标url,以及其他选项;
3、curl_exec,执行curl;
4、 执行后关闭curl;
5、 输出数据。
参考
《php中curl和curl介绍》,作者不详,
“使用 PHP CURL 发布数据”,作者:Veda,
《php使用curl模拟登录discuz,模拟发帖》,作者:tianxin,
免责声明:本文为原创文章,版权归作者所有。如需转载,请注明出处并保留原文链接: 查看全部
php curl抓取网页指定内容(PHP模拟登录并获取数据_post()使用的总结)
PHP模拟登录并获取数据
CURL 是一个强大的 PHP 库。使用PHP的cURL库可以轻松有效地抓取网页和采集内容,设置cookies来完成模拟登录网页,curl提供了丰富的功能,开发者可以从PHP手册中获取更多关于cURL的信息。本文以模拟登录开源中国(oschina)为例,与大家分享cURL的使用。
PHP的curl()在抓取网页的效率上比较高,并且支持多线程,而file_get_contents()的效率稍低。当然,使用curl时需要开启curl扩展。
代码实战
我们先来看看登录部分的代码:
//模拟登录 <br style="margin:0px;padding:0px;">function login_post($url, $cookie, $post) { <br style="margin:0px;padding:0px;">
$curl = curl_init();//初始化curl模块 <br style="margin:0px;padding:0px;">
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址 <br style="margin:0px;padding:0px;">
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息 <br style="margin:0px;padding:0px;">
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息 <br style="margin:0px;padding:0px;">
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中 <br style="margin:0px;padding:0px;">
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交 <br style="margin:0px;padding:0px;">
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息 <br style="margin:0px;padding:0px;">
curl_exec($curl);//执行cURL <br style="margin:0px;padding:0px;">
curl_close($curl);//关闭cURL资源,并且释放系统资源 <br style="margin:0px;padding:0px;">
} <br style="margin:0px;padding:0px;">
login_post()函数首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的URL地址、保存的cookie文件、post数据(用户名密码等信息)、返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 自带的 http_build_query() 可以将数组转换为串联字符串。
接下来,如果登录成功,我们需要获取登录成功后的页面信息。
//登录成功后获取数据 <br style="margin:0px;padding:0px;">function get_content($url, $cookie) { <br style="margin:0px;padding:0px;">
$ch = curl_init(); <br style="margin:0px;padding:0px;">
curl_setopt($ch, CURLOPT_URL, $url); <br style="margin:0px;padding:0px;">
curl_setopt($ch, CURLOPT_HEADER, 0); <br style="margin:0px;padding:0px;">
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); <br style="margin:0px;padding:0px;">
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie <br style="margin:0px;padding:0px;">
$rs = curl_exec($ch); //执行cURL抓取页面内容 <br style="margin:0px;padding:0px;">
curl_close($ch); <br style="margin:0px;padding:0px;">
return $rs; <br style="margin:0px;padding:0px;">
} <br style="margin:0px;padding:0px;">
函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们设置CURLOPT_RETURNTRANSFER为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
我们的最终目标是获取模拟登录后的信息,即只有正常登录成功才能获取的有用信息。接下来我们以开源中国移动版为例,看看登录成功后如何抓取信息。
//设置post的数据 <br style="margin:0px;padding:0px;">$post = array ( <br style="margin:0px;padding:0px;">
'email' => 'oschina账户', <br style="margin:0px;padding:0px;">
'pwd' => 'oschina密码', <br style="margin:0px;padding:0px;">
'goto_page' => '/my', <br style="margin:0px;padding:0px;">
'error_page' => '/login', <br style="margin:0px;padding:0px;">
'save_login' => '1', <br style="margin:0px;padding:0px;">
'submit' => '现在登录' <br style="margin:0px;padding:0px;">
); <br style="margin:0px;padding:0px;">
<br style="margin:0px;padding:0px;">//登录地址 <br style="margin:0px;padding:0px;">$url = "http://m.oschina.net/action/user/login"; <br style="margin:0px;padding:0px;">//设置cookie保存路径 <br style="margin:0px;padding:0px;">$cookie = dirname(__FILE__) . '/cookie_oschina.txt'; <br style="margin:0px;padding:0px;">//登录后要获取信息的地址 <br style="margin:0px;padding:0px;">$url2 = "http://m.oschina.net/my"; <br style="margin:0px;padding:0px;">//模拟登录 <br style="margin:0px;padding:0px;">
login_post($url, $cookie, $post); <br style="margin:0px;padding:0px;">//获取登录页的信息 <br style="margin:0px;padding:0px;">$content = get_content($url2, $cookie); <br style="margin:0px;padding:0px;">//删除cookie文件 <br style="margin:0px;padding:0px;">
@ unlink($cookie); <br style="margin:0px;padding:0px;">//匹配页面信息 <br style="margin:0px;padding:0px;">$preg = "/(.*)/i"; <br style="margin:0px;padding:0px;">
preg_match_all($preg, $content, $arr); <br style="margin:0px;padding:0px;">$str = $arr[1][0]; <br style="margin:0px;padding:0px;">//输出内容 <br style="margin:0px;padding:0px;">echo $str; <br style="margin:0px;padding:0px;">
运行上面的代码后,我们会看到最终得到了登录用户的头像。

使用总结
1、初始化curl;
2、使用curl_setopt设置目标url,以及其他选项;
3、curl_exec,执行curl;
4、 执行后关闭curl;
5、 输出数据。
参考
《php中curl和curl介绍》,作者不详,
“使用 PHP CURL 发布数据”,作者:Veda,
《php使用curl模拟登录discuz,模拟发帖》,作者:tianxin,
免责声明:本文为原创文章,版权归作者所有。如需转载,请注明出处并保留原文链接: