`
jdluojing
  • 浏览: 16530 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

使用php发送Http请求,抓取网页数据

 
阅读更多

做过j2ee 或android开发的童鞋,应该或多或少都使用过Apeache的HttpClient类库吧。这个类库给我们提供了十分强大的服务端Http请求操作。在开发中使用起来十分的方便。

最近做php的开发,也有需要在服务端发送http请求,然后处理返回到客户端,如果用socket来做,未必又太麻烦了,心想这看看php中有没有类似HttpClient这样的类库。

Google了一下,发现php中还真有这么一个类库,而且名字就叫做httpclient,相当的激动啊,到官网一看,发现已经好多年都没更新过了,而且功能貌似也有限,大失所望啊。接着我找到了另外一个类库Snoopy,对于这个类库我也不了解,不过看网上的响应还不错,于是决定就用他了。他的API使用和Apeache的HttpClient差别很大,但是还是十分容易使用。而且提供了许多特殊用途的方法,比如可以只抓去页面中的form表单,或者所有的链接等等。

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 "<PRE>" . htmlspecialchars($snoopy->results) . "</PRE>\n";
} else {
	echo "error fetching document: " . $snoopy->error . "\n";
}
更多的操作方法,可以去Snoopy的官方查看文档,或者是直接查看源代码。

到这里,snoopy也仅仅是把页面抓取回来,如果要对抓取回来的页面进行数据提取,那么它就帮不上什么忙了。这里我又找到了另外一个php解析html的好工具:phpQuery,它提供的操作方法和jquery几乎一模一样,而且提供了一些php的特性,熟悉jquery的童鞋,用phpquery应该是相当的顺手啊,甚至phpQuery的文档都不需要了..

使用Snoopy+PhpQuery可以很方便的实现网页的抓取和数据解析,十分有用啊,我也是最近有这方面的需要,才发现了这两个不错的类库啊,原来很多java可以做的事情,php也能做哦。

有兴趣的同学,也可以试试用他们来做个简易的网页爬虫哦。

分享到:
评论

相关推荐

    PHP中使用CURL发送get/post请求上传图片批处理功能

    cURL是利用url语法规定传输文件和数据的工具。php中有curl拓展,一般用来实现网络抓取,模拟发送get ...实例一 : 抓取网页数据(以拉手网开放api为例,也是get请求) &lt;?php header(Content-type: text/html; c

    PHP中使用cURL操作网络资源1

    二、主要技术本案例主要使用PHP 7中的数据传输神器cURL来抓取网络资源、动态获取WebService数据接口数据和发送HTTP请求,从而来实现简单网页爬虫程

    PHP中使用cURL操作网络资源

    本案例主要使用PHP 7中的数据传输神器cURL来抓取网络资源、动态获取WebService数据接口数据和发送HTTP请求,从而来实现简单网页爬虫程序的编写、调用WebService查询当前天气和访问HTTPS资源的功能。

    双11电商项目实战之在线抽奖系统项目

    2抽奖模块:用户通过请求发送数据到后端,后端获取抽奖人员id并通过RequestMapping 解来处理前端的请求 并返回响应. 3奖项模块:通过后端实现了新增奖项,修改奖项,删除奖项等功能,在修改奖项采用了批量更新,使用...

    mole:Braseidon\Mole 是一种快速高效的网络抓取工具,通过代理针对各种形式的数据

    使用正则表达式抓取网站并收集您想要的任何类型的信息 所有请求都可以通过代理列表中的随机代理发送 由强大的 RollingCurl 提供支持,这是一个支持异步线程的快速卷曲包装器 与框架无关,适用于任何项目 Composer ...

    google-measurement-php-client:PHP客户端通过Google Measurement Protocol将分析数据发送到Google Analytics(分析)

    异步/多请求 SSL支持(非默认-设置选项) 适配器支持(插槽) 测验 追踪功能 简单 页面追踪 事件追踪 社会的社交追踪 例外异常追踪 运动广告活动追踪 应用程式 应用事件跟踪 应用程序屏幕跟踪 用户 用户计时跟踪 ...

    Node.js编写爬虫的基本思路及抓取百度图片的实例分享

    按照一定的规律发送 HTTP 请求获得页面 HTML 源码(必要时需要加上一定的 HTTP 头信息,比如 cookie 或 referer 之类) 利用正则匹配或第三方模块解析 HTML 代码,提取有效数据 将数据持久化到数据库中 但是真正...

    PHP CURL获取cookies模拟登录的方法

    要提取google搜索的部分数据,发现google对于软件抓取它的数据屏蔽的厉害,以前伪造下 USER-AGENT 就可以抓数据,但是现在却不行了。利用抓包数据发现,Google 判断了 cookies,当你没有cookies的时候,直接返回 302...

    JDiy开发框架与javaWeb建站平台v1.0

    无论是javaSE开发环境,还是javaWeb/javaEE开发环境,您都可以使用这些工具类进行诸如文件系统操作(文件或文件夹的移动、复制、删除等)、图片打水印、缩放、发送邮件、URL地址资源请求、HTML抓取、文件下载、常用...

    JDiy框架与javaWeb建站**台 v1.11.rar

    无论是javaSE开发环境,还是 javaWeb/javaEE开发环境,您都可以使用这些工具类进行诸如文件系统操作(文件或文件夹的移动、复制、删除等)、图片打水印、缩放、发送邮件、URL地址资源请求、HTML抓取、文件下载、常用...

    ZendFramework中文文档

    访问请求数据 7.4.2.2. 基地址和子目录 7.4.2.3. 决定请求方式 7.4.2.4. 删除 AJAX 请求 7.4.3. 子类化请求对象 7.5. 标准路由器:Zend_Controller_Router_Rewrite 7.5.1. 简介 7.5.2. 使用路由器 7.5.3. ...

Global site tag (gtag.js) - Google Analytics