php 循环抓取网页内容(做过j2ee或android开发的童鞋,应该或多或少都使用过Apeache的HttpClient类库)

优采云 发布时间: 2021-09-16 13:10

  php 循环抓取网页内容(做过j2ee或android开发的童鞋,应该或多或少都使用过Apeache的HttpClient类库)

  J2EE或Android开发的童鞋应该或多或少地使用apeache的httpclient类库。这个类库为我们提供了一个非常强大的服务器端HTTP请求操作。在开发中使用非常方便

  在最近的PHP开发中,还需要在服务器上发送HTTP请求,然后将它们处理回客户端。如果您使用插座,可能不会太麻烦。我想看看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相关的操作函数,功能非常强大

  include "Snoopy.class.php";

$snoopy = new Snoopy();

$snoopy->proxy_host = "http://www.baidu.cn";

$snoopy->proxy_port = "80";

$snoopy->agent = "(compatible; MSIE 4.01; MSN 2.5; AOL 4.0; Windows 98)";

$snoopy->referer = "http://www.4wei.cn";

$snoopy->cookies["SessionID"] = '238472834723489';

$snoopy->cookies["favoriteColor"] = "RED";

$snoopy->rawheaders["Pragma"] = "no-cache";

$snoopy->maxredirs = 2;

$snoopy->offsiteok = false;

$snoopy->expandlinks = false;

$snoopy->user = "joe";

$snoopy->pass = "bloe";

if($snoopy->fetchtext("http://www.baidu.cn")) {

echo "" . htmlspecialchars($snoopy->results) . "

  \n”;}否则{echo“获取文档时出错:“.$snoopy->错误。”\n”}

  如需了解更多操作方法,请访问史努比官方文档或直接查看源代码

  在这里,Snoopy就像两颗豌豆一样,更重要的是,它只是为了抓回页面。如果你想从抓取的页面中提取数据,那么它将不会有帮助。在这里,我找到了PHP解析HTML的另一个好工具:phpQuery,它提供了与jquery相同的操作方法,并提供了一些PHP特性,熟悉jquery的Childer而且使用phpquery应该很容易。甚至phpquery文档都不需要

  使用Snoopy+phpquery可以轻松实现网页捕获和数据分析。这非常有用。我最近还发现了这两个很好的类库。PHP可以做很多Java可以做的事情

  感兴趣的学生也可以尝试做一个简单的网络爬虫

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线