php抓取网页动态数据(做过j2ee或android开发的童鞋,应该或多或少都使用过Apeache的HttpClient类库)
优采云 发布时间: 2021-09-14 11:06php抓取网页动态数据(做过j2ee或android开发的童鞋,应该或多或少都使用过Apeache的HttpClient类库)
我做过j2ee或者android开发的童鞋,应该或多或少用过Apeache的HttpClient库。这个类库为我们提供了非常强大的服务端Http请求操作。在开发中使用非常方便。
最近在做php开发,也有需要在服务端发送http请求,然后处理返回给客户端。如果用socket来做,可能不会太麻烦。我想看看php中是否有类似HttpClient的东西。类库。
google了一下,发现php中有这样一个库,名字叫httpclient。我很兴奋。看了官网,发现很多年没更新了,功能好像也有限。我很失望。什么。然后我找到了另一个图书馆,史努比。我对这个库一无所知,但是网上反响很好,所以我决定使用它。他的API用法和Apeache的HttpClient有很大的不同,但是还是非常好用的。它还提供了很多特殊用途的方法,比如只抓取页面上的表单表单,或者所有的链接等等。
include 'Snoopy.class.php';
$snoopy = new Snoopy();
$snoopy->fetch("http://www.baidu.com");
echo $snoopy->results;
通过上面几行代码,你就可以轻松抓取百度的页面了。
当然,当你需要发送post表单时,可以使用submit方法提交数据。
同时还提供了请求头、响应头以及cookie相关的操作功能,非常强大。
\n";} else {echo "error fetching document: ". $snoopy->error. "\n";}
更多操作方法可以去史努比官方文档,或者直接查看源码。
此时,snoopy 只是在获取页面。如果您想从获取的页面中提取数据,那么它不会有太大帮助。在这里我找到了另一个php解析html的好工具:phpQuery,它提供了和jquery几乎一样的操作方法,并且提供了一些php的特性。对于熟悉jquery的小朋友来说,使用phpquery应该是相当容易的,甚至phpQuery的文件都不需要了..
使用Snoopy+PhpQuery可以轻松实现网页抓取和数据分析。这是非常有用的。最近也有这方面的需求,发现了这两个不错的库。原来很多java可以做Php也可以做同样的事情。
有兴趣的同学,也可以尝试用它们做一个简单的网络爬虫。