`
jdluojing
  • 浏览: 17959 次
  • 性别: 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抓取网页数据代码

    总的来说,PHP抓取网页数据涉及的关键技术有HTTP请求、HTML解析、DOM操作以及数据库交互。这个压缩包提供了一个现成的解决方案,可以直接运行并理解数据抓取的整个过程。对于学习和实践PHP数据抓取的开发者来说,这...

    java抓取网站数据

    无论是进行市场调研、竞品分析还是数据挖掘,掌握如何使用Java来抓取数据都是十分必要的。本篇文章将详细介绍如何使用Java语言抓取51job人才网上的Java职位需求数据。 #### 二、准备工作 在开始抓取之前,需要对...

    php 模拟浏览器请求网页见容

    当我们需要从网页抓取内容,而直接访问又有困难时,可以利用PHP模拟浏览器请求网页内容。这一技术常被称为“网页抓取”或“屏幕抓取”,在数据分析、信息聚合、自动化测试等场景下非常实用。 首先,模拟浏览器请求...

    PHP使用Curl实现模拟登录及抓取数据功能示例

    在PHP开发中,有时我们需要获取一些需要用户登录后才能访问的网页内容,此时可以借助Curl库来模拟登录过程并抓取数据。Curl库是一个强大的URL处理工具,支持多种协议,包括HTTP、HTTPS等,它能让我们在PHP中发送HTTP...

    远程抓取网页到本地数据库

    ### 远程抓取网页到本地数据库:详细解析与实现 ...通过以上步骤,可以实现从远程网页抓取数据并存储到本地数据库的功能。这种方式不仅能够高效地收集网络上的信息,还能便于后续的数据分析和利用。

    php抓取三星在售手机数据

    本项目聚焦于使用PHP语言来抓取京东网站上三星手机的销售数据,包括手机名称、价格、运行内存、电池容量、机身颜色以及摄像头像素等关键信息。以下是关于这个主题的详细知识点: 1. PHP基础: PHP是一种广泛使用的...

    Android开发简单获取网页数据

    在Android开发中,获取网页数据是一项常见的任务,无论是从ASPX、PHP或其他类型的网页服务器获取信息,都是通过网络请求来实现的。本文将详细介绍如何在Android应用中简单地获取网页数据,以及涉及到的关键技术。 ...

    php应用curl扩展抓取网页类

    本篇文章将深入探讨如何使用PHP的cURL扩展来抓取网页内容,以及如何创建一个类来封装这个功能。我们将讨论以下几个方面: 1. **cURL介绍** cURL是一个命令行工具,同时也提供了PHP的扩展,使得开发者可以在PHP脚本...

    php snoopy 模拟表单提交 数据抓取

    Snoopy是一个PHP库,专门用于模拟浏览器行为,进行HTTP请求,尤其是处理表单提交和登录过程,从而实现网页数据的抓取。本篇文章将详细介绍如何使用Snoopy库进行模拟表单提交和数据抓取。 首先,我们需要了解Snoopy...

    php爬虫抓取50W数据

    这个PHP爬虫实现了基本的自动化,意味着它能自动发送请求、解析响应、存储数据,减少了人为干预。不过,对于图片验证码的处理,由于涉及图像识别技术,通常需要借助OCR(Optical Character Recognition)或其他第三...

    php写的网页小偷 自动抓取网页并在本地重新生成HTML文件

    使用网页小偷程序时需注意版权问题,尊重网站的robots.txt文件指示,避免抓取禁止抓取的内容。同时,频繁的抓取可能对目标网站服务器造成压力,因此应合理设置抓取频率。 总结,PHP编写的网页小偷程序通过自动化的...

    伏尔加河的爬虫 百度地图数据抓取

    5. **数据抓取策略**:由于API的限制,开发者可能需要设计分批请求的策略,例如使用循环或者异步请求来分批次获取数据。同时,为了提高效率,可以考虑缓存部分数据,避免重复请求。 6. **文件结构**: - `伏尔加的...

    python抓取高德POI数据,突破数据量限制

    Python中通常会使用requests库来发送HTTP请求,调用这些API。在脚本中,可能使用了参数化查询,比如设置特定的区域(可能通过经纬度坐标或者行政区划代码)、POI类型(参照`高德地图poi分类表.xlsx`)、搜索范围以及...

    58同城抓取字段

    同时,因为58同城的数据可能涉及用户隐私,所以在使用抓取数据时,必须确保合规,遵循相关法律法规。 总结来说,"58同城抓取字段"这个任务涉及到利用Python编程语言和相关库进行网页爬虫,以获取58同城二手房信息中...

    基于PHP的Google网页搜索抓取(php有后台免费版)源码.zip

    1. **发送HTTP请求**:使用PHP的`file_get_contents()`、`cURL`库或者Guzzle HTTP客户端来模拟用户搜索行为,向Google的搜索API发送GET请求,带上必要的参数如关键词、页码等。 2. **解析HTML响应**:Google返回的...

    基于PHP的Googlephp网页搜索抓取源码.zip

    总的来说,这个基于PHP的Google网页搜索抓取源码项目涵盖了网络爬虫的基本流程,包括发起HTTP请求、处理动态内容、解析HTML、数据存储以及应对反爬策略等多个方面,是学习和实践PHP网络爬虫技术的一个宝贵资源。

    php发送http请求的常用方法分析

    在PHP中,发送HTTP请求是常见的任务,常用于与远程服务器进行数据交互,如API调用、网页抓取等。本文将重点分析三种主要的方法:file_get_contents()、cURL和fsockopen。 1. **file_get_contents()** `file_get_...

    基于PHP的毛毛小游戏抓取php版源码.zip

    PHP有丰富的库支持,如cURL库,可以用来发送HTTP请求,获取网页内容,这对于网络抓取任务至关重要。 【压缩包子文件的文件名称列表】中的 "132687644405303526" 可能代表的是源码包内的主文件或目录。通常,一个PHP...

    php页面抓取源码(一个小文件)

    首先,页面抓取的基本原理是利用HTTP协议发送请求到目标网站,然后解析返回的HTML或XML文档,提取所需的数据。PHP提供了多种库和函数来帮助我们完成这个任务。 1. **cURL库**:PHP中的cURL库是进行HTTP请求的首选...

    PHP 利用Curl实现多线程抓取网页和下载文件

    首先,cURL是PHP的一个扩展,它允许我们通过HTTP、HTTPS等协议发送请求,执行文件传输、获取网页内容等操作。在PHP中,cURL可以通过`curl_init()`函数初始化一个会话,然后设置各种选项,如URL、请求方法、头部信息...

Global site tag (gtag.js) - Google Analytics