snoopy php网页抓取工具(做抓取前,记得把php.ini中的max_execution)
优采云 发布时间: 2022-01-31 22:02snoopy php网页抓取工具(做抓取前,记得把php.ini中的max_execution)
在做爬取之前,记得把php.ini中的max_execution_time设置大一点,否则会报错。
一、 使用 Snoopy.class.php 抓取页面
一个很可爱的班级名字。功能也很强大,用来模拟浏览器的功能,可以获取网页内容,发送表单等。
1)我要抓取网站的一个列表页的内容,我要抓取的是全国医院信息内容,如下图:
2)我自然是复制了URL地址,用Snoopy类抓取前10页的内容,并将内容放到本地,在本地创建一个html文件,用于后面的分析。
$snoopy=new Snoopy();
//医院list页面
for($i = 1; $i fetch($url);
file_put_contents("web/page/$i.html", $snoopy->results);
}
echo 'success';
3)很奇怪,返回的内容不是国家内容,而是上海的相关内容
4) 后来我怀疑里面可能设置了一个cookie,然后用firebug查了一下,有一个惊人的内幕
5)请求中也放入了cookie的值,加上了一个设置语句$snoopy->cookies["_area_"],情况就大不一样了,顺利返回全国信息。
$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
演示下载:
关于 Snoopy 类的一些注意事项:
类方法
获取($URI)