您现在的位置是:首页 > PHP > 【抓取网页】的一些注意事项 网站首页 PHP

【抓取网页】的一些注意事项

Tom2017-10-29 3999人围观
PHP   抓取  
简介 暂无

方式:

  1. 第一种:抓取网页使用的file_get_contents(url)
  2. 第二种:使用crul模拟的方式

file_get_contents

优点:

  1. 就是语法简单
  2. 自能抓取get的网页,对于post无能为力

缺点:

  1. 可能会速度比较慢一点
  2. 如果对方服务器启用的url的检测,禁止file_get_contents的时候就显得很恼火了,怎么都抓不到(当然也有解决方法,一般的浏览器访问的时候会单上浏览器标示,而我们的file_get_contents是不会带,所以就带上,写法:)【ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 9.0)'); //模拟http,user_agent,默认file_get_contents不带user_agent】
  3. 还有一总情况,就算接收到了,数据还是gzip加密的,这种对于file_get来说就比较麻烦了,解决方法简单点就是使用curl来做要好一点(其他的方法不做追述,比如:zlib库,或者使用gzip解压)

例子:

  •     ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 9.0)'); //模拟http,useer_agent,默认file_get_contents不带user_agent
  •    //采集文章列表-get_file_contents
  •     $url = "http://baidu.com/"; 
  •     $conn = file_get_contents($url);
  •     echo $conn;

curl

优点:

  1. 速度快一点,至于快在哪里,我也不晓得了
  2. 可以模拟get和post多种提交方式
  3. 可以携带跟多的http头信息
  4. 可以抓取后的gzip加密过的乱码数据

缺点:

  1. 需要了解这个的用法
  2. 使用起来稍微麻烦一点

例子:

  • $url = "http://baidu.com/";//当然百度这个页面并没有gzip加密,所以这是个假链接(只有需要抓换的网页才加gzip转换)
  • $c = curl_init(); 
  • curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); 
  • //模拟ie6浏览器
  • curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;http://xs2345.com/)'); 
  • curl_setopt($c, CURLOPT_URL, $url); 
  • curl_setopt($c, CURLOPT_ENCODING, "gzip"); // 转换gzip
  • $contents = curl_exec($c); 
  • curl_close($c);

打赏本站,你说多少就多少

文章评论

image
2018-04-05 姜昆工
水电费