php 网页内容抓取(做抓取前,记得把php.ini中的max_execution)

优采云 发布时间: 2022-01-04 09:14

  php 网页内容抓取(做抓取前,记得把php.ini中的max_execution)

  爬取前记得将php.ini中的max_execution_time设置为较大的值,否则会报错。

  一、使用Snoopy.class.php抓取页面

  一个非常可爱的班级名称。功能也很强大,用来模拟浏览器的功能,可以获取网页内容,发送表单等等。

  1)现在我要抓取网站的一个列表页的内容,我要抓取的是全国医院信息的内容,如下图:

  2)我自然是复制URL地址,使用Snoopy类抓取前10页的内容,并将内容放到本地,在本地创建一个html文件,稍后分析使用。<//p

ppre$snoopy=new Snoopy();

//医院list页面

for($i = 1; $i = 10; $i++) {

$url = 'http://www.guahao.com/hospital/areahospitals?p=全国&pageNo=' . $i;

$snoopy-fetch($url);

file_put_contents("web/page/$i.html", $snoopy->results);

}

echo 'success';

  3)奇怪的是,返回的内容不是国家内容,而是上海相关内容

  4)怀疑里面可能设置了cookie,然后用firebug查看了一下,果然有惊天动地的内幕

  5)在请求中放入cookie的值,并添加设置语句$snoopy->cookies["_area_"],情况大不相同,顺利返回国家信息。<//p

ppre$snoopy=new Snoopy();

//医院list页面

$snoopy->cookies["_area_"] = '{"provinceId":"all","provinceName":"全国","cityId":"all","cityName":"不限™"}';

for($i = 1; $i results;

}

  2)使用phpQuery获取节点信息,如下DOM结构所示:

  使用一些phpQuery方法,结合DOM结构读取各个医院信息的URL地址。

  for($i = 1; $i attr('href')); //医院详情

}

}

  3)根据读取到的URL地址列表,抓取指定页面。

  $detailIndex = 1;

for($i = 1; $i results);

$detailIndex++;

}

}

  FQ 工具下载:

  克服障碍.rar

  演示下载:

  史努比类的一些说明:

  类方法

  获取($URI)

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线