
php curl抓取网页指定内容
php curl抓取网页指定内容(PHP建立CURL请求的基本步骤和基本操作步骤(组图) )
网站优化 • 优采云 发表了文章 • 0 个评论 • 56 次浏览 • 2021-10-29 07:04
)
CURL 可以使用 URL 语法来模拟浏览器传输数据。因为是模拟浏览器,所以还支持FTP、FTPS、HTTP、HTTPS、GOPHER、TELNET、DICT、FILE、LDAP等多种协议。很好的支持,包括一些:HTTPS认证、HTTP POST方式、HTTP PUT方式、FTP上传、keyberos认证、HTTP上传、代理服务器、cookies、用户名/密码认证、下载文件断点恢复、上传文件断点恢复上传、http代理服务器管道,甚至支持IPv6,scoket5代理服务器,通过http代理服务器上传文件到FTP服务器等等。
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取网页内容,cURL 都是一个强大的 PHP 库。
1、PHP建立CURL请求的基本步骤
①:初始化
1 curl_init()
②:设置属性
1 curl_setopt().有一长串cURL参数可供设置,它们能指定URL请求的各个细节。
③:执行并得到结果
④:松开手柄
1 curl_close()
2、包装:
1 public function http_query($url, $get = null, $post = null)
2 {
3 if (isset($get)) {
4 if (substr_count($url, '?') > 0) {
5 $url .= "&" . http_build_query($get);
6 } else {
7 $url .= "?" . http_build_query($get);
8 }
9 }
10 // 初始化一个cURL会话
11 $ch = curl_init($url);
12 if (isset($post)) {
13 curl_setopt($ch, CURLOPT_POST, TRUE); #开启post
14 curl_setopt($ch, CURLOPT_POSTFIELDS, $post); #post数据
15 }
16 curl_setopt($ch, CURLOPT_HEADER, 0); #是否需要头部信息(否)
17 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); #如果成功只将结果返回,不自动输出任何内容。
18 curl_setopt($ch, CURLOPT_TIMEOUT, 5); #设置允许执行的最长秒数。
19 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); #在发起连接前等待的时间,如果设置为0,则无限等待。
20 //忽略证书
21 if (substr($url, 0, 5) == 'https') {
22 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
23 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
24 }
25 $curl_result = curl_exec($ch);
26 if ($curl_result) {
27 $data = $curl_result;
28 } else {
29 $data = curl_error($ch);
30 }
31 curl_close($ch); #关闭cURL会话
32 return $data;
33 } 查看全部
php curl抓取网页指定内容(PHP建立CURL请求的基本步骤和基本操作步骤(组图)
)
CURL 可以使用 URL 语法来模拟浏览器传输数据。因为是模拟浏览器,所以还支持FTP、FTPS、HTTP、HTTPS、GOPHER、TELNET、DICT、FILE、LDAP等多种协议。很好的支持,包括一些:HTTPS认证、HTTP POST方式、HTTP PUT方式、FTP上传、keyberos认证、HTTP上传、代理服务器、cookies、用户名/密码认证、下载文件断点恢复、上传文件断点恢复上传、http代理服务器管道,甚至支持IPv6,scoket5代理服务器,通过http代理服务器上传文件到FTP服务器等等。
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取网页内容,cURL 都是一个强大的 PHP 库。
1、PHP建立CURL请求的基本步骤
①:初始化
1 curl_init()
②:设置属性
1 curl_setopt().有一长串cURL参数可供设置,它们能指定URL请求的各个细节。
③:执行并得到结果
④:松开手柄
1 curl_close()
2、包装:
1 public function http_query($url, $get = null, $post = null)
2 {
3 if (isset($get)) {
4 if (substr_count($url, '?') > 0) {
5 $url .= "&" . http_build_query($get);
6 } else {
7 $url .= "?" . http_build_query($get);
8 }
9 }
10 // 初始化一个cURL会话
11 $ch = curl_init($url);
12 if (isset($post)) {
13 curl_setopt($ch, CURLOPT_POST, TRUE); #开启post
14 curl_setopt($ch, CURLOPT_POSTFIELDS, $post); #post数据
15 }
16 curl_setopt($ch, CURLOPT_HEADER, 0); #是否需要头部信息(否)
17 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); #如果成功只将结果返回,不自动输出任何内容。
18 curl_setopt($ch, CURLOPT_TIMEOUT, 5); #设置允许执行的最长秒数。
19 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); #在发起连接前等待的时间,如果设置为0,则无限等待。
20 //忽略证书
21 if (substr($url, 0, 5) == 'https') {
22 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
23 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
24 }
25 $curl_result = curl_exec($ch);
26 if ($curl_result) {
27 $data = $curl_result;
28 } else {
29 $data = curl_error($ch);
30 }
31 curl_close($ch); #关闭cURL会话
32 return $data;
33 }
php curl抓取网页指定内容(php的curl()在抓取网页的效率方面是比较高的)
网站优化 • 优采云 发表了文章 • 0 个评论 • 56 次浏览 • 2021-10-29 07:01
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,释放资源。其中,我们设置curlot_returntransfer为1自动返回信息,curlot_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,释放资源。其中,我们设置curlot_returntransfer为1自动返回信息,curlot_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抓取网页指定内容的正则表达式javascript强制解析页面内容)
网站优化 • 优采云 发表了文章 • 0 个评论 • 63 次浏览 • 2021-10-26 00:05
phpcurl抓取网页指定内容的正则表达式javascript强制解析页面内容的正则表达式至于文本抓取,比如某个网站在搜索过程中只返回了网页的二进制地址(不是正则表达式)的文本,那只能借助各种工具了python抓取全文或抓取某些文件的文本内容html5把整个页面中dom元素点对点抓取函数css定位的正则表达式正则表达式post请求数据的正则表达式。
全部文本
php正则表达式强制抓取(用re的同学说php同样用正则表达式,个人感觉正则表达式的使用场景,比php要广泛)
网页上大量的字符不一定是一一对应的,正则表达式可以识别出来,然后利用正则表达式去匹配文本。
看用什么语言,如果有各种工具处理文本,常用的有php,python。其实抓取网页内容没什么区别,知道怎么正则表达式匹配就行,用的什么网站,google一下都有教程,里面还会涉及到很多其他比如加密,xss什么的东西,遇到问题多百度。
用requests,requests就可以抓取各种网页,php和java的请求库是dom库。
常用的全部文本抓取库有:phpaiohttp,javahibernate(utils)。基于java的请求库是:servlet。 查看全部
php curl抓取网页指定内容(phpcurl抓取网页指定内容的正则表达式javascript强制解析页面内容)
phpcurl抓取网页指定内容的正则表达式javascript强制解析页面内容的正则表达式至于文本抓取,比如某个网站在搜索过程中只返回了网页的二进制地址(不是正则表达式)的文本,那只能借助各种工具了python抓取全文或抓取某些文件的文本内容html5把整个页面中dom元素点对点抓取函数css定位的正则表达式正则表达式post请求数据的正则表达式。
全部文本
php正则表达式强制抓取(用re的同学说php同样用正则表达式,个人感觉正则表达式的使用场景,比php要广泛)
网页上大量的字符不一定是一一对应的,正则表达式可以识别出来,然后利用正则表达式去匹配文本。
看用什么语言,如果有各种工具处理文本,常用的有php,python。其实抓取网页内容没什么区别,知道怎么正则表达式匹配就行,用的什么网站,google一下都有教程,里面还会涉及到很多其他比如加密,xss什么的东西,遇到问题多百度。
用requests,requests就可以抓取各种网页,php和java的请求库是dom库。
常用的全部文本抓取库有:phpaiohttp,javahibernate(utils)。基于java的请求库是:servlet。
php curl抓取网页指定内容(PHP外部资源函数fopen/file_get_contents好很多)
网站优化 • 优采云 发表了文章 • 0 个评论 • 56 次浏览 • 2021-10-20 19:21
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) 来模拟浏览器
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) 来模拟浏览器
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最后更新:2021年6月17日:1051. )
网站优化 • 优采云 发表了文章 • 0 个评论 • 63 次浏览 • 2021-10-18 10:15
PHP最后更新:2021年6月17日:1051.
)
php curl 网页内容出现乱码、不可用的解决方法
分类:PHP
上次更新:2021 年 6 月 17 日
点击次数:105
1.如果使用curl请求网页,多方网页使用gzip压缩,获取的内容可能会出现乱码。
解决方案
$url = 'http://www.du52.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22");
curl_setopt($ch, CURLOPT_ENCODING ,'gzip'); //加入gzip解析
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
var_dump($info);
var_dump($output);
2.如果请求的网页被重定向,通过header('Location:'),那么请求的网页数据可能为空,即无法获取内容。
解决方案
$url = 'http://www.mkv8.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION ,1); //加入重定向处理
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
var_dump($info);
var_dump($output); 查看全部
php curl抓取网页指定内容(
PHP最后更新:2021年6月17日:1051.
)
php curl 网页内容出现乱码、不可用的解决方法
分类:PHP
上次更新:2021 年 6 月 17 日
点击次数:105
1.如果使用curl请求网页,多方网页使用gzip压缩,获取的内容可能会出现乱码。
解决方案
$url = 'http://www.du52.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22");
curl_setopt($ch, CURLOPT_ENCODING ,'gzip'); //加入gzip解析
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
var_dump($info);
var_dump($output);
2.如果请求的网页被重定向,通过header('Location:'),那么请求的网页数据可能为空,即无法获取内容。
解决方案
$url = 'http://www.mkv8.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION ,1); //加入重定向处理
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
var_dump($info);
var_dump($output);
php curl抓取网页指定内容(这篇文章主要是对CURLOPT_CUSTOMREQUEST参数的运用(图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 124 次浏览 • 2021-10-10 07:11
本文文章主要介绍PHP curl实现302跳转后的页面的例子,主要是CURLOPT_CUSTOMREQUEST参数的使用,需要的朋友可以参考
PHP的CURL正常抓取页面程序如下:
$url = 'http://www.baidu.com'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_VERBOSE, true); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_NOBODY, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 20); curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); $ret = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch);
如果抓取到302状态,那是因为在爬取过程中,有些跳转需要给下一个链接传递参数,如果没有收到相应的参数,下一个链接也被设置了,就是非法访问。
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
显示应该是正常的。
上面是用来抓取函数的,应该几乎没有问题。您可以查看 CURLOPT_CUSTOMREQUEST 相关信息。
使用自定义请求消息而不是“GET”或“HEAD”作为 HTTP 请求。这对于执行“DELETE”或其他更模糊的 HTTP 请求很有用。有效值为“GET”、“POST”、“CONNECT”等。换句话说,不要在此处输入整个 HTTP 请求。例如,输入“GET /index.html HTTP/1.0\r\n\r\n”是错误的。
以上就是302跳转后页面的PHP curl实现示例的详细内容。更多详情请关注其他相关html中文网站文章! 查看全部
php curl抓取网页指定内容(这篇文章主要是对CURLOPT_CUSTOMREQUEST参数的运用(图))
本文文章主要介绍PHP curl实现302跳转后的页面的例子,主要是CURLOPT_CUSTOMREQUEST参数的使用,需要的朋友可以参考
PHP的CURL正常抓取页面程序如下:
$url = 'http://www.baidu.com'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_VERBOSE, true); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_NOBODY, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 20); curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); $ret = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch);
如果抓取到302状态,那是因为在爬取过程中,有些跳转需要给下一个链接传递参数,如果没有收到相应的参数,下一个链接也被设置了,就是非法访问。
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
显示应该是正常的。
上面是用来抓取函数的,应该几乎没有问题。您可以查看 CURLOPT_CUSTOMREQUEST 相关信息。
使用自定义请求消息而不是“GET”或“HEAD”作为 HTTP 请求。这对于执行“DELETE”或其他更模糊的 HTTP 请求很有用。有效值为“GET”、“POST”、“CONNECT”等。换句话说,不要在此处输入整个 HTTP 请求。例如,输入“GET /index.html HTTP/1.0\r\n\r\n”是错误的。
以上就是302跳转后页面的PHP curl实现示例的详细内容。更多详情请关注其他相关html中文网站文章!
php curl抓取网页指定内容(PHP库模拟登录开源中国的移动版为例库使用总结)
网站优化 • 优采云 发表了文章 • 0 个评论 • 65 次浏览 • 2021-10-09 05:09
CURL 是一个强大的 PHP 库。使用PHP的cURL库可以方便有效的抓取网页和采集内容,设置cookies来完成模拟登录网页,curl提供了丰富的功能,开发者可以从PHP手册中获取更多关于cURL的信息。本文以模拟登录开源中国(oschina)为例,有需要的朋友可以参考
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模拟登录和获取详细数据示例的详细内容。更多详情请关注其他相关html中文网站文章! 查看全部
php curl抓取网页指定内容(PHP库模拟登录开源中国的移动版为例库使用总结)
CURL 是一个强大的 PHP 库。使用PHP的cURL库可以方便有效的抓取网页和采集内容,设置cookies来完成模拟登录网页,curl提供了丰富的功能,开发者可以从PHP手册中获取更多关于cURL的信息。本文以模拟登录开源中国(oschina)为例,有需要的朋友可以参考
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模拟登录和获取详细数据示例的详细内容。更多详情请关注其他相关html中文网站文章!
php curl抓取网页指定内容(PHPcurl_RETURNTRANSFER直接输出,怎么做呢?(一) )
网站优化 • 优采云 发表了文章 • 0 个评论 • 70 次浏览 • 2021-10-08 05:27
)
CURL中有一个参数CURLOPT_RETURNTRANSFER:该参数以文件流的形式返回curl_exec()获取的信息,而不是直接输出。例如:CURLOPT_RETURNTRANSFER 参数的作用是
将 CRUL 获取的内容赋值给一个变量。默认为0,直接返回获取的输出文本流。有时,我们需要将返回值用于判断或其他目的。因此,有时我们希望将内容返回为
对于变量的存储,而不是直接输出,那应该怎么做呢?本文文章主要介绍php curl_exec()函数CURL获取返回值的方法
其实 CURLOPT_RETURNTRANSFER 是可以设置的。如果设置为CURLOPT_RETURNTRANSFER 1,它会使用PHP curl 获取页面内容或提交数据,并将其存储为变量而不是直接输出。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
我们看下面两个例子,
1、curl 获取页面内容,直接输出示例:
运行代码,你会发现获取到的cul内容会直接输出。
2、curl 获取页面内容,不直接输出示例:
当我们将 CURLOPT_RETURNTRANSFER 设置为 1 时,页面没有输出内容。我们将获取到的内容赋值给一个变量$response,使用echo输出的变量$response。
查看全部
php curl抓取网页指定内容(PHPcurl_RETURNTRANSFER直接输出,怎么做呢?(一)
)
CURL中有一个参数CURLOPT_RETURNTRANSFER:该参数以文件流的形式返回curl_exec()获取的信息,而不是直接输出。例如:CURLOPT_RETURNTRANSFER 参数的作用是
将 CRUL 获取的内容赋值给一个变量。默认为0,直接返回获取的输出文本流。有时,我们需要将返回值用于判断或其他目的。因此,有时我们希望将内容返回为
对于变量的存储,而不是直接输出,那应该怎么做呢?本文文章主要介绍php curl_exec()函数CURL获取返回值的方法
其实 CURLOPT_RETURNTRANSFER 是可以设置的。如果设置为CURLOPT_RETURNTRANSFER 1,它会使用PHP curl 获取页面内容或提交数据,并将其存储为变量而不是直接输出。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
我们看下面两个例子,
1、curl 获取页面内容,直接输出示例:
运行代码,你会发现获取到的cul内容会直接输出。
2、curl 获取页面内容,不直接输出示例:
当我们将 CURLOPT_RETURNTRANSFER 设置为 1 时,页面没有输出内容。我们将获取到的内容赋值给一个变量$response,使用echo输出的变量$response。

php curl抓取网页指定内容(param下载未知文件$=string$url远程图片)
网站优化 • 优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2021-10-06 14:01
适用场景:
1.下载未知文件
$img1 = "";
$img2 = "";
以上均为图翻。打开浏览器可以看到是图片,但是从URL看不到。上图来自微信。如果你想把图片拉到自己的服务器上,可以使用下面的方法。
/**
* 远程下载图片文件
* @param string $url [远程图片的URL]
* @param string $path [要保存的路径]
* @return string [保存后返回获取文件路径]
*/
function downloadImageFromUrl($url, $path = "./download/images/") {
// 因为不知道最后接受到的文件是什么格式,先建立一个临时文件,用于保存
$tmpFile = tempnam(sys_get_temp_dir(), 'image');
# 文件下载 BEGIN #
// 打开临时文件,用于写入(w),b二进制文件
$resource = fopen($tmpFile, 'wb');
// 初始化curl
$curl = curl_init($url);
// 设置输出文件为刚打开的
curl_setopt($curl, CURLOPT_FILE, $resource);
// 不需要头文件
curl_setopt($curl, CURLOPT_HEADER, 0);
// 执行
curl_exec($curl);
// 关闭curl
curl_close($curl);
// 关闭文件
fclose($resource);
# 文件下载 END #
// 获取文件类型
if (function_exists('exif_imagetype')) {
// 读取一个图像的第一个字节并检查其签名(这里需要打开mbstring及php_exif)
$fileType = exif_imagetype($tmpFile);
} else {
// 获取文件大小,里面第二个参数是文件类型 (这里后缀可以直接通过getimagesize($url)来获取,但是很慢)
$fileInfo = getimagesize($tmpFile);
$fileType = $fileInfo[2];
}
// 根据文件类型获取后缀名
$extension = image_type_to_extension($fileType);
// 计算指定文件的 MD5 散列值,作为保存的文件名,重复下载同一个文件不会产生重复保存,相同的文件散列值相同
$md5FileName = md5_file($tmpFile);
// 最终保存的文件
$returnFile = $path . $md5FileName . $extension;
// 检查传过来的路径是否存在,不存在就创建
if (!is_dir($path)) {
mkdir($path, 0777, true);
}
// 复制临时文件到最终保存的文件中
copy($tmpFile, $returnFile);
// 释放临时文件
@unlink($tmpFile);
// 返回保存的文件路径
return $returnFile;
}
以上功能仅适用于下载图片文件,修改其他类型即可实现。
这种方法下载速度很快。 查看全部
php curl抓取网页指定内容(param下载未知文件$=string$url远程图片)
适用场景:
1.下载未知文件
$img1 = "";
$img2 = "";
以上均为图翻。打开浏览器可以看到是图片,但是从URL看不到。上图来自微信。如果你想把图片拉到自己的服务器上,可以使用下面的方法。
/**
* 远程下载图片文件
* @param string $url [远程图片的URL]
* @param string $path [要保存的路径]
* @return string [保存后返回获取文件路径]
*/
function downloadImageFromUrl($url, $path = "./download/images/") {
// 因为不知道最后接受到的文件是什么格式,先建立一个临时文件,用于保存
$tmpFile = tempnam(sys_get_temp_dir(), 'image');
# 文件下载 BEGIN #
// 打开临时文件,用于写入(w),b二进制文件
$resource = fopen($tmpFile, 'wb');
// 初始化curl
$curl = curl_init($url);
// 设置输出文件为刚打开的
curl_setopt($curl, CURLOPT_FILE, $resource);
// 不需要头文件
curl_setopt($curl, CURLOPT_HEADER, 0);
// 执行
curl_exec($curl);
// 关闭curl
curl_close($curl);
// 关闭文件
fclose($resource);
# 文件下载 END #
// 获取文件类型
if (function_exists('exif_imagetype')) {
// 读取一个图像的第一个字节并检查其签名(这里需要打开mbstring及php_exif)
$fileType = exif_imagetype($tmpFile);
} else {
// 获取文件大小,里面第二个参数是文件类型 (这里后缀可以直接通过getimagesize($url)来获取,但是很慢)
$fileInfo = getimagesize($tmpFile);
$fileType = $fileInfo[2];
}
// 根据文件类型获取后缀名
$extension = image_type_to_extension($fileType);
// 计算指定文件的 MD5 散列值,作为保存的文件名,重复下载同一个文件不会产生重复保存,相同的文件散列值相同
$md5FileName = md5_file($tmpFile);
// 最终保存的文件
$returnFile = $path . $md5FileName . $extension;
// 检查传过来的路径是否存在,不存在就创建
if (!is_dir($path)) {
mkdir($path, 0777, true);
}
// 复制临时文件到最终保存的文件中
copy($tmpFile, $returnFile);
// 释放临时文件
@unlink($tmpFile);
// 返回保存的文件路径
return $returnFile;
}
以上功能仅适用于下载图片文件,修改其他类型即可实现。
这种方法下载速度很快。
php curl抓取网页指定内容(PHPcurl或file_get_contents获取需要授权页面的方法)
网站优化 • 优采云 发表了文章 • 0 个评论 • 69 次浏览 • 2021-10-05 04:14
本文文章主要介绍了PHP curl或file_uuu内容是一种获取授权页面的方法,具有很好的参考价值。我们跟着小编一起去看看
今天,由于工作需要,curl/file是必需的。获取内容获取需要授权的页面内容。解决问题后,我写了这篇文章与大家分享
PHP curl扩展可以在服务器端发起post/get请求,访问页面,并获取页面的返回数据
例如,要获取的页面:
使用curl获取server.php页面
如果该服务没有安装PHP curl扩展名,那么use file_uget_uuucontents还可以启动请求以获取页面的返回数据
使用curl和file_uu获取内容返回的结果是相同的
Array ( [content] => fdipzone blog )
对于需要授权的页面,例如使用htpasswd+的页面。Htaccess设置目录访问权限,直接使用上述方法会返回401未授权错误
此示例不使用htpasswd+。Htaccess控制访问权限,但使用$Server['php\u auth\u user']和$Server['php\u auth\u pw']这两个服务器参数
修正如下:
设置帐户:fdipzone密码:654321
在curl中,一个参数是curlopt_uuuserpwd,我们可以使用这个参数在请求时发送帐户密码
curl_uusetopt($ch,curlopt_userpwd,'帐户:密码')
curl请求的程序修改为:
和文件uu获取uuu内容如果要发送帐户和密码,则需要手动拼接标题
文件获取内容请求的程序被修改为:
源下载地址:点击查看
上面是PHP curl或file_uget_uuu内容,用于获取授权页面方法的详细信息。欲了解更多信息,请关注其他相关文章 查看全部
php curl抓取网页指定内容(PHPcurl或file_get_contents获取需要授权页面的方法)
本文文章主要介绍了PHP curl或file_uuu内容是一种获取授权页面的方法,具有很好的参考价值。我们跟着小编一起去看看
今天,由于工作需要,curl/file是必需的。获取内容获取需要授权的页面内容。解决问题后,我写了这篇文章与大家分享
PHP curl扩展可以在服务器端发起post/get请求,访问页面,并获取页面的返回数据
例如,要获取的页面:
使用curl获取server.php页面
如果该服务没有安装PHP curl扩展名,那么use file_uget_uuucontents还可以启动请求以获取页面的返回数据
使用curl和file_uu获取内容返回的结果是相同的
Array ( [content] => fdipzone blog )
对于需要授权的页面,例如使用htpasswd+的页面。Htaccess设置目录访问权限,直接使用上述方法会返回401未授权错误
此示例不使用htpasswd+。Htaccess控制访问权限,但使用$Server['php\u auth\u user']和$Server['php\u auth\u pw']这两个服务器参数
修正如下:
设置帐户:fdipzone密码:654321
在curl中,一个参数是curlopt_uuuserpwd,我们可以使用这个参数在请求时发送帐户密码
curl_uusetopt($ch,curlopt_userpwd,'帐户:密码')
curl请求的程序修改为:
和文件uu获取uuu内容如果要发送帐户和密码,则需要手动拼接标题
文件获取内容请求的程序被修改为:
源下载地址:点击查看
上面是PHP curl或file_uget_uuu内容,用于获取授权页面方法的详细信息。欲了解更多信息,请关注其他相关文章
php curl抓取网页指定内容(使用phpcurl获取页面内容或提交数据希望返回)
网站优化 • 优采云 发表了文章 • 0 个评论 • 100 次浏览 • 2021-10-05 00:14
使用 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请求 不验证证书和hostscurl_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页面内容的设置方法,不直接输出返回结果,都是编辑器共享的内容。希望能给大家一个参考,希望大家支持网页设计。
TAG标签:php curl获取https页面内容,不直接输出返回结果的设置方法
易白网是国内知名的建站品牌服务商。我们拥有九年网站建设、网站制作、网页设计、PHP开发、域名注册和虚拟主机服务经验,提供自助建站服务。享誉全国。近年来整合团队优势,自主研发了可视化多用户“电云构建系统”3.0平台版,拖放排版网站生产设计,易于上手实现pc站、手机微网站、小程序、APP一体化全网营销网站建设,已成功为全国数百家在线企业提供自助平台建设服务。
上一篇:PHP基于cookie实现在线人数统计功能的例子
下一篇:详解php如何判断是http还是https,以及如何获取当前url
[返回新闻列表] 查看全部
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请求 不验证证书和hostscurl_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页面内容的设置方法,不直接输出返回结果,都是编辑器共享的内容。希望能给大家一个参考,希望大家支持网页设计。
TAG标签:php curl获取https页面内容,不直接输出返回结果的设置方法
易白网是国内知名的建站品牌服务商。我们拥有九年网站建设、网站制作、网页设计、PHP开发、域名注册和虚拟主机服务经验,提供自助建站服务。享誉全国。近年来整合团队优势,自主研发了可视化多用户“电云构建系统”3.0平台版,拖放排版网站生产设计,易于上手实现pc站、手机微网站、小程序、APP一体化全网营销网站建设,已成功为全国数百家在线企业提供自助平台建设服务。
上一篇:PHP基于cookie实现在线人数统计功能的例子
下一篇:详解php如何判断是http还是https,以及如何获取当前url
[返回新闻列表]
php curl抓取网页指定内容(PHP的CURL正常抓取页面程序:如果你抓取到的是302状态)
网站优化 • 优采云 发表了文章 • 0 个评论 • 84 次浏览 • 2021-10-01 07:21
PHP的CURL正常抓取页面程序如下:
$url = 'http://www.baidu.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$ret = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
如果抓取到302状态,那是因为在爬取过程中,有些跳转需要给下一个链接传递参数,如果没有收到相应的参数,下一个链接也被设置了,就是非法访问。
显示应该是正常的。
上面是用来抓取函数的,应该几乎没有问题。您可以查看 CURLOPT_CUSTOMREQUEST 相关信息。
使用自定义请求消息而不是“GET”或“HEAD”作为 HTTP 请求。这对于执行“DELETE”或其他更模糊的 HTTP 请求很有用。有效值为“GET”、“POST”、“CONNECT”等。换句话说,不要在此处输入整个 HTTP 请求。例如输入“GET /index.html HTTP/1.0rnrn”是错误的。 查看全部
php curl抓取网页指定内容(PHP的CURL正常抓取页面程序:如果你抓取到的是302状态)
PHP的CURL正常抓取页面程序如下:
$url = 'http://www.baidu.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$ret = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
如果抓取到302状态,那是因为在爬取过程中,有些跳转需要给下一个链接传递参数,如果没有收到相应的参数,下一个链接也被设置了,就是非法访问。
显示应该是正常的。
上面是用来抓取函数的,应该几乎没有问题。您可以查看 CURLOPT_CUSTOMREQUEST 相关信息。
使用自定义请求消息而不是“GET”或“HEAD”作为 HTTP 请求。这对于执行“DELETE”或其他更模糊的 HTTP 请求很有用。有效值为“GET”、“POST”、“CONNECT”等。换句话说,不要在此处输入整个 HTTP 请求。例如输入“GET /index.html HTTP/1.0rnrn”是错误的。
php curl抓取网页指定内容(phpcurl抓取网页指定内容(bootstrap模块)定制文件地址bootstrap)
网站优化 • 优采云 发表了文章 • 0 个评论 • 63 次浏览 • 2021-09-28 16:17
phpcurl抓取网页指定内容(bootstrap模块)定制文件地址爬虫bootstrap模块推荐使用urllib2库定制php页面数据爬取对于一个不支持http请求的网站或者动态页面,可以通过使用bootstrap模块轻松的爬取页面进行存储。bootstrap库提供了大量的浏览器兼容性的数据,在提供了网页数据爬取等基本功能的同时,还提供了一些数据库或其他异步接口的api。
使用bootstrap爬取网页指定内容思路爬取有点类似于黑五网商城,它是phpcurl抓取,然后使用bootstrap模块定制,因此分三步:1.首先在互联网上找到对应商城的页面地址;2.通过curl库给网页地址发送请求,并传输给bootstrap模块;3.bootstrap模块定制页面信息进行实际操作,页面显示,然后将页面中的有价值内容的链接发送给爬虫。
项目中是使用requests库对request类进行定制爬取的,requests库可以用来分析json等文件。php和bootstrap模块关系:1.json格式是种双向的无序序列化格式,php通过http方法进行和json对象的交互,存储数据。2.bootstrap用于定制页面,在任意项目中,bootstrap也可以指定页面地址,将文件下载下来,存储进去。
3.bootstrap模块类似于http库中的setting.php文件,是网页爬取过程中重要的工具。bootstrap和浏览器兼容php通过http请求来获取文件,然后对所在文件进行缓存,到浏览器上进行加载。phpcurl抓取网页指定内容利用curl库,先定义一个curl对象方法,然后获取到页面的内容,然后将页面内容存储进去,利用bootstrap模块实现页面定制。
代码下载本项目实战在建立好bootstrap模块库的前提下进行开发的,并且只需要使用一个php的扩展库http.php文件。ame(1)将bootstrap模块压缩为dist文件。2.读取文件。php代码:-jack.php-jack/blob/master/modules/bootstrap/bootstrap3.jsx-jj.php-jj.jsx3.写入文件。
代码:-jj.php-jj.jsx4.通过请求post请求获取html页面元素。php代码:-jj.php-jj.jsx5.读取文件。php代码:-jj.php-jj.jsx6.解析文件。php代码:-jj.php-jj.jsx7.bootstrap模块定制页面内容。php代码:-jj.php-jj.jsx8.页面修改。php代码:-jj.php-jj.jsx,作者:猫小猫。 查看全部
php curl抓取网页指定内容(phpcurl抓取网页指定内容(bootstrap模块)定制文件地址bootstrap)
phpcurl抓取网页指定内容(bootstrap模块)定制文件地址爬虫bootstrap模块推荐使用urllib2库定制php页面数据爬取对于一个不支持http请求的网站或者动态页面,可以通过使用bootstrap模块轻松的爬取页面进行存储。bootstrap库提供了大量的浏览器兼容性的数据,在提供了网页数据爬取等基本功能的同时,还提供了一些数据库或其他异步接口的api。
使用bootstrap爬取网页指定内容思路爬取有点类似于黑五网商城,它是phpcurl抓取,然后使用bootstrap模块定制,因此分三步:1.首先在互联网上找到对应商城的页面地址;2.通过curl库给网页地址发送请求,并传输给bootstrap模块;3.bootstrap模块定制页面信息进行实际操作,页面显示,然后将页面中的有价值内容的链接发送给爬虫。
项目中是使用requests库对request类进行定制爬取的,requests库可以用来分析json等文件。php和bootstrap模块关系:1.json格式是种双向的无序序列化格式,php通过http方法进行和json对象的交互,存储数据。2.bootstrap用于定制页面,在任意项目中,bootstrap也可以指定页面地址,将文件下载下来,存储进去。
3.bootstrap模块类似于http库中的setting.php文件,是网页爬取过程中重要的工具。bootstrap和浏览器兼容php通过http请求来获取文件,然后对所在文件进行缓存,到浏览器上进行加载。phpcurl抓取网页指定内容利用curl库,先定义一个curl对象方法,然后获取到页面的内容,然后将页面内容存储进去,利用bootstrap模块实现页面定制。
代码下载本项目实战在建立好bootstrap模块库的前提下进行开发的,并且只需要使用一个php的扩展库http.php文件。ame(1)将bootstrap模块压缩为dist文件。2.读取文件。php代码:-jack.php-jack/blob/master/modules/bootstrap/bootstrap3.jsx-jj.php-jj.jsx3.写入文件。
代码:-jj.php-jj.jsx4.通过请求post请求获取html页面元素。php代码:-jj.php-jj.jsx5.读取文件。php代码:-jj.php-jj.jsx6.解析文件。php代码:-jj.php-jj.jsx7.bootstrap模块定制页面内容。php代码:-jj.php-jj.jsx8.页面修改。php代码:-jj.php-jj.jsx,作者:猫小猫。
php curl抓取网页指定内容(使用PHP的cURL库可以简单和有效地去抓网页。)
网站优化 • 优采云 发表了文章 • 0 个评论 • 70 次浏览 • 2021-09-28 11:14
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取网页内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个PHP库。
启用卷曲设置
首先我们要先判断我们的PHP是否启用了这个库,可以通过php_info()函数来获取这个信息。
如果在网页上可以看到如下输出,说明cURL库已经开启。
如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,去掉前面的分号。如下:
//取消下在的注释
extension=php_curl.dll
如果你在 Linux 下,那么你需要重新编译你的 PHP。编辑时需要开启编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这里有一个小程序:
从上面的程序可以看出,CURLOPT_POST是用来设置HTTP协议的POST方法而不是GET方法的,然后CURLOPT_POSTFIELDS是用来设置POST数据的。
关于代理服务器
下面是一个如何使用代理服务器的示例。请注意其中高亮的代码,代码很简单,我就不用多说了。
关于 SSL 和 Cookie 查看全部
php curl抓取网页指定内容(使用PHP的cURL库可以简单和有效地去抓网页。)
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取网页内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个PHP库。
启用卷曲设置
首先我们要先判断我们的PHP是否启用了这个库,可以通过php_info()函数来获取这个信息。
如果在网页上可以看到如下输出,说明cURL库已经开启。

如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,去掉前面的分号。如下:
//取消下在的注释
extension=php_curl.dll
如果你在 Linux 下,那么你需要重新编译你的 PHP。编辑时需要开启编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这里有一个小程序:
从上面的程序可以看出,CURLOPT_POST是用来设置HTTP协议的POST方法而不是GET方法的,然后CURLOPT_POSTFIELDS是用来设置POST数据的。
关于代理服务器
下面是一个如何使用代理服务器的示例。请注意其中高亮的代码,代码很简单,我就不用多说了。
关于 SSL 和 Cookie
php curl抓取网页指定内容(PHP的curl()效率就要稍低些,看看如何抓取到登录成功后的信息)
网站优化 • 优采云 发表了文章 • 0 个评论 • 64 次浏览 • 2021-09-28 00:09
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抓取网页指定内容(PHP手册(再次一句一句以强调)手册真乃圣经)
网站优化 • 优采云 发表了文章 • 0 个评论 • 80 次浏览 • 2021-09-27 22:05
PHP有内置的函数来捕获网页内容,如file()、file()uu获取内容()等等,所有这些都支持URL参数。但这些功能无法实现更复杂的操作
Curl是一个文件传输工具,它使用URL语法在命令行上工作。Curl提供了一个PHP扩展。使用此扩展,可以完全模拟浏览器操作。就像使用浏览器浏览网页一样,您可以设置标题内容、设置cookie数据、发布数据、上载文件、设置代理等。事实上,我们这里讨论的爬行web内容只是一个常见的应用程序
官方网站:
PHP curl扩展:
在windows下添加此扩展非常简单,只需加载PHP_Curl.dll即可。删除curl.dll前面的php.ini文件扩展名=php_uu分号,将curl.dll复制到php扩展目录或C:\windows\system32目录中,然后重新启动web服务器。php的zip包中提供了php_Curl.dll
在Linux下,首先需要安装curl。一种方法是将其编译成PHP,并在编译和配置时添加--with curl[=dir]。另一种方法是将其编译成PHP模块并加载。curl模块的编译方法与其他PHP模块的编译方法相同。以下是基本命令:
CD/path/to/PHP/source进入PHP源目录
CD ext/curl输入curl模块的源目录
/Usr/local/PHP/bin/phpize生成编译配置文件
./configure--with-php-config=/usr/local/php/bin/php-config
制造
安装
编译完成后,生成curl.so,修改php.ini,加载模块:
extension=“/path/to/extension/curl.so”
测试是否加载了curl扩展名并创建一个新的PHP文件:
抓取网页的示例:
curl_uusetopt()可以设置许多选项。有关更多选项,请参阅PHP手册
有关更多函数及其用法,请参阅PHP手册(另一个强调PHP手册是圣经的废话)
) 查看全部
php curl抓取网页指定内容(PHP手册(再次一句一句以强调)手册真乃圣经)
PHP有内置的函数来捕获网页内容,如file()、file()uu获取内容()等等,所有这些都支持URL参数。但这些功能无法实现更复杂的操作
Curl是一个文件传输工具,它使用URL语法在命令行上工作。Curl提供了一个PHP扩展。使用此扩展,可以完全模拟浏览器操作。就像使用浏览器浏览网页一样,您可以设置标题内容、设置cookie数据、发布数据、上载文件、设置代理等。事实上,我们这里讨论的爬行web内容只是一个常见的应用程序
官方网站:
PHP curl扩展:
在windows下添加此扩展非常简单,只需加载PHP_Curl.dll即可。删除curl.dll前面的php.ini文件扩展名=php_uu分号,将curl.dll复制到php扩展目录或C:\windows\system32目录中,然后重新启动web服务器。php的zip包中提供了php_Curl.dll
在Linux下,首先需要安装curl。一种方法是将其编译成PHP,并在编译和配置时添加--with curl[=dir]。另一种方法是将其编译成PHP模块并加载。curl模块的编译方法与其他PHP模块的编译方法相同。以下是基本命令:
CD/path/to/PHP/source进入PHP源目录
CD ext/curl输入curl模块的源目录
/Usr/local/PHP/bin/phpize生成编译配置文件
./configure--with-php-config=/usr/local/php/bin/php-config
制造
安装
编译完成后,生成curl.so,修改php.ini,加载模块:
extension=“/path/to/extension/curl.so”
测试是否加载了curl扩展名并创建一个新的PHP文件:
抓取网页的示例:
curl_uusetopt()可以设置许多选项。有关更多选项,请参阅PHP手册
有关更多函数及其用法,请参阅PHP手册(另一个强调PHP手册是圣经的废话)

)
php curl抓取网页指定内容(如何利用正则匹配从网站的页面中提取我们想要的招聘信息)
网站优化 • 优采云 发表了文章 • 0 个评论 • 93 次浏览 • 2021-09-21 11:26
在web开发中,我们有时需要从其他web页面的内容中提取所需的信息。为了获取页面信息,我们需要使用curl方法,但是为了从捕获的信息中提取我们真正需要的内容,我们需要使用正则表达式进行匹配
在这里,我将简要介绍如何使用常规匹配从网站页面提取我们想要的招聘信息,分为以下步骤:
1、分析我们想要捕获内容的网页的URL组成
2、根据实际情况拼接我们需要的URL
3、阅读网页内容
4、根据返回的内容,我们使用常规匹配来匹配我们需要的内容
步骤1:分析URL组成:
在网站的“搜索职位”页面上,选择工作地点和职位并搜索
发现URL的组成如下:
%E7%BB%B5%E9%98%B3&;kw=爪哇岛&;sm=0&;p=1
其中:
Ji参数的值为工作位置:此处显示的值“%E7%BB%B5%E9%98%B3”未被篡改;这是使用URLEncode进行中文编码的结果。我们也可以直接说出代码,比如Ji=绵阳
kW参数的值为位置
p参数是页码
步骤2现在,让我们构建要访问的URL:
步骤3使用文件获取内容函数获取网站内容:
现在您需要使用Google browser的调试工具来观察这部分的HTML结构,以便编写相应的正则表达式:
此部分的HTML结构为:
步骤4:使用正则表达式匹配所需内容:
首先,将此部分的值与正则表达式匹配。参考上述HTML结构,构造的正则表达式(这里我们使用更高效的PCRE模式)是:
我们使用匹配函数preg_uu匹配所有:
通过以上匹配,您可以将匹配的内容放入$arr数组中,返回的内容如下:
继续使用正则表达式来匹配我们需要的内容,但是以前构建的URL中的页码值是1,因此我们需要匹配所有页面,因此我们需要修改以前的URL,并且我们需要使用循环,但是我们应该使用什么循环结构呢?我们首先需要观察页面中“下一页”按钮的HTML结构:
我们可以匹配上图中标记a中的类名“nopress2”,以确定是否存在下一页。如果我们可以匹配此值,则表示没有下一页。因此,我们使用do。。。而循环结构,以获取所有页面内容。代码修改如下:
当匹配“nopress2”时,while条件不再满足,循环停止
1、根据以下HTML结构,在相应的a标记中查找位置名称和URL
在这里,使用foreach遍历我们刚刚得到的数组$arr,并添加代码来执行。。。而:
2找到公司名称和相应的URL,并继续在foreach中添加代码
三,。匹配配置职位的月薪、工作地点、释放时间,继续添加代码
经过上述处理后,您将最终得到以下形式的数组:
到目前为止,我们已经获得了我们想要提取的数据
完整代码:
这个文章只提供了一个通用的方法来抓取我们想要的网页内容。中间的一些步骤和代码仍然可以优化,还有一些不足之处。欢迎大家共同探讨。毕竟,在编程中,没有最好的代码,只有更好的想法 查看全部
php curl抓取网页指定内容(如何利用正则匹配从网站的页面中提取我们想要的招聘信息)
在web开发中,我们有时需要从其他web页面的内容中提取所需的信息。为了获取页面信息,我们需要使用curl方法,但是为了从捕获的信息中提取我们真正需要的内容,我们需要使用正则表达式进行匹配
在这里,我将简要介绍如何使用常规匹配从网站页面提取我们想要的招聘信息,分为以下步骤:
1、分析我们想要捕获内容的网页的URL组成
2、根据实际情况拼接我们需要的URL
3、阅读网页内容
4、根据返回的内容,我们使用常规匹配来匹配我们需要的内容
步骤1:分析URL组成:
在网站的“搜索职位”页面上,选择工作地点和职位并搜索

发现URL的组成如下:
%E7%BB%B5%E9%98%B3&;kw=爪哇岛&;sm=0&;p=1
其中:
Ji参数的值为工作位置:此处显示的值“%E7%BB%B5%E9%98%B3”未被篡改;这是使用URLEncode进行中文编码的结果。我们也可以直接说出代码,比如Ji=绵阳
kW参数的值为位置
p参数是页码
步骤2现在,让我们构建要访问的URL:

步骤3使用文件获取内容函数获取网站内容:
现在您需要使用Google browser的调试工具来观察这部分的HTML结构,以便编写相应的正则表达式:
此部分的HTML结构为:

步骤4:使用正则表达式匹配所需内容:
首先,将此部分的值与正则表达式匹配。参考上述HTML结构,构造的正则表达式(这里我们使用更高效的PCRE模式)是:

我们使用匹配函数preg_uu匹配所有:

通过以上匹配,您可以将匹配的内容放入$arr数组中,返回的内容如下:

继续使用正则表达式来匹配我们需要的内容,但是以前构建的URL中的页码值是1,因此我们需要匹配所有页面,因此我们需要修改以前的URL,并且我们需要使用循环,但是我们应该使用什么循环结构呢?我们首先需要观察页面中“下一页”按钮的HTML结构:


我们可以匹配上图中标记a中的类名“nopress2”,以确定是否存在下一页。如果我们可以匹配此值,则表示没有下一页。因此,我们使用do。。。而循环结构,以获取所有页面内容。代码修改如下:


当匹配“nopress2”时,while条件不再满足,循环停止
1、根据以下HTML结构,在相应的a标记中查找位置名称和URL

在这里,使用foreach遍历我们刚刚得到的数组$arr,并添加代码来执行。。。而:

2找到公司名称和相应的URL,并继续在foreach中添加代码

三,。匹配配置职位的月薪、工作地点、释放时间,继续添加代码

经过上述处理后,您将最终得到以下形式的数组:

到目前为止,我们已经获得了我们想要提取的数据
完整代码:



这个文章只提供了一个通用的方法来抓取我们想要的网页内容。中间的一些步骤和代码仍然可以优化,还有一些不足之处。欢迎大家共同探讨。毕竟,在编程中,没有最好的代码,只有更好的想法
php curl抓取网页指定内容(一下file_get_contents函数可以获取远程链接数据的方法)
网站优化 • 优采云 发表了文章 • 0 个评论 • 261 次浏览 • 2021-09-13 09:01
对于做过数据采集的人来说,cURL肯定会很熟悉。 PHP中虽然有file_get_contents函数可以获取远程链接数据,但是可控性太差。对于各种复杂情况采集场景,file_get_contents 显得有些力不从心。因此,本文将向您介绍采集神器cURL。
首先添加file_get_contents函数获取远程链接数据的方法。
这段代码会直接使用curl来显示文件内容,但是问题来了,因为curl是PHP的一个扩展,有些主机为了安全会使用curl,在本地调试的时候curl也是关闭的宁外PHP,所以会出现错误,所以这段代码不可取,所以云落给他重写了
修改后的版本是对curl扩展做一个判断,看curl扩展是否在服务器上打开。如果打开,则直接显示文件,如果未打开,则显示提示文本。
虽然问题已解决,但还有一个问题。我只显示一段文字。我不做大事,为什么要写这么多代码? ?
经过一些傻测试,我发现file_get_contents获取远程文件内容的速度并不比curl慢,而且在一些文件较少的情况下可能比curl扩展快很多,所以我又重新写了一遍代码
工具
火狐 + 萤火虫
“工人要想做好自己的工作,就必须磨砺他们的工具。”在分析案例之前,让我们学习一下如何使用神器Firebug来获取我们需要的信息。
使用F12打开Firebug,我们可以得到图片(一)interface:
1、箭头图标是“元素选择”工具。单击一次以突出显示该图标。同时,鼠标在页面内的移动会同时选中HTML菜单中的相应内容。此时点击内容表示该元素被选中,图标高亮取消。如图(二):
萤火虫视图元素
2、控制面板
这里输出的是JS中console.log系列函数的打印
3、HTML
HTML 内容,注意这里看到的不一定是采集 想要解析的。 采集分析内容的时候,总是以查看源码(Ctrl+U)为标准,这里只列出可以快速定位的元素结构,然后选择一个比较特殊的引用,在源码中定位到对应的位置.
例如,如果您在 HTML 中看到一个标签
演示
,但是你查看源代码看到的可能是
演示
如果使用前者对采集内容进行正则匹配,则不会得到任何结果。
4、CSS
这里是CSS文件的内容
5、Script
这里是Javascript文件的内容
6、DOM
Dom 节点内容
7、网络
每个请求链接的数据,这里是我们采集要重点分析的。它可以显示每个请求的参数、请求头、cookie数据等。在页面提交会刷新的情况下,需要使用hold,这样刷新后页面请求的内容保留在控制台中,如图(三):
此外,Firefox 还有一个 Tamper 数据扩展,也可以获取请求数据,需要时可以安装使用。
8、Cookies
Cookie 数据
图中(一),你也可以看到下面有很多可选的小菜单项,其中keep是我们要注意的。选择时,即使页面被刷新提交表单,下方内容区的数据仍会保留,这对于分析提交的数据尤为关键。
总结
我们在分析采集请求的时候,主要关心的是“Network”菜单中的请求数据。如有必要,使用“Keep”查看刷新页面的请求数据。您可以在请求前使用“清除”清除以下内容。 .
案例分析
一、简的采集
这里简单的采集指的是采集单页GET请求。如此简单,即使通过file_get_contents函数也能轻松获取页面返回结果。
File_get_contents 代码片段
<p> 查看全部
php curl抓取网页指定内容(一下file_get_contents函数可以获取远程链接数据的方法)
对于做过数据采集的人来说,cURL肯定会很熟悉。 PHP中虽然有file_get_contents函数可以获取远程链接数据,但是可控性太差。对于各种复杂情况采集场景,file_get_contents 显得有些力不从心。因此,本文将向您介绍采集神器cURL。
首先添加file_get_contents函数获取远程链接数据的方法。
这段代码会直接使用curl来显示文件内容,但是问题来了,因为curl是PHP的一个扩展,有些主机为了安全会使用curl,在本地调试的时候curl也是关闭的宁外PHP,所以会出现错误,所以这段代码不可取,所以云落给他重写了
修改后的版本是对curl扩展做一个判断,看curl扩展是否在服务器上打开。如果打开,则直接显示文件,如果未打开,则显示提示文本。
虽然问题已解决,但还有一个问题。我只显示一段文字。我不做大事,为什么要写这么多代码? ?
经过一些傻测试,我发现file_get_contents获取远程文件内容的速度并不比curl慢,而且在一些文件较少的情况下可能比curl扩展快很多,所以我又重新写了一遍代码
工具
火狐 + 萤火虫
“工人要想做好自己的工作,就必须磨砺他们的工具。”在分析案例之前,让我们学习一下如何使用神器Firebug来获取我们需要的信息。
使用F12打开Firebug,我们可以得到图片(一)interface:
1、箭头图标是“元素选择”工具。单击一次以突出显示该图标。同时,鼠标在页面内的移动会同时选中HTML菜单中的相应内容。此时点击内容表示该元素被选中,图标高亮取消。如图(二):
萤火虫视图元素

2、控制面板
这里输出的是JS中console.log系列函数的打印
3、HTML
HTML 内容,注意这里看到的不一定是采集 想要解析的。 采集分析内容的时候,总是以查看源码(Ctrl+U)为标准,这里只列出可以快速定位的元素结构,然后选择一个比较特殊的引用,在源码中定位到对应的位置.
例如,如果您在 HTML 中看到一个标签
演示
,但是你查看源代码看到的可能是
演示
如果使用前者对采集内容进行正则匹配,则不会得到任何结果。
4、CSS
这里是CSS文件的内容
5、Script
这里是Javascript文件的内容
6、DOM
Dom 节点内容
7、网络
每个请求链接的数据,这里是我们采集要重点分析的。它可以显示每个请求的参数、请求头、cookie数据等。在页面提交会刷新的情况下,需要使用hold,这样刷新后页面请求的内容保留在控制台中,如图(三):

此外,Firefox 还有一个 Tamper 数据扩展,也可以获取请求数据,需要时可以安装使用。
8、Cookies
Cookie 数据
图中(一),你也可以看到下面有很多可选的小菜单项,其中keep是我们要注意的。选择时,即使页面被刷新提交表单,下方内容区的数据仍会保留,这对于分析提交的数据尤为关键。
总结
我们在分析采集请求的时候,主要关心的是“Network”菜单中的请求数据。如有必要,使用“Keep”查看刷新页面的请求数据。您可以在请求前使用“清除”清除以下内容。 .
案例分析
一、简的采集
这里简单的采集指的是采集单页GET请求。如此简单,即使通过file_get_contents函数也能轻松获取页面返回结果。
File_get_contents 代码片段
<p>
php curl抓取网页指定内容(给出使用curl获取网页代码的简单例子(图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 70 次浏览 • 2021-09-13 08:20
在php中,根据url获取网页内容非常方便。可以通过系统内置函数file_get_contents()传入url,返回网页内容。例如获取百度主页的内容代码为:
可以显示百度首页的内容,但是这个功能不是万能的,因为有些服务器禁用了这个功能,或者这个功能没有把某些必要的参数传递给服务器,服务器拒绝响应。例如:
此代码无法获取网易首页的完整代码,会返回如下页面。这个时候就需要想别的办法了。
这里介绍php的cURL库,可以方便有效的抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取网页内容,cURL 都是一个强大的 PHP 库。要使用它,首先必须在 php 配置文件中打开它。当它打开时,windows 中可能需要一些dll。我不相信这里的介绍。要检查 curl 是否打开,您可以调用 phpinfo();检查它是否打开,它会显示在“加载的扩展”中。
以下是使用curl获取网页代码的简单示例:
curl_setopt ($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36');curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);$html = curl_exec($ch);echo $html; 查看全部
php curl抓取网页指定内容(给出使用curl获取网页代码的简单例子(图))
在php中,根据url获取网页内容非常方便。可以通过系统内置函数file_get_contents()传入url,返回网页内容。例如获取百度主页的内容代码为:
可以显示百度首页的内容,但是这个功能不是万能的,因为有些服务器禁用了这个功能,或者这个功能没有把某些必要的参数传递给服务器,服务器拒绝响应。例如:
此代码无法获取网易首页的完整代码,会返回如下页面。这个时候就需要想别的办法了。
这里介绍php的cURL库,可以方便有效的抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取网页内容,cURL 都是一个强大的 PHP 库。要使用它,首先必须在 php 配置文件中打开它。当它打开时,windows 中可能需要一些dll。我不相信这里的介绍。要检查 curl 是否打开,您可以调用 phpinfo();检查它是否打开,它会显示在“加载的扩展”中。
以下是使用curl获取网页代码的简单示例:
curl_setopt ($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36');curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);$html = curl_exec($ch);echo $html;
php curl抓取网页指定内容(一个gbk编码中文乱码多种解决方法(1)_光明网(组图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 133 次浏览 • 2021-09-13 08:19
----------------------------------------------- ---------- Ta 仅共享内容开始 ---------------------------------- - ----------------------------------
php抓取gbk编码中文乱码多种解决方法
我今天在做一个项目,抓取一个gbk编码的页面后出现中文乱码。终于找到了解决办法:
使用:$content = mb_convert_encoding($content ,'HTML-ENTITIES',"GBK");转码后就好了。
$url = 'http://www.juming.com/ykj%3Fap ... 9%3B.$id.'&ymlx=0&jgpx=0&1=1&meiye='.$pageSize.'&page='.$page;
$content = httpRequest($url);
//$content = mb_convert_encoding($content,'utf-8'); //此方方法 打印后还是乱码
//$content = mb_convert_encoding($content,"utf-8", "GBK"); //此方方法 打印后还是乱码
//$content = mb_convert_encoding($content,'UTF-8','UTF-8,GBK,GB2312,BIG5'); // 此方方法 打印后还是乱码
// 最后用此方法,解决了
$content = mb_convert_encoding($content ,'HTML-ENTITIES',"GBK");
$dom = new \DOMDocument();
$BDomain = new BDomain();
//从一个字符串加载HTML
@$dom->loadHTML($content);
$xpath = new \DOMXPath($dom);
php使用curl获取的文本出现乱码的解决方法
使用PHP的curl获取远程html文本时出现中文乱码。
解决代码如下:
$url = "gongfuma.com";
//获取页面内容
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,20);
$res = curl_exec($ch);
curl_close($ch);
$res=mb_convert_encoding($res,'UTF-8','UTF-8,GBK,GB2312,BIG5');
//使用该函数对结果进行转码
----------------------------------------------- ---------- Ta 只分享了这些内容 ---------------------------------- - ---------------------------------- 查看全部
php curl抓取网页指定内容(一个gbk编码中文乱码多种解决方法(1)_光明网(组图))
----------------------------------------------- ---------- Ta 仅共享内容开始 ---------------------------------- - ----------------------------------
php抓取gbk编码中文乱码多种解决方法
我今天在做一个项目,抓取一个gbk编码的页面后出现中文乱码。终于找到了解决办法:
使用:$content = mb_convert_encoding($content ,'HTML-ENTITIES',"GBK");转码后就好了。
$url = 'http://www.juming.com/ykj%3Fap ... 9%3B.$id.'&ymlx=0&jgpx=0&1=1&meiye='.$pageSize.'&page='.$page;
$content = httpRequest($url);
//$content = mb_convert_encoding($content,'utf-8'); //此方方法 打印后还是乱码
//$content = mb_convert_encoding($content,"utf-8", "GBK"); //此方方法 打印后还是乱码
//$content = mb_convert_encoding($content,'UTF-8','UTF-8,GBK,GB2312,BIG5'); // 此方方法 打印后还是乱码
// 最后用此方法,解决了
$content = mb_convert_encoding($content ,'HTML-ENTITIES',"GBK");
$dom = new \DOMDocument();
$BDomain = new BDomain();
//从一个字符串加载HTML
@$dom->loadHTML($content);
$xpath = new \DOMXPath($dom);
php使用curl获取的文本出现乱码的解决方法
使用PHP的curl获取远程html文本时出现中文乱码。
解决代码如下:
$url = "gongfuma.com";
//获取页面内容
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,20);
$res = curl_exec($ch);
curl_close($ch);
$res=mb_convert_encoding($res,'UTF-8','UTF-8,GBK,GB2312,BIG5');
//使用该函数对结果进行转码
----------------------------------------------- ---------- Ta 只分享了这些内容 ---------------------------------- - ----------------------------------
php curl抓取网页指定内容(PHP建立CURL请求的基本步骤和基本操作步骤(组图) )
网站优化 • 优采云 发表了文章 • 0 个评论 • 56 次浏览 • 2021-10-29 07:04
)
CURL 可以使用 URL 语法来模拟浏览器传输数据。因为是模拟浏览器,所以还支持FTP、FTPS、HTTP、HTTPS、GOPHER、TELNET、DICT、FILE、LDAP等多种协议。很好的支持,包括一些:HTTPS认证、HTTP POST方式、HTTP PUT方式、FTP上传、keyberos认证、HTTP上传、代理服务器、cookies、用户名/密码认证、下载文件断点恢复、上传文件断点恢复上传、http代理服务器管道,甚至支持IPv6,scoket5代理服务器,通过http代理服务器上传文件到FTP服务器等等。
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取网页内容,cURL 都是一个强大的 PHP 库。
1、PHP建立CURL请求的基本步骤
①:初始化
1 curl_init()
②:设置属性
1 curl_setopt().有一长串cURL参数可供设置,它们能指定URL请求的各个细节。
③:执行并得到结果
④:松开手柄
1 curl_close()
2、包装:
1 public function http_query($url, $get = null, $post = null)
2 {
3 if (isset($get)) {
4 if (substr_count($url, '?') > 0) {
5 $url .= "&" . http_build_query($get);
6 } else {
7 $url .= "?" . http_build_query($get);
8 }
9 }
10 // 初始化一个cURL会话
11 $ch = curl_init($url);
12 if (isset($post)) {
13 curl_setopt($ch, CURLOPT_POST, TRUE); #开启post
14 curl_setopt($ch, CURLOPT_POSTFIELDS, $post); #post数据
15 }
16 curl_setopt($ch, CURLOPT_HEADER, 0); #是否需要头部信息(否)
17 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); #如果成功只将结果返回,不自动输出任何内容。
18 curl_setopt($ch, CURLOPT_TIMEOUT, 5); #设置允许执行的最长秒数。
19 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); #在发起连接前等待的时间,如果设置为0,则无限等待。
20 //忽略证书
21 if (substr($url, 0, 5) == 'https') {
22 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
23 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
24 }
25 $curl_result = curl_exec($ch);
26 if ($curl_result) {
27 $data = $curl_result;
28 } else {
29 $data = curl_error($ch);
30 }
31 curl_close($ch); #关闭cURL会话
32 return $data;
33 } 查看全部
php curl抓取网页指定内容(PHP建立CURL请求的基本步骤和基本操作步骤(组图)
)
CURL 可以使用 URL 语法来模拟浏览器传输数据。因为是模拟浏览器,所以还支持FTP、FTPS、HTTP、HTTPS、GOPHER、TELNET、DICT、FILE、LDAP等多种协议。很好的支持,包括一些:HTTPS认证、HTTP POST方式、HTTP PUT方式、FTP上传、keyberos认证、HTTP上传、代理服务器、cookies、用户名/密码认证、下载文件断点恢复、上传文件断点恢复上传、http代理服务器管道,甚至支持IPv6,scoket5代理服务器,通过http代理服务器上传文件到FTP服务器等等。
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取网页内容,cURL 都是一个强大的 PHP 库。
1、PHP建立CURL请求的基本步骤
①:初始化
1 curl_init()
②:设置属性
1 curl_setopt().有一长串cURL参数可供设置,它们能指定URL请求的各个细节。
③:执行并得到结果
④:松开手柄
1 curl_close()
2、包装:
1 public function http_query($url, $get = null, $post = null)
2 {
3 if (isset($get)) {
4 if (substr_count($url, '?') > 0) {
5 $url .= "&" . http_build_query($get);
6 } else {
7 $url .= "?" . http_build_query($get);
8 }
9 }
10 // 初始化一个cURL会话
11 $ch = curl_init($url);
12 if (isset($post)) {
13 curl_setopt($ch, CURLOPT_POST, TRUE); #开启post
14 curl_setopt($ch, CURLOPT_POSTFIELDS, $post); #post数据
15 }
16 curl_setopt($ch, CURLOPT_HEADER, 0); #是否需要头部信息(否)
17 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); #如果成功只将结果返回,不自动输出任何内容。
18 curl_setopt($ch, CURLOPT_TIMEOUT, 5); #设置允许执行的最长秒数。
19 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); #在发起连接前等待的时间,如果设置为0,则无限等待。
20 //忽略证书
21 if (substr($url, 0, 5) == 'https') {
22 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
23 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
24 }
25 $curl_result = curl_exec($ch);
26 if ($curl_result) {
27 $data = $curl_result;
28 } else {
29 $data = curl_error($ch);
30 }
31 curl_close($ch); #关闭cURL会话
32 return $data;
33 }
php curl抓取网页指定内容(php的curl()在抓取网页的效率方面是比较高的)
网站优化 • 优采云 发表了文章 • 0 个评论 • 56 次浏览 • 2021-10-29 07:01
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,释放资源。其中,我们设置curlot_returntransfer为1自动返回信息,curlot_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,释放资源。其中,我们设置curlot_returntransfer为1自动返回信息,curlot_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抓取网页指定内容的正则表达式javascript强制解析页面内容)
网站优化 • 优采云 发表了文章 • 0 个评论 • 63 次浏览 • 2021-10-26 00:05
phpcurl抓取网页指定内容的正则表达式javascript强制解析页面内容的正则表达式至于文本抓取,比如某个网站在搜索过程中只返回了网页的二进制地址(不是正则表达式)的文本,那只能借助各种工具了python抓取全文或抓取某些文件的文本内容html5把整个页面中dom元素点对点抓取函数css定位的正则表达式正则表达式post请求数据的正则表达式。
全部文本
php正则表达式强制抓取(用re的同学说php同样用正则表达式,个人感觉正则表达式的使用场景,比php要广泛)
网页上大量的字符不一定是一一对应的,正则表达式可以识别出来,然后利用正则表达式去匹配文本。
看用什么语言,如果有各种工具处理文本,常用的有php,python。其实抓取网页内容没什么区别,知道怎么正则表达式匹配就行,用的什么网站,google一下都有教程,里面还会涉及到很多其他比如加密,xss什么的东西,遇到问题多百度。
用requests,requests就可以抓取各种网页,php和java的请求库是dom库。
常用的全部文本抓取库有:phpaiohttp,javahibernate(utils)。基于java的请求库是:servlet。 查看全部
php curl抓取网页指定内容(phpcurl抓取网页指定内容的正则表达式javascript强制解析页面内容)
phpcurl抓取网页指定内容的正则表达式javascript强制解析页面内容的正则表达式至于文本抓取,比如某个网站在搜索过程中只返回了网页的二进制地址(不是正则表达式)的文本,那只能借助各种工具了python抓取全文或抓取某些文件的文本内容html5把整个页面中dom元素点对点抓取函数css定位的正则表达式正则表达式post请求数据的正则表达式。
全部文本
php正则表达式强制抓取(用re的同学说php同样用正则表达式,个人感觉正则表达式的使用场景,比php要广泛)
网页上大量的字符不一定是一一对应的,正则表达式可以识别出来,然后利用正则表达式去匹配文本。
看用什么语言,如果有各种工具处理文本,常用的有php,python。其实抓取网页内容没什么区别,知道怎么正则表达式匹配就行,用的什么网站,google一下都有教程,里面还会涉及到很多其他比如加密,xss什么的东西,遇到问题多百度。
用requests,requests就可以抓取各种网页,php和java的请求库是dom库。
常用的全部文本抓取库有:phpaiohttp,javahibernate(utils)。基于java的请求库是:servlet。
php curl抓取网页指定内容(PHP外部资源函数fopen/file_get_contents好很多)
网站优化 • 优采云 发表了文章 • 0 个评论 • 56 次浏览 • 2021-10-20 19:21
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) 来模拟浏览器
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) 来模拟浏览器
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最后更新:2021年6月17日:1051. )
网站优化 • 优采云 发表了文章 • 0 个评论 • 63 次浏览 • 2021-10-18 10:15
PHP最后更新:2021年6月17日:1051.
)
php curl 网页内容出现乱码、不可用的解决方法
分类:PHP
上次更新:2021 年 6 月 17 日
点击次数:105
1.如果使用curl请求网页,多方网页使用gzip压缩,获取的内容可能会出现乱码。
解决方案
$url = 'http://www.du52.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22");
curl_setopt($ch, CURLOPT_ENCODING ,'gzip'); //加入gzip解析
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
var_dump($info);
var_dump($output);
2.如果请求的网页被重定向,通过header('Location:'),那么请求的网页数据可能为空,即无法获取内容。
解决方案
$url = 'http://www.mkv8.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION ,1); //加入重定向处理
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
var_dump($info);
var_dump($output); 查看全部
php curl抓取网页指定内容(
PHP最后更新:2021年6月17日:1051.
)
php curl 网页内容出现乱码、不可用的解决方法
分类:PHP
上次更新:2021 年 6 月 17 日
点击次数:105
1.如果使用curl请求网页,多方网页使用gzip压缩,获取的内容可能会出现乱码。
解决方案
$url = 'http://www.du52.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22");
curl_setopt($ch, CURLOPT_ENCODING ,'gzip'); //加入gzip解析
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
var_dump($info);
var_dump($output);
2.如果请求的网页被重定向,通过header('Location:'),那么请求的网页数据可能为空,即无法获取内容。
解决方案
$url = 'http://www.mkv8.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION ,1); //加入重定向处理
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
var_dump($info);
var_dump($output);
php curl抓取网页指定内容(这篇文章主要是对CURLOPT_CUSTOMREQUEST参数的运用(图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 124 次浏览 • 2021-10-10 07:11
本文文章主要介绍PHP curl实现302跳转后的页面的例子,主要是CURLOPT_CUSTOMREQUEST参数的使用,需要的朋友可以参考
PHP的CURL正常抓取页面程序如下:
$url = 'http://www.baidu.com'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_VERBOSE, true); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_NOBODY, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 20); curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); $ret = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch);
如果抓取到302状态,那是因为在爬取过程中,有些跳转需要给下一个链接传递参数,如果没有收到相应的参数,下一个链接也被设置了,就是非法访问。
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
显示应该是正常的。
上面是用来抓取函数的,应该几乎没有问题。您可以查看 CURLOPT_CUSTOMREQUEST 相关信息。
使用自定义请求消息而不是“GET”或“HEAD”作为 HTTP 请求。这对于执行“DELETE”或其他更模糊的 HTTP 请求很有用。有效值为“GET”、“POST”、“CONNECT”等。换句话说,不要在此处输入整个 HTTP 请求。例如,输入“GET /index.html HTTP/1.0\r\n\r\n”是错误的。
以上就是302跳转后页面的PHP curl实现示例的详细内容。更多详情请关注其他相关html中文网站文章! 查看全部
php curl抓取网页指定内容(这篇文章主要是对CURLOPT_CUSTOMREQUEST参数的运用(图))
本文文章主要介绍PHP curl实现302跳转后的页面的例子,主要是CURLOPT_CUSTOMREQUEST参数的使用,需要的朋友可以参考
PHP的CURL正常抓取页面程序如下:
$url = 'http://www.baidu.com'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_VERBOSE, true); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_NOBODY, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 20); curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); $ret = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch);
如果抓取到302状态,那是因为在爬取过程中,有些跳转需要给下一个链接传递参数,如果没有收到相应的参数,下一个链接也被设置了,就是非法访问。
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
显示应该是正常的。
上面是用来抓取函数的,应该几乎没有问题。您可以查看 CURLOPT_CUSTOMREQUEST 相关信息。
使用自定义请求消息而不是“GET”或“HEAD”作为 HTTP 请求。这对于执行“DELETE”或其他更模糊的 HTTP 请求很有用。有效值为“GET”、“POST”、“CONNECT”等。换句话说,不要在此处输入整个 HTTP 请求。例如,输入“GET /index.html HTTP/1.0\r\n\r\n”是错误的。
以上就是302跳转后页面的PHP curl实现示例的详细内容。更多详情请关注其他相关html中文网站文章!
php curl抓取网页指定内容(PHP库模拟登录开源中国的移动版为例库使用总结)
网站优化 • 优采云 发表了文章 • 0 个评论 • 65 次浏览 • 2021-10-09 05:09
CURL 是一个强大的 PHP 库。使用PHP的cURL库可以方便有效的抓取网页和采集内容,设置cookies来完成模拟登录网页,curl提供了丰富的功能,开发者可以从PHP手册中获取更多关于cURL的信息。本文以模拟登录开源中国(oschina)为例,有需要的朋友可以参考
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模拟登录和获取详细数据示例的详细内容。更多详情请关注其他相关html中文网站文章! 查看全部
php curl抓取网页指定内容(PHP库模拟登录开源中国的移动版为例库使用总结)
CURL 是一个强大的 PHP 库。使用PHP的cURL库可以方便有效的抓取网页和采集内容,设置cookies来完成模拟登录网页,curl提供了丰富的功能,开发者可以从PHP手册中获取更多关于cURL的信息。本文以模拟登录开源中国(oschina)为例,有需要的朋友可以参考
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模拟登录和获取详细数据示例的详细内容。更多详情请关注其他相关html中文网站文章!
php curl抓取网页指定内容(PHPcurl_RETURNTRANSFER直接输出,怎么做呢?(一) )
网站优化 • 优采云 发表了文章 • 0 个评论 • 70 次浏览 • 2021-10-08 05:27
)
CURL中有一个参数CURLOPT_RETURNTRANSFER:该参数以文件流的形式返回curl_exec()获取的信息,而不是直接输出。例如:CURLOPT_RETURNTRANSFER 参数的作用是
将 CRUL 获取的内容赋值给一个变量。默认为0,直接返回获取的输出文本流。有时,我们需要将返回值用于判断或其他目的。因此,有时我们希望将内容返回为
对于变量的存储,而不是直接输出,那应该怎么做呢?本文文章主要介绍php curl_exec()函数CURL获取返回值的方法
其实 CURLOPT_RETURNTRANSFER 是可以设置的。如果设置为CURLOPT_RETURNTRANSFER 1,它会使用PHP curl 获取页面内容或提交数据,并将其存储为变量而不是直接输出。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
我们看下面两个例子,
1、curl 获取页面内容,直接输出示例:
运行代码,你会发现获取到的cul内容会直接输出。
2、curl 获取页面内容,不直接输出示例:
当我们将 CURLOPT_RETURNTRANSFER 设置为 1 时,页面没有输出内容。我们将获取到的内容赋值给一个变量$response,使用echo输出的变量$response。
查看全部
php curl抓取网页指定内容(PHPcurl_RETURNTRANSFER直接输出,怎么做呢?(一)
)
CURL中有一个参数CURLOPT_RETURNTRANSFER:该参数以文件流的形式返回curl_exec()获取的信息,而不是直接输出。例如:CURLOPT_RETURNTRANSFER 参数的作用是
将 CRUL 获取的内容赋值给一个变量。默认为0,直接返回获取的输出文本流。有时,我们需要将返回值用于判断或其他目的。因此,有时我们希望将内容返回为
对于变量的存储,而不是直接输出,那应该怎么做呢?本文文章主要介绍php curl_exec()函数CURL获取返回值的方法
其实 CURLOPT_RETURNTRANSFER 是可以设置的。如果设置为CURLOPT_RETURNTRANSFER 1,它会使用PHP curl 获取页面内容或提交数据,并将其存储为变量而不是直接输出。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
我们看下面两个例子,
1、curl 获取页面内容,直接输出示例:
运行代码,你会发现获取到的cul内容会直接输出。
2、curl 获取页面内容,不直接输出示例:
当我们将 CURLOPT_RETURNTRANSFER 设置为 1 时,页面没有输出内容。我们将获取到的内容赋值给一个变量$response,使用echo输出的变量$response。

php curl抓取网页指定内容(param下载未知文件$=string$url远程图片)
网站优化 • 优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2021-10-06 14:01
适用场景:
1.下载未知文件
$img1 = "";
$img2 = "";
以上均为图翻。打开浏览器可以看到是图片,但是从URL看不到。上图来自微信。如果你想把图片拉到自己的服务器上,可以使用下面的方法。
/**
* 远程下载图片文件
* @param string $url [远程图片的URL]
* @param string $path [要保存的路径]
* @return string [保存后返回获取文件路径]
*/
function downloadImageFromUrl($url, $path = "./download/images/") {
// 因为不知道最后接受到的文件是什么格式,先建立一个临时文件,用于保存
$tmpFile = tempnam(sys_get_temp_dir(), 'image');
# 文件下载 BEGIN #
// 打开临时文件,用于写入(w),b二进制文件
$resource = fopen($tmpFile, 'wb');
// 初始化curl
$curl = curl_init($url);
// 设置输出文件为刚打开的
curl_setopt($curl, CURLOPT_FILE, $resource);
// 不需要头文件
curl_setopt($curl, CURLOPT_HEADER, 0);
// 执行
curl_exec($curl);
// 关闭curl
curl_close($curl);
// 关闭文件
fclose($resource);
# 文件下载 END #
// 获取文件类型
if (function_exists('exif_imagetype')) {
// 读取一个图像的第一个字节并检查其签名(这里需要打开mbstring及php_exif)
$fileType = exif_imagetype($tmpFile);
} else {
// 获取文件大小,里面第二个参数是文件类型 (这里后缀可以直接通过getimagesize($url)来获取,但是很慢)
$fileInfo = getimagesize($tmpFile);
$fileType = $fileInfo[2];
}
// 根据文件类型获取后缀名
$extension = image_type_to_extension($fileType);
// 计算指定文件的 MD5 散列值,作为保存的文件名,重复下载同一个文件不会产生重复保存,相同的文件散列值相同
$md5FileName = md5_file($tmpFile);
// 最终保存的文件
$returnFile = $path . $md5FileName . $extension;
// 检查传过来的路径是否存在,不存在就创建
if (!is_dir($path)) {
mkdir($path, 0777, true);
}
// 复制临时文件到最终保存的文件中
copy($tmpFile, $returnFile);
// 释放临时文件
@unlink($tmpFile);
// 返回保存的文件路径
return $returnFile;
}
以上功能仅适用于下载图片文件,修改其他类型即可实现。
这种方法下载速度很快。 查看全部
php curl抓取网页指定内容(param下载未知文件$=string$url远程图片)
适用场景:
1.下载未知文件
$img1 = "";
$img2 = "";
以上均为图翻。打开浏览器可以看到是图片,但是从URL看不到。上图来自微信。如果你想把图片拉到自己的服务器上,可以使用下面的方法。
/**
* 远程下载图片文件
* @param string $url [远程图片的URL]
* @param string $path [要保存的路径]
* @return string [保存后返回获取文件路径]
*/
function downloadImageFromUrl($url, $path = "./download/images/") {
// 因为不知道最后接受到的文件是什么格式,先建立一个临时文件,用于保存
$tmpFile = tempnam(sys_get_temp_dir(), 'image');
# 文件下载 BEGIN #
// 打开临时文件,用于写入(w),b二进制文件
$resource = fopen($tmpFile, 'wb');
// 初始化curl
$curl = curl_init($url);
// 设置输出文件为刚打开的
curl_setopt($curl, CURLOPT_FILE, $resource);
// 不需要头文件
curl_setopt($curl, CURLOPT_HEADER, 0);
// 执行
curl_exec($curl);
// 关闭curl
curl_close($curl);
// 关闭文件
fclose($resource);
# 文件下载 END #
// 获取文件类型
if (function_exists('exif_imagetype')) {
// 读取一个图像的第一个字节并检查其签名(这里需要打开mbstring及php_exif)
$fileType = exif_imagetype($tmpFile);
} else {
// 获取文件大小,里面第二个参数是文件类型 (这里后缀可以直接通过getimagesize($url)来获取,但是很慢)
$fileInfo = getimagesize($tmpFile);
$fileType = $fileInfo[2];
}
// 根据文件类型获取后缀名
$extension = image_type_to_extension($fileType);
// 计算指定文件的 MD5 散列值,作为保存的文件名,重复下载同一个文件不会产生重复保存,相同的文件散列值相同
$md5FileName = md5_file($tmpFile);
// 最终保存的文件
$returnFile = $path . $md5FileName . $extension;
// 检查传过来的路径是否存在,不存在就创建
if (!is_dir($path)) {
mkdir($path, 0777, true);
}
// 复制临时文件到最终保存的文件中
copy($tmpFile, $returnFile);
// 释放临时文件
@unlink($tmpFile);
// 返回保存的文件路径
return $returnFile;
}
以上功能仅适用于下载图片文件,修改其他类型即可实现。
这种方法下载速度很快。
php curl抓取网页指定内容(PHPcurl或file_get_contents获取需要授权页面的方法)
网站优化 • 优采云 发表了文章 • 0 个评论 • 69 次浏览 • 2021-10-05 04:14
本文文章主要介绍了PHP curl或file_uuu内容是一种获取授权页面的方法,具有很好的参考价值。我们跟着小编一起去看看
今天,由于工作需要,curl/file是必需的。获取内容获取需要授权的页面内容。解决问题后,我写了这篇文章与大家分享
PHP curl扩展可以在服务器端发起post/get请求,访问页面,并获取页面的返回数据
例如,要获取的页面:
使用curl获取server.php页面
如果该服务没有安装PHP curl扩展名,那么use file_uget_uuucontents还可以启动请求以获取页面的返回数据
使用curl和file_uu获取内容返回的结果是相同的
Array ( [content] => fdipzone blog )
对于需要授权的页面,例如使用htpasswd+的页面。Htaccess设置目录访问权限,直接使用上述方法会返回401未授权错误
此示例不使用htpasswd+。Htaccess控制访问权限,但使用$Server['php\u auth\u user']和$Server['php\u auth\u pw']这两个服务器参数
修正如下:
设置帐户:fdipzone密码:654321
在curl中,一个参数是curlopt_uuuserpwd,我们可以使用这个参数在请求时发送帐户密码
curl_uusetopt($ch,curlopt_userpwd,'帐户:密码')
curl请求的程序修改为:
和文件uu获取uuu内容如果要发送帐户和密码,则需要手动拼接标题
文件获取内容请求的程序被修改为:
源下载地址:点击查看
上面是PHP curl或file_uget_uuu内容,用于获取授权页面方法的详细信息。欲了解更多信息,请关注其他相关文章 查看全部
php curl抓取网页指定内容(PHPcurl或file_get_contents获取需要授权页面的方法)
本文文章主要介绍了PHP curl或file_uuu内容是一种获取授权页面的方法,具有很好的参考价值。我们跟着小编一起去看看
今天,由于工作需要,curl/file是必需的。获取内容获取需要授权的页面内容。解决问题后,我写了这篇文章与大家分享
PHP curl扩展可以在服务器端发起post/get请求,访问页面,并获取页面的返回数据
例如,要获取的页面:
使用curl获取server.php页面
如果该服务没有安装PHP curl扩展名,那么use file_uget_uuucontents还可以启动请求以获取页面的返回数据
使用curl和file_uu获取内容返回的结果是相同的
Array ( [content] => fdipzone blog )
对于需要授权的页面,例如使用htpasswd+的页面。Htaccess设置目录访问权限,直接使用上述方法会返回401未授权错误
此示例不使用htpasswd+。Htaccess控制访问权限,但使用$Server['php\u auth\u user']和$Server['php\u auth\u pw']这两个服务器参数
修正如下:
设置帐户:fdipzone密码:654321
在curl中,一个参数是curlopt_uuuserpwd,我们可以使用这个参数在请求时发送帐户密码
curl_uusetopt($ch,curlopt_userpwd,'帐户:密码')
curl请求的程序修改为:
和文件uu获取uuu内容如果要发送帐户和密码,则需要手动拼接标题
文件获取内容请求的程序被修改为:
源下载地址:点击查看
上面是PHP curl或file_uget_uuu内容,用于获取授权页面方法的详细信息。欲了解更多信息,请关注其他相关文章
php curl抓取网页指定内容(使用phpcurl获取页面内容或提交数据希望返回)
网站优化 • 优采云 发表了文章 • 0 个评论 • 100 次浏览 • 2021-10-05 00:14
使用 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请求 不验证证书和hostscurl_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页面内容的设置方法,不直接输出返回结果,都是编辑器共享的内容。希望能给大家一个参考,希望大家支持网页设计。
TAG标签:php curl获取https页面内容,不直接输出返回结果的设置方法
易白网是国内知名的建站品牌服务商。我们拥有九年网站建设、网站制作、网页设计、PHP开发、域名注册和虚拟主机服务经验,提供自助建站服务。享誉全国。近年来整合团队优势,自主研发了可视化多用户“电云构建系统”3.0平台版,拖放排版网站生产设计,易于上手实现pc站、手机微网站、小程序、APP一体化全网营销网站建设,已成功为全国数百家在线企业提供自助平台建设服务。
上一篇:PHP基于cookie实现在线人数统计功能的例子
下一篇:详解php如何判断是http还是https,以及如何获取当前url
[返回新闻列表] 查看全部
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请求 不验证证书和hostscurl_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页面内容的设置方法,不直接输出返回结果,都是编辑器共享的内容。希望能给大家一个参考,希望大家支持网页设计。
TAG标签:php curl获取https页面内容,不直接输出返回结果的设置方法
易白网是国内知名的建站品牌服务商。我们拥有九年网站建设、网站制作、网页设计、PHP开发、域名注册和虚拟主机服务经验,提供自助建站服务。享誉全国。近年来整合团队优势,自主研发了可视化多用户“电云构建系统”3.0平台版,拖放排版网站生产设计,易于上手实现pc站、手机微网站、小程序、APP一体化全网营销网站建设,已成功为全国数百家在线企业提供自助平台建设服务。
上一篇:PHP基于cookie实现在线人数统计功能的例子
下一篇:详解php如何判断是http还是https,以及如何获取当前url
[返回新闻列表]
php curl抓取网页指定内容(PHP的CURL正常抓取页面程序:如果你抓取到的是302状态)
网站优化 • 优采云 发表了文章 • 0 个评论 • 84 次浏览 • 2021-10-01 07:21
PHP的CURL正常抓取页面程序如下:
$url = 'http://www.baidu.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$ret = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
如果抓取到302状态,那是因为在爬取过程中,有些跳转需要给下一个链接传递参数,如果没有收到相应的参数,下一个链接也被设置了,就是非法访问。
显示应该是正常的。
上面是用来抓取函数的,应该几乎没有问题。您可以查看 CURLOPT_CUSTOMREQUEST 相关信息。
使用自定义请求消息而不是“GET”或“HEAD”作为 HTTP 请求。这对于执行“DELETE”或其他更模糊的 HTTP 请求很有用。有效值为“GET”、“POST”、“CONNECT”等。换句话说,不要在此处输入整个 HTTP 请求。例如输入“GET /index.html HTTP/1.0rnrn”是错误的。 查看全部
php curl抓取网页指定内容(PHP的CURL正常抓取页面程序:如果你抓取到的是302状态)
PHP的CURL正常抓取页面程序如下:
$url = 'http://www.baidu.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$ret = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
如果抓取到302状态,那是因为在爬取过程中,有些跳转需要给下一个链接传递参数,如果没有收到相应的参数,下一个链接也被设置了,就是非法访问。
显示应该是正常的。
上面是用来抓取函数的,应该几乎没有问题。您可以查看 CURLOPT_CUSTOMREQUEST 相关信息。
使用自定义请求消息而不是“GET”或“HEAD”作为 HTTP 请求。这对于执行“DELETE”或其他更模糊的 HTTP 请求很有用。有效值为“GET”、“POST”、“CONNECT”等。换句话说,不要在此处输入整个 HTTP 请求。例如输入“GET /index.html HTTP/1.0rnrn”是错误的。
php curl抓取网页指定内容(phpcurl抓取网页指定内容(bootstrap模块)定制文件地址bootstrap)
网站优化 • 优采云 发表了文章 • 0 个评论 • 63 次浏览 • 2021-09-28 16:17
phpcurl抓取网页指定内容(bootstrap模块)定制文件地址爬虫bootstrap模块推荐使用urllib2库定制php页面数据爬取对于一个不支持http请求的网站或者动态页面,可以通过使用bootstrap模块轻松的爬取页面进行存储。bootstrap库提供了大量的浏览器兼容性的数据,在提供了网页数据爬取等基本功能的同时,还提供了一些数据库或其他异步接口的api。
使用bootstrap爬取网页指定内容思路爬取有点类似于黑五网商城,它是phpcurl抓取,然后使用bootstrap模块定制,因此分三步:1.首先在互联网上找到对应商城的页面地址;2.通过curl库给网页地址发送请求,并传输给bootstrap模块;3.bootstrap模块定制页面信息进行实际操作,页面显示,然后将页面中的有价值内容的链接发送给爬虫。
项目中是使用requests库对request类进行定制爬取的,requests库可以用来分析json等文件。php和bootstrap模块关系:1.json格式是种双向的无序序列化格式,php通过http方法进行和json对象的交互,存储数据。2.bootstrap用于定制页面,在任意项目中,bootstrap也可以指定页面地址,将文件下载下来,存储进去。
3.bootstrap模块类似于http库中的setting.php文件,是网页爬取过程中重要的工具。bootstrap和浏览器兼容php通过http请求来获取文件,然后对所在文件进行缓存,到浏览器上进行加载。phpcurl抓取网页指定内容利用curl库,先定义一个curl对象方法,然后获取到页面的内容,然后将页面内容存储进去,利用bootstrap模块实现页面定制。
代码下载本项目实战在建立好bootstrap模块库的前提下进行开发的,并且只需要使用一个php的扩展库http.php文件。ame(1)将bootstrap模块压缩为dist文件。2.读取文件。php代码:-jack.php-jack/blob/master/modules/bootstrap/bootstrap3.jsx-jj.php-jj.jsx3.写入文件。
代码:-jj.php-jj.jsx4.通过请求post请求获取html页面元素。php代码:-jj.php-jj.jsx5.读取文件。php代码:-jj.php-jj.jsx6.解析文件。php代码:-jj.php-jj.jsx7.bootstrap模块定制页面内容。php代码:-jj.php-jj.jsx8.页面修改。php代码:-jj.php-jj.jsx,作者:猫小猫。 查看全部
php curl抓取网页指定内容(phpcurl抓取网页指定内容(bootstrap模块)定制文件地址bootstrap)
phpcurl抓取网页指定内容(bootstrap模块)定制文件地址爬虫bootstrap模块推荐使用urllib2库定制php页面数据爬取对于一个不支持http请求的网站或者动态页面,可以通过使用bootstrap模块轻松的爬取页面进行存储。bootstrap库提供了大量的浏览器兼容性的数据,在提供了网页数据爬取等基本功能的同时,还提供了一些数据库或其他异步接口的api。
使用bootstrap爬取网页指定内容思路爬取有点类似于黑五网商城,它是phpcurl抓取,然后使用bootstrap模块定制,因此分三步:1.首先在互联网上找到对应商城的页面地址;2.通过curl库给网页地址发送请求,并传输给bootstrap模块;3.bootstrap模块定制页面信息进行实际操作,页面显示,然后将页面中的有价值内容的链接发送给爬虫。
项目中是使用requests库对request类进行定制爬取的,requests库可以用来分析json等文件。php和bootstrap模块关系:1.json格式是种双向的无序序列化格式,php通过http方法进行和json对象的交互,存储数据。2.bootstrap用于定制页面,在任意项目中,bootstrap也可以指定页面地址,将文件下载下来,存储进去。
3.bootstrap模块类似于http库中的setting.php文件,是网页爬取过程中重要的工具。bootstrap和浏览器兼容php通过http请求来获取文件,然后对所在文件进行缓存,到浏览器上进行加载。phpcurl抓取网页指定内容利用curl库,先定义一个curl对象方法,然后获取到页面的内容,然后将页面内容存储进去,利用bootstrap模块实现页面定制。
代码下载本项目实战在建立好bootstrap模块库的前提下进行开发的,并且只需要使用一个php的扩展库http.php文件。ame(1)将bootstrap模块压缩为dist文件。2.读取文件。php代码:-jack.php-jack/blob/master/modules/bootstrap/bootstrap3.jsx-jj.php-jj.jsx3.写入文件。
代码:-jj.php-jj.jsx4.通过请求post请求获取html页面元素。php代码:-jj.php-jj.jsx5.读取文件。php代码:-jj.php-jj.jsx6.解析文件。php代码:-jj.php-jj.jsx7.bootstrap模块定制页面内容。php代码:-jj.php-jj.jsx8.页面修改。php代码:-jj.php-jj.jsx,作者:猫小猫。
php curl抓取网页指定内容(使用PHP的cURL库可以简单和有效地去抓网页。)
网站优化 • 优采云 发表了文章 • 0 个评论 • 70 次浏览 • 2021-09-28 11:14
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取网页内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个PHP库。
启用卷曲设置
首先我们要先判断我们的PHP是否启用了这个库,可以通过php_info()函数来获取这个信息。
如果在网页上可以看到如下输出,说明cURL库已经开启。
如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,去掉前面的分号。如下:
//取消下在的注释
extension=php_curl.dll
如果你在 Linux 下,那么你需要重新编译你的 PHP。编辑时需要开启编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这里有一个小程序:
从上面的程序可以看出,CURLOPT_POST是用来设置HTTP协议的POST方法而不是GET方法的,然后CURLOPT_POSTFIELDS是用来设置POST数据的。
关于代理服务器
下面是一个如何使用代理服务器的示例。请注意其中高亮的代码,代码很简单,我就不用多说了。
关于 SSL 和 Cookie 查看全部
php curl抓取网页指定内容(使用PHP的cURL库可以简单和有效地去抓网页。)
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取网页内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个PHP库。
启用卷曲设置
首先我们要先判断我们的PHP是否启用了这个库,可以通过php_info()函数来获取这个信息。
如果在网页上可以看到如下输出,说明cURL库已经开启。

如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,去掉前面的分号。如下:
//取消下在的注释
extension=php_curl.dll
如果你在 Linux 下,那么你需要重新编译你的 PHP。编辑时需要开启编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这里有一个小程序:
从上面的程序可以看出,CURLOPT_POST是用来设置HTTP协议的POST方法而不是GET方法的,然后CURLOPT_POSTFIELDS是用来设置POST数据的。
关于代理服务器
下面是一个如何使用代理服务器的示例。请注意其中高亮的代码,代码很简单,我就不用多说了。
关于 SSL 和 Cookie
php curl抓取网页指定内容(PHP的curl()效率就要稍低些,看看如何抓取到登录成功后的信息)
网站优化 • 优采云 发表了文章 • 0 个评论 • 64 次浏览 • 2021-09-28 00:09
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抓取网页指定内容(PHP手册(再次一句一句以强调)手册真乃圣经)
网站优化 • 优采云 发表了文章 • 0 个评论 • 80 次浏览 • 2021-09-27 22:05
PHP有内置的函数来捕获网页内容,如file()、file()uu获取内容()等等,所有这些都支持URL参数。但这些功能无法实现更复杂的操作
Curl是一个文件传输工具,它使用URL语法在命令行上工作。Curl提供了一个PHP扩展。使用此扩展,可以完全模拟浏览器操作。就像使用浏览器浏览网页一样,您可以设置标题内容、设置cookie数据、发布数据、上载文件、设置代理等。事实上,我们这里讨论的爬行web内容只是一个常见的应用程序
官方网站:
PHP curl扩展:
在windows下添加此扩展非常简单,只需加载PHP_Curl.dll即可。删除curl.dll前面的php.ini文件扩展名=php_uu分号,将curl.dll复制到php扩展目录或C:\windows\system32目录中,然后重新启动web服务器。php的zip包中提供了php_Curl.dll
在Linux下,首先需要安装curl。一种方法是将其编译成PHP,并在编译和配置时添加--with curl[=dir]。另一种方法是将其编译成PHP模块并加载。curl模块的编译方法与其他PHP模块的编译方法相同。以下是基本命令:
CD/path/to/PHP/source进入PHP源目录
CD ext/curl输入curl模块的源目录
/Usr/local/PHP/bin/phpize生成编译配置文件
./configure--with-php-config=/usr/local/php/bin/php-config
制造
安装
编译完成后,生成curl.so,修改php.ini,加载模块:
extension=“/path/to/extension/curl.so”
测试是否加载了curl扩展名并创建一个新的PHP文件:
抓取网页的示例:
curl_uusetopt()可以设置许多选项。有关更多选项,请参阅PHP手册
有关更多函数及其用法,请参阅PHP手册(另一个强调PHP手册是圣经的废话)
) 查看全部
php curl抓取网页指定内容(PHP手册(再次一句一句以强调)手册真乃圣经)
PHP有内置的函数来捕获网页内容,如file()、file()uu获取内容()等等,所有这些都支持URL参数。但这些功能无法实现更复杂的操作
Curl是一个文件传输工具,它使用URL语法在命令行上工作。Curl提供了一个PHP扩展。使用此扩展,可以完全模拟浏览器操作。就像使用浏览器浏览网页一样,您可以设置标题内容、设置cookie数据、发布数据、上载文件、设置代理等。事实上,我们这里讨论的爬行web内容只是一个常见的应用程序
官方网站:
PHP curl扩展:
在windows下添加此扩展非常简单,只需加载PHP_Curl.dll即可。删除curl.dll前面的php.ini文件扩展名=php_uu分号,将curl.dll复制到php扩展目录或C:\windows\system32目录中,然后重新启动web服务器。php的zip包中提供了php_Curl.dll
在Linux下,首先需要安装curl。一种方法是将其编译成PHP,并在编译和配置时添加--with curl[=dir]。另一种方法是将其编译成PHP模块并加载。curl模块的编译方法与其他PHP模块的编译方法相同。以下是基本命令:
CD/path/to/PHP/source进入PHP源目录
CD ext/curl输入curl模块的源目录
/Usr/local/PHP/bin/phpize生成编译配置文件
./configure--with-php-config=/usr/local/php/bin/php-config
制造
安装
编译完成后,生成curl.so,修改php.ini,加载模块:
extension=“/path/to/extension/curl.so”
测试是否加载了curl扩展名并创建一个新的PHP文件:
抓取网页的示例:
curl_uusetopt()可以设置许多选项。有关更多选项,请参阅PHP手册
有关更多函数及其用法,请参阅PHP手册(另一个强调PHP手册是圣经的废话)

)
php curl抓取网页指定内容(如何利用正则匹配从网站的页面中提取我们想要的招聘信息)
网站优化 • 优采云 发表了文章 • 0 个评论 • 93 次浏览 • 2021-09-21 11:26
在web开发中,我们有时需要从其他web页面的内容中提取所需的信息。为了获取页面信息,我们需要使用curl方法,但是为了从捕获的信息中提取我们真正需要的内容,我们需要使用正则表达式进行匹配
在这里,我将简要介绍如何使用常规匹配从网站页面提取我们想要的招聘信息,分为以下步骤:
1、分析我们想要捕获内容的网页的URL组成
2、根据实际情况拼接我们需要的URL
3、阅读网页内容
4、根据返回的内容,我们使用常规匹配来匹配我们需要的内容
步骤1:分析URL组成:
在网站的“搜索职位”页面上,选择工作地点和职位并搜索
发现URL的组成如下:
%E7%BB%B5%E9%98%B3&;kw=爪哇岛&;sm=0&;p=1
其中:
Ji参数的值为工作位置:此处显示的值“%E7%BB%B5%E9%98%B3”未被篡改;这是使用URLEncode进行中文编码的结果。我们也可以直接说出代码,比如Ji=绵阳
kW参数的值为位置
p参数是页码
步骤2现在,让我们构建要访问的URL:
步骤3使用文件获取内容函数获取网站内容:
现在您需要使用Google browser的调试工具来观察这部分的HTML结构,以便编写相应的正则表达式:
此部分的HTML结构为:
步骤4:使用正则表达式匹配所需内容:
首先,将此部分的值与正则表达式匹配。参考上述HTML结构,构造的正则表达式(这里我们使用更高效的PCRE模式)是:
我们使用匹配函数preg_uu匹配所有:
通过以上匹配,您可以将匹配的内容放入$arr数组中,返回的内容如下:
继续使用正则表达式来匹配我们需要的内容,但是以前构建的URL中的页码值是1,因此我们需要匹配所有页面,因此我们需要修改以前的URL,并且我们需要使用循环,但是我们应该使用什么循环结构呢?我们首先需要观察页面中“下一页”按钮的HTML结构:
我们可以匹配上图中标记a中的类名“nopress2”,以确定是否存在下一页。如果我们可以匹配此值,则表示没有下一页。因此,我们使用do。。。而循环结构,以获取所有页面内容。代码修改如下:
当匹配“nopress2”时,while条件不再满足,循环停止
1、根据以下HTML结构,在相应的a标记中查找位置名称和URL
在这里,使用foreach遍历我们刚刚得到的数组$arr,并添加代码来执行。。。而:
2找到公司名称和相应的URL,并继续在foreach中添加代码
三,。匹配配置职位的月薪、工作地点、释放时间,继续添加代码
经过上述处理后,您将最终得到以下形式的数组:
到目前为止,我们已经获得了我们想要提取的数据
完整代码:
这个文章只提供了一个通用的方法来抓取我们想要的网页内容。中间的一些步骤和代码仍然可以优化,还有一些不足之处。欢迎大家共同探讨。毕竟,在编程中,没有最好的代码,只有更好的想法 查看全部
php curl抓取网页指定内容(如何利用正则匹配从网站的页面中提取我们想要的招聘信息)
在web开发中,我们有时需要从其他web页面的内容中提取所需的信息。为了获取页面信息,我们需要使用curl方法,但是为了从捕获的信息中提取我们真正需要的内容,我们需要使用正则表达式进行匹配
在这里,我将简要介绍如何使用常规匹配从网站页面提取我们想要的招聘信息,分为以下步骤:
1、分析我们想要捕获内容的网页的URL组成
2、根据实际情况拼接我们需要的URL
3、阅读网页内容
4、根据返回的内容,我们使用常规匹配来匹配我们需要的内容
步骤1:分析URL组成:
在网站的“搜索职位”页面上,选择工作地点和职位并搜索

发现URL的组成如下:
%E7%BB%B5%E9%98%B3&;kw=爪哇岛&;sm=0&;p=1
其中:
Ji参数的值为工作位置:此处显示的值“%E7%BB%B5%E9%98%B3”未被篡改;这是使用URLEncode进行中文编码的结果。我们也可以直接说出代码,比如Ji=绵阳
kW参数的值为位置
p参数是页码
步骤2现在,让我们构建要访问的URL:

步骤3使用文件获取内容函数获取网站内容:
现在您需要使用Google browser的调试工具来观察这部分的HTML结构,以便编写相应的正则表达式:
此部分的HTML结构为:

步骤4:使用正则表达式匹配所需内容:
首先,将此部分的值与正则表达式匹配。参考上述HTML结构,构造的正则表达式(这里我们使用更高效的PCRE模式)是:

我们使用匹配函数preg_uu匹配所有:

通过以上匹配,您可以将匹配的内容放入$arr数组中,返回的内容如下:

继续使用正则表达式来匹配我们需要的内容,但是以前构建的URL中的页码值是1,因此我们需要匹配所有页面,因此我们需要修改以前的URL,并且我们需要使用循环,但是我们应该使用什么循环结构呢?我们首先需要观察页面中“下一页”按钮的HTML结构:


我们可以匹配上图中标记a中的类名“nopress2”,以确定是否存在下一页。如果我们可以匹配此值,则表示没有下一页。因此,我们使用do。。。而循环结构,以获取所有页面内容。代码修改如下:


当匹配“nopress2”时,while条件不再满足,循环停止
1、根据以下HTML结构,在相应的a标记中查找位置名称和URL

在这里,使用foreach遍历我们刚刚得到的数组$arr,并添加代码来执行。。。而:

2找到公司名称和相应的URL,并继续在foreach中添加代码

三,。匹配配置职位的月薪、工作地点、释放时间,继续添加代码

经过上述处理后,您将最终得到以下形式的数组:

到目前为止,我们已经获得了我们想要提取的数据
完整代码:



这个文章只提供了一个通用的方法来抓取我们想要的网页内容。中间的一些步骤和代码仍然可以优化,还有一些不足之处。欢迎大家共同探讨。毕竟,在编程中,没有最好的代码,只有更好的想法
php curl抓取网页指定内容(一下file_get_contents函数可以获取远程链接数据的方法)
网站优化 • 优采云 发表了文章 • 0 个评论 • 261 次浏览 • 2021-09-13 09:01
对于做过数据采集的人来说,cURL肯定会很熟悉。 PHP中虽然有file_get_contents函数可以获取远程链接数据,但是可控性太差。对于各种复杂情况采集场景,file_get_contents 显得有些力不从心。因此,本文将向您介绍采集神器cURL。
首先添加file_get_contents函数获取远程链接数据的方法。
这段代码会直接使用curl来显示文件内容,但是问题来了,因为curl是PHP的一个扩展,有些主机为了安全会使用curl,在本地调试的时候curl也是关闭的宁外PHP,所以会出现错误,所以这段代码不可取,所以云落给他重写了
修改后的版本是对curl扩展做一个判断,看curl扩展是否在服务器上打开。如果打开,则直接显示文件,如果未打开,则显示提示文本。
虽然问题已解决,但还有一个问题。我只显示一段文字。我不做大事,为什么要写这么多代码? ?
经过一些傻测试,我发现file_get_contents获取远程文件内容的速度并不比curl慢,而且在一些文件较少的情况下可能比curl扩展快很多,所以我又重新写了一遍代码
工具
火狐 + 萤火虫
“工人要想做好自己的工作,就必须磨砺他们的工具。”在分析案例之前,让我们学习一下如何使用神器Firebug来获取我们需要的信息。
使用F12打开Firebug,我们可以得到图片(一)interface:
1、箭头图标是“元素选择”工具。单击一次以突出显示该图标。同时,鼠标在页面内的移动会同时选中HTML菜单中的相应内容。此时点击内容表示该元素被选中,图标高亮取消。如图(二):
萤火虫视图元素
2、控制面板
这里输出的是JS中console.log系列函数的打印
3、HTML
HTML 内容,注意这里看到的不一定是采集 想要解析的。 采集分析内容的时候,总是以查看源码(Ctrl+U)为标准,这里只列出可以快速定位的元素结构,然后选择一个比较特殊的引用,在源码中定位到对应的位置.
例如,如果您在 HTML 中看到一个标签
演示
,但是你查看源代码看到的可能是
演示
如果使用前者对采集内容进行正则匹配,则不会得到任何结果。
4、CSS
这里是CSS文件的内容
5、Script
这里是Javascript文件的内容
6、DOM
Dom 节点内容
7、网络
每个请求链接的数据,这里是我们采集要重点分析的。它可以显示每个请求的参数、请求头、cookie数据等。在页面提交会刷新的情况下,需要使用hold,这样刷新后页面请求的内容保留在控制台中,如图(三):
此外,Firefox 还有一个 Tamper 数据扩展,也可以获取请求数据,需要时可以安装使用。
8、Cookies
Cookie 数据
图中(一),你也可以看到下面有很多可选的小菜单项,其中keep是我们要注意的。选择时,即使页面被刷新提交表单,下方内容区的数据仍会保留,这对于分析提交的数据尤为关键。
总结
我们在分析采集请求的时候,主要关心的是“Network”菜单中的请求数据。如有必要,使用“Keep”查看刷新页面的请求数据。您可以在请求前使用“清除”清除以下内容。 .
案例分析
一、简的采集
这里简单的采集指的是采集单页GET请求。如此简单,即使通过file_get_contents函数也能轻松获取页面返回结果。
File_get_contents 代码片段
<p> 查看全部
php curl抓取网页指定内容(一下file_get_contents函数可以获取远程链接数据的方法)
对于做过数据采集的人来说,cURL肯定会很熟悉。 PHP中虽然有file_get_contents函数可以获取远程链接数据,但是可控性太差。对于各种复杂情况采集场景,file_get_contents 显得有些力不从心。因此,本文将向您介绍采集神器cURL。
首先添加file_get_contents函数获取远程链接数据的方法。
这段代码会直接使用curl来显示文件内容,但是问题来了,因为curl是PHP的一个扩展,有些主机为了安全会使用curl,在本地调试的时候curl也是关闭的宁外PHP,所以会出现错误,所以这段代码不可取,所以云落给他重写了
修改后的版本是对curl扩展做一个判断,看curl扩展是否在服务器上打开。如果打开,则直接显示文件,如果未打开,则显示提示文本。
虽然问题已解决,但还有一个问题。我只显示一段文字。我不做大事,为什么要写这么多代码? ?
经过一些傻测试,我发现file_get_contents获取远程文件内容的速度并不比curl慢,而且在一些文件较少的情况下可能比curl扩展快很多,所以我又重新写了一遍代码
工具
火狐 + 萤火虫
“工人要想做好自己的工作,就必须磨砺他们的工具。”在分析案例之前,让我们学习一下如何使用神器Firebug来获取我们需要的信息。
使用F12打开Firebug,我们可以得到图片(一)interface:
1、箭头图标是“元素选择”工具。单击一次以突出显示该图标。同时,鼠标在页面内的移动会同时选中HTML菜单中的相应内容。此时点击内容表示该元素被选中,图标高亮取消。如图(二):
萤火虫视图元素

2、控制面板
这里输出的是JS中console.log系列函数的打印
3、HTML
HTML 内容,注意这里看到的不一定是采集 想要解析的。 采集分析内容的时候,总是以查看源码(Ctrl+U)为标准,这里只列出可以快速定位的元素结构,然后选择一个比较特殊的引用,在源码中定位到对应的位置.
例如,如果您在 HTML 中看到一个标签
演示
,但是你查看源代码看到的可能是
演示
如果使用前者对采集内容进行正则匹配,则不会得到任何结果。
4、CSS
这里是CSS文件的内容
5、Script
这里是Javascript文件的内容
6、DOM
Dom 节点内容
7、网络
每个请求链接的数据,这里是我们采集要重点分析的。它可以显示每个请求的参数、请求头、cookie数据等。在页面提交会刷新的情况下,需要使用hold,这样刷新后页面请求的内容保留在控制台中,如图(三):

此外,Firefox 还有一个 Tamper 数据扩展,也可以获取请求数据,需要时可以安装使用。
8、Cookies
Cookie 数据
图中(一),你也可以看到下面有很多可选的小菜单项,其中keep是我们要注意的。选择时,即使页面被刷新提交表单,下方内容区的数据仍会保留,这对于分析提交的数据尤为关键。
总结
我们在分析采集请求的时候,主要关心的是“Network”菜单中的请求数据。如有必要,使用“Keep”查看刷新页面的请求数据。您可以在请求前使用“清除”清除以下内容。 .
案例分析
一、简的采集
这里简单的采集指的是采集单页GET请求。如此简单,即使通过file_get_contents函数也能轻松获取页面返回结果。
File_get_contents 代码片段
<p>
php curl抓取网页指定内容(给出使用curl获取网页代码的简单例子(图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 70 次浏览 • 2021-09-13 08:20
在php中,根据url获取网页内容非常方便。可以通过系统内置函数file_get_contents()传入url,返回网页内容。例如获取百度主页的内容代码为:
可以显示百度首页的内容,但是这个功能不是万能的,因为有些服务器禁用了这个功能,或者这个功能没有把某些必要的参数传递给服务器,服务器拒绝响应。例如:
此代码无法获取网易首页的完整代码,会返回如下页面。这个时候就需要想别的办法了。
这里介绍php的cURL库,可以方便有效的抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取网页内容,cURL 都是一个强大的 PHP 库。要使用它,首先必须在 php 配置文件中打开它。当它打开时,windows 中可能需要一些dll。我不相信这里的介绍。要检查 curl 是否打开,您可以调用 phpinfo();检查它是否打开,它会显示在“加载的扩展”中。
以下是使用curl获取网页代码的简单示例:
curl_setopt ($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36');curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);$html = curl_exec($ch);echo $html; 查看全部
php curl抓取网页指定内容(给出使用curl获取网页代码的简单例子(图))
在php中,根据url获取网页内容非常方便。可以通过系统内置函数file_get_contents()传入url,返回网页内容。例如获取百度主页的内容代码为:
可以显示百度首页的内容,但是这个功能不是万能的,因为有些服务器禁用了这个功能,或者这个功能没有把某些必要的参数传递给服务器,服务器拒绝响应。例如:
此代码无法获取网易首页的完整代码,会返回如下页面。这个时候就需要想别的办法了。
这里介绍php的cURL库,可以方便有效的抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取网页内容,cURL 都是一个强大的 PHP 库。要使用它,首先必须在 php 配置文件中打开它。当它打开时,windows 中可能需要一些dll。我不相信这里的介绍。要检查 curl 是否打开,您可以调用 phpinfo();检查它是否打开,它会显示在“加载的扩展”中。
以下是使用curl获取网页代码的简单示例:
curl_setopt ($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36');curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);$html = curl_exec($ch);echo $html;
php curl抓取网页指定内容(一个gbk编码中文乱码多种解决方法(1)_光明网(组图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 133 次浏览 • 2021-09-13 08:19
----------------------------------------------- ---------- Ta 仅共享内容开始 ---------------------------------- - ----------------------------------
php抓取gbk编码中文乱码多种解决方法
我今天在做一个项目,抓取一个gbk编码的页面后出现中文乱码。终于找到了解决办法:
使用:$content = mb_convert_encoding($content ,'HTML-ENTITIES',"GBK");转码后就好了。
$url = 'http://www.juming.com/ykj%3Fap ... 9%3B.$id.'&ymlx=0&jgpx=0&1=1&meiye='.$pageSize.'&page='.$page;
$content = httpRequest($url);
//$content = mb_convert_encoding($content,'utf-8'); //此方方法 打印后还是乱码
//$content = mb_convert_encoding($content,"utf-8", "GBK"); //此方方法 打印后还是乱码
//$content = mb_convert_encoding($content,'UTF-8','UTF-8,GBK,GB2312,BIG5'); // 此方方法 打印后还是乱码
// 最后用此方法,解决了
$content = mb_convert_encoding($content ,'HTML-ENTITIES',"GBK");
$dom = new \DOMDocument();
$BDomain = new BDomain();
//从一个字符串加载HTML
@$dom->loadHTML($content);
$xpath = new \DOMXPath($dom);
php使用curl获取的文本出现乱码的解决方法
使用PHP的curl获取远程html文本时出现中文乱码。
解决代码如下:
$url = "gongfuma.com";
//获取页面内容
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,20);
$res = curl_exec($ch);
curl_close($ch);
$res=mb_convert_encoding($res,'UTF-8','UTF-8,GBK,GB2312,BIG5');
//使用该函数对结果进行转码
----------------------------------------------- ---------- Ta 只分享了这些内容 ---------------------------------- - ---------------------------------- 查看全部
php curl抓取网页指定内容(一个gbk编码中文乱码多种解决方法(1)_光明网(组图))
----------------------------------------------- ---------- Ta 仅共享内容开始 ---------------------------------- - ----------------------------------
php抓取gbk编码中文乱码多种解决方法
我今天在做一个项目,抓取一个gbk编码的页面后出现中文乱码。终于找到了解决办法:
使用:$content = mb_convert_encoding($content ,'HTML-ENTITIES',"GBK");转码后就好了。
$url = 'http://www.juming.com/ykj%3Fap ... 9%3B.$id.'&ymlx=0&jgpx=0&1=1&meiye='.$pageSize.'&page='.$page;
$content = httpRequest($url);
//$content = mb_convert_encoding($content,'utf-8'); //此方方法 打印后还是乱码
//$content = mb_convert_encoding($content,"utf-8", "GBK"); //此方方法 打印后还是乱码
//$content = mb_convert_encoding($content,'UTF-8','UTF-8,GBK,GB2312,BIG5'); // 此方方法 打印后还是乱码
// 最后用此方法,解决了
$content = mb_convert_encoding($content ,'HTML-ENTITIES',"GBK");
$dom = new \DOMDocument();
$BDomain = new BDomain();
//从一个字符串加载HTML
@$dom->loadHTML($content);
$xpath = new \DOMXPath($dom);
php使用curl获取的文本出现乱码的解决方法
使用PHP的curl获取远程html文本时出现中文乱码。
解决代码如下:
$url = "gongfuma.com";
//获取页面内容
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,20);
$res = curl_exec($ch);
curl_close($ch);
$res=mb_convert_encoding($res,'UTF-8','UTF-8,GBK,GB2312,BIG5');
//使用该函数对结果进行转码
----------------------------------------------- ---------- Ta 只分享了这些内容 ---------------------------------- - ----------------------------------