几种PHP实现网页抓取的程序代码

抓取某一个网页中的内容,需要对DOM树进行解析,找到指定节点后,再抓取我们需要的内容,过程有点繁琐。LZ总结了几种常用的、易于实现的网页抓取方式,如果熟悉JQuery选择器,这几种框架会相当简单。

一、Ganon

项目地址: http://code.google.com/p/ganon/

文档: http://code.google.com/p/ganon/w/list

测试:抓取我的网站首页所有class属性值是focus的div元素,并且输出class值

<?php
 include 'ganon.php';
 $html = file_get_dom('http://www.111cn.net/');
 foreach($html('div[class="focus"]') as $element) {
   echo $element->class, "<br>n";
 }
?>

 

结果:

二、phpQuery

项目地址:http://code.google.com/p/phpquery/

文档:https://code.google.com/p/phpquery/wiki/Manual

测试:抓取我网站首页的article标签元素,然后出书其下h2标签的html值

<?php
include 'phpQuery/phpQuery.php';
phpQuery::newDocumentFile('http://www.111cn.net/');
$artlist = pq("article");
foreach($artlist as $title){
   echo pq($title)->find('h2')->html()."<br/>";
}
?>

 

结果:

  三、Simple-Html-Dom

项目地址: http://simplehtmldom.sourceforge.net/
文档: http://simplehtmldom.sourceforge.net/manual.htm

测试:抓取我网站首页的所有链接

<?php
include 'simple_html_dom.php';
//使用url和file都可以创建DOM
$html = file_get_html('http://www.111cn.net/');

//找到所有图片
// foreach($html->find('img') as $element)
//        echo $element->src . '<br>';

//找到所有链接
foreach($html->find('a') as $element)
       echo $element->href . '<br>';
?>

 

结果:(截图是一部分)

 

四、Snoopy

项目地址:http://code.google.com/p/phpquery/

文档:http://code.google.com/p/phpquery/wiki/Manual

测试:抓取我的网站首页

<?php
include("Snoopy.class.php");
$url = "http://www.111cn.net";
$snoopy = new Snoopy;
$snoopy->fetch($url); //获取所有内容
 echo $snoopy->results; //显示结果
// echo $snoopy->fetchtext ;//获取文本内容(去掉html代码)
// echo $snoopy->fetchlinks($url) ;//获取链接
// $snoopy->fetchform ;//获取表单
?>

 

结果:

 

五、手动编写爬虫

如果编写能力ok,可以手写一个网页爬虫,实现网页抓取。网上有千篇一律的介绍此方法的文章,LZ就不赘述了。有兴趣了解的,可以百度  php 网页抓取。

七、开源爬虫软件汇总


发语言

软件名称

软件介绍

许可证

Java

Arachnid

微型爬虫框架,含有一个小型HTML解析器

GPL

crawlzilla

安装简易,拥有中文分词功能

Apache2

Ex-Crawler

由守护进程执行,使用数据库存储网页信息

GPLv3

Heritrix

严格遵照robots文件的排除指示和META robots标签

LGPL

heyDr

轻量级开源多线程垂直检索爬虫框架

GPLv3

ItSucks

提供swing GUI操作界面

不详

jcrawl

轻量、性能优良,可以从网页抓取各种类型的文件

Apache

JSpider

功能强大,容易扩展

LGPL

Leopdo

包括全文和分类垂直搜索,以及分词系统

Apache

MetaSeeker

网页抓取、信息提取、数据抽取工具包,操作简单

不详

Playfish

通过XML配置文件实现高度可定制性与可扩展性

MIT

Spiderman

灵活、扩展性强,微内核+插件式架构,通过简单的配置就可以完成数据抓取,无需编写一句代码

Apache

webmagic

功能覆盖整个爬虫生命周期,使用Xpath和正则表达式进行链接和内容的提取

Apache

Web-Harvest

运用XSLT、XQuery、正则表达式等技术来实现对Text或XML的操作,具有可视化的界面

BSD

WebSPHINX

由两部分组成:爬虫工作平台和WebSPHINX类包

Apache

YaCy

基于P2P的分布式Webseo/seo.html" target="_blank">搜索引擎

GPL

Python

QuickRecon

具有查找子域名名称、收集电子邮件地址并寻找人际关系等功能

GPLv3

PyRailgun

简洁、轻量、高效的网页抓取框架

MIT

Scrapy

基于Twisted的异步处理框架,文档齐全

BSD

C++

hispider

支持多机分布式下载, 支持网站定向下载

BSD

larbin

高性能的爬虫软件,只负责抓取不负责解析

GPL

Methabot

经过速度优化、可抓取WEB、FTP及本地文件系统

不详

Methanol

模块化、可定制的网页爬虫,速度快

不详

C#

NWebCrawler

统计信息、执行过程可视化

GPLv2

Sinawler

国内第一个针对微博数据的爬虫程序,功能强大

GPLv3

spidernet

以递归树为模型的多线程web爬虫程序,支持以GBK (gb2312)和utf8编码的资源,使用sqlite存储数据

MIT

Web Crawler

多线程,支持抓取PDF/DOC/EXCEL等文档来源

LGPL

网络矿工

功能丰富,毫不逊色于商业软件

BSD

PHP

OpenWebSpider

开源多线程网络爬虫,有许多有趣的功能

不详

PhpDig

适用于专业化强、层次更深的个性化搜索引擎

GPL

Snoopy

具有采集网页内容、提交表单功能

GPL

ThinkUp

采集推特、脸谱等社交网络数据的社会媒体视角引擎,可进行交互分析并将结果以可视化形式展现

GPL

微购

可采集淘宝、京东、当当等300多家电子商务数据

GPL

ErLang

Ebot

可伸缩的分布式网页爬虫

GPLv3

Ruby

Spidr

可将一个或多个网站、某个链接完全抓取到本地

MIT

 

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文档
, 框架
, 网页
, class
, 代码
属性
java实现网页内容抓取、php 怎么实现网页抓取、网页源代码抓取工具、网页代码抓取工具、抓取网页源代码,以便于您获取更多的相关知识。

时间: 2024-09-13 08:07:30

几种PHP实现网页抓取的程序代码的相关文章

使用phantomjs进行网页抓取的实现代码_javascript技巧

phantomjs因为是无头浏览器可以跑js,所以同样可以跑dom节点,用来进行网页抓取是再好不过了. 比如我们要批量抓取网页 "历史上的今天" 的内容.网站 对dom结构的观察发现,我们只需要取到 .list li a的title值即可.因此我们利用高级选择器构建dom片段 var d= '' var c = document.querySelectorAll('.list li a') var l = c.length; for(var i =0;i<l;i++){ d=d+

《用Python写网络爬虫》——2.2 三种网页抓取方法

2.2 三种网页抓取方法 现在我们已经了解了该网页的结构,下面将要介绍三种抓取其中数据的方法.首先是正则表达式,然后是流行的BeautifulSoup模块,最后是强大的lxml模块. 2.2.1 正则表达式 如果你对正则表达式还不熟悉,或是需要一些提示时,可以查阅https://docs.python.org/2/howto/regex.html 获得完整介绍. 当我们使用正则表达式抓取面积数据时,首先需要尝试匹配 元素中的内容,如下所示. >>> import re >>&

初学指南| 用Python进行网页抓取

引言 从网页中提取信息的需求日益剧增,其重要性也越来越明显.每隔几周,我自己就想要到网页上提取一些信息.比如上周我们考虑建立一个有关各种数据科学在线课程的欢迎程度和意见的索引.我们不仅需要找出新的课程,还要抓取对课程的评论,对它们进行总结后建立一些衡量指标.这是一个问题或产品,其功效更多地取决于网页抓取和信息提取(数据集)的技术,而非以往我们使用的数据汇总技术. 网页信息提取的方式 从网页中提取信息有一些方法.使用API可能被认为是从网站提取信息的最佳方法.几乎所有的大型网站,像Twitter.

Node.js实现的简易网页抓取功能示例_node.js

现今,网页抓取已经是一种人所共知的技术了,然而依然存在着诸多复杂性, 简单的网页爬虫依然难以胜任Ajax轮训.XMLHttpRequest,WebSockets,Flash Sockets等各种复杂技术所开发出来的现代化网站. 我们以我们在Hubdoc这个项目上的基础需求为例,在这个项目中,我们从银行,公共事业和信用卡公司的网站上抓取帐单金额,到期日期,账户号码,以及最重要的:近期账单的pdf.对于这个项目,我一开始采用了很简单的方案(暂时并没有使用我们正在评估的昂贵的商业化产品)--我以前在M

java简单网页抓取的实现方法_java

本文实例讲述了java简单网页抓取的实现方法.分享给大家供大家参考.具体分析如下: 背景介绍 一 tcp简介 1 tcp 实现网络中点对点的传输 2 传输是通过ports和sockets ports提供了不同类型的传输(例如 http的port是80) 1)sockets可以绑定在特定端口上,并且提供传输功能 2)一个port可以连接多个socket 二 URL简介 URL 是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址. 互联网上的每个文件都有一个唯一的

网页抓取优先策略

网页抓取优先策略 网页抓取优先策略也称为"页面选择问题"(page Selection),通常是尽可能地首先抓取重要性的网页,这样保证在有限的资源内尽可能地照顾到那些重要性高的网页.那么哪些网页才是重要性高的呢?如何量化重要性呢? 重要性度量由链接欢迎度.链接重要度和平均链接深度这个方面决定. 定义链接欢迎度为IB(P),它主要由反向链接(Backinks)的数目和质量决定.首先考察数目,直观地讲,一个网页有越多的链接指向它(反向链接数多),那么表示其他网页对其的认可.同时这个网页被网

构建一个高性能的网页抓取器,互联网营销

  互联网的发展,使人类提前进入了信息爆炸的年代,在浩瀚无边的信息海洋里,如何快速.准确找到对自己有用的信息,就成了一个很有价值的研究课题,于是,搜索引擎应运而生.现在,国内外大大小小的搜索引擎有很多,搜搜也是这搜索引擎大军中的一员悍将.笔者有幸参与了搜搜研发过程中的一些工作,在这里写一些自己的理解与看法,权当是抛砖引玉,希望能够得到业内前辈们的一些指点. 对于网页搜索引擎来说,它的基本处理流程,通常可以分为三个步骤:一是对海量互联网网页的抓取,也称下载:二是对已下载的网页进行预处理,包括抽取正

用TinySpider进行网页抓取实例

本例中用到的maven坐标变化如下: ? 1 2 3 4 5 <dependency> <groupId>org.tinygroup</groupId> <artifactId>org.tinygroup.spider</artifactId> <version>0.1.0-SNAPSHOT</version> </dependency> 在百度中搜索笑话,看到这么一个网站:http://www.jokeji.

c#-C# 网页抓取保存为图片

问题描述 C# 网页抓取保存为图片 给个网址,然后把整个网页以图片的形式保存到本地要求 :1. 要保存的是整个网页,从头到尾2.如果网页超出屏幕,请模拟下拉滚动条至网页底部,待网页所有元素加载完毕后,再保存 解决方案 这个需求对于那些所谓"瀑布流"方式加载的网页,典型的,新浪微博和google图片搜索结果,它下拉下来是无限长的,而你的内存不是无限大的,一下子就把你的程序搞死了. 解决方案二: c#获取整个网页截图 解决方案三: 现在的问题是如何判断一个网站完全打开,包括所有的图片已经打