http://www.thinkphp.cn/topic/36693.html

在使用php进行网页抓取的时候你有没有感觉到用起来比较麻烦呢?目前我还没有发现php有这样针对网页抓取的类,每次用到这个的时候我总是觉得不顺手。每每想到jquery里面的find()方法,获取网页上面的元素都是那么的方便,我在网上找过php相关的方法,但是好像并没有什么结果,于是和同事两个研究出来了一个类,专门针对php抓取网页的处理类,使用这个类你不需要再向以前那么麻烦了,你可以直接调用类似于jquery那种方法,直接对网页上面的数据进行抓取,例如$vp=$this->vq->find('a),你只需要这样操作你就可以获取该网页里面所有的a标签了,是不是觉得有点意思呢?
废话不多说,下面容我介绍下这个类的大致用法把!
为方便大家使用,Vquery类我们已经封装完成,你在项目里面直接引进Vquery类,再构造一个函数传入参数即可:
function _initialize(){
import('ORG.Util.Vquery');//引用Vquery类,不同的框架或源生写法可能引入有差异。根据实际情况选择对应的引入方法。
$arr=array(
"url"=>”http://www.baidu.com”,
“method”=>”get”or”post”,
“data”=>array(“username”=>”admin”,”password”=>”admin”,……..参数自己根据需求补),
“header”=>array(“DESC:admin”,……同上),
); 
// $arr=file_get_contents("http://www.jd.com/allSort.aspx");
$this->vq=new Vquery($arr); 
}

说明:Vquery类内置curl函数,支持传参格式①数组,即依赖Vquery里的curl抓取网页进行分析取值。这种情况需要如上述的$arr数组中的格式进行配置;②Vquery也支持内容传参,例如你可以把已经获取到的网页content直接传入,例如使用file_get_contents获取网页直接传入。Vquery内部已经做了Url解析,支持各种Url传参。好了,引入工作到此就完成了,您可以试试手感了。

Vquery类共计使用的方法有6个:find()、attr()、html()、text()、getHtmlContent ()、deal();

find():find()方法支持类似jquery的链式使用规则,例如$vq=$this->vq->find(“div”)->find(“a”);

find()传参规则: find(标签),例如$vq=$this->vq->find(“div”)表示找文章中所有该标签的元素;
find(标签$属性=)例如$vq=$this->vq->find(div$class=\”nvai\”)表示找文章中所有的class=nvai的div
find(标签,标签)例如$vq=$this->vq->find(“div”,”span”)表示找出文章中多有的div及span标签

find(标签:数字)例如$vq=$this->vq->find(“a:2”)表示找出文章中的第二个a标签
find(属性):例如$vq=$this->vq->find(“class=\”nvai\””)表示找出文章中所有class=”nvai”的标签。

find()方法支持链式调用,所以可以组合使用来达到不同的目的。系统检查到链式调用的结构之后,find()方法会自动让后面的链式结构中去上级的返回结果中匹配结果,例如,$vq=$this->vq->find(“div$class=\”nvai\””)->find(“a”);这样使用返回的结果是:找到所有class=nvai的div中的a标签

attr() :attr()方法适用于匹配属性的参数,例如我要找文中所有的herf,那么我们可以这样使用:attr(“herf”);返回结果会得到herf后面的地址参数,其他属性值的获取方式雷同,加上链式使用规则您可以这样使用函数:$vq=$this->vq->find(“a”)->attr(“herf”);

html():html()方法适用于获取网页上面制定标签之间的文本类容,这个方法获取的是最原始的内容,不经过任何处理,所以可能包含其他标签或者字符,这个方法可以根据你自己的需求适用,适用方法跟jquery里面的一样,此方法不需要传递参数:$vq=$this->vq->find(“a”)->html();

text():text()方法适用范围跟html()方法一样,但是唯一的区别就是test()方法是经过过滤处理了的,也就是说通过test()方法得到的就是纯文本了,里面不会包含任何标签。这个针对抓取网页文本非常有效,使用方法和html()一样,也不需要传参:$vq=$this->vq->find(“a”)->test();

getHtmlContent ():getHtmlContent()方法适用于查看抓取目标网页的源代码。供开发者查看网页特征,本方法可分为传参和不传参,当有参数传递时,则返回目标网站的源码,开发者可以对返回值进行保存等处理,传参格式:getHtmlContent(true);当不传参数的时候,则系统默认格式化打印网页源码:使用格式$vq=$this->vq->getHtmlContent();

deal():deal()方法是对前面的方法进行结果整理,将返回的多维数组整理成二维数组,方便数据的取用。不需要传递参数,一般使用方法如下:$vq=$this->vq->find(“a”)->deal();

方法介绍就大致入上文所述,Vquery类经过我们一段时间的测试,进本可以涵盖主流抓取网页的需求,当然肯定还有需要完善的地方,所以我们把这个文件发出来,希望更多的大神能使用,把不足的地方告知我们,相信在大家的智慧下,能让以后php抓取网页变的简易化。提高开发效率。

Vquery PHP 简单爬虫类的更多相关文章

  1. [Java]使用HttpClient实现一个简单爬虫,抓取煎蛋妹子图

    第一篇文章,就从一个简单爬虫开始吧. 这只虫子的功能很简单,抓取到”煎蛋网xxoo”网页(http://jandan.net/ooxx/page-1537),解析出其中的妹子图,保存至本地. 先放结果 ...

  2. 简单爬虫,突破IP访问限制和复杂验证码,小总结

    简单爬虫,突破复杂验证码和IP访问限制 文章地址:http://www.cnblogs.com/likeli/p/4730709.html   好吧,看题目就知道我是要写一个爬虫,这个爬虫的目标网站有 ...

  3. Python开发简单爬虫(一)

    一 .简单爬虫架构: 爬虫调度端:启动爬虫,停止爬虫,监视爬虫运行情况 URL管理器:对将要爬取的和已经爬取过的URL进行管理:可取出带爬取的URL,将其传送给“网页下载器” 网页下载器:将URL指定 ...

  4. scrapy爬虫学习系列二:scrapy简单爬虫样例学习

    系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备:      http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...

  5. SOCKET简单爬虫实现代码和使用方法

    抓取一个网页内容非常容易,常见的方式有curl.file_get_contents.socket以及文件操作函数file.fopen等. 下面使用SOCKET下的fsockopen()函数访问Web服 ...

  6. python简单爬虫一

    简单的说,爬虫的意思就是根据url访问请求,然后对返回的数据进行提取,获取对自己有用的信息.然后我们可以将这些有用的信息保存到数据库或者保存到文件中.如果我们手工一个一个访问提取非常慢,所以我们需要编 ...

  7. Jsoup-解析HTML工具(简单爬虫工具)

    Jsoup-解析HTML工具(简单爬虫工具) 一.简介 ​ jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS ...

  8. Python简单爬虫入门三

    我们继续研究BeautifulSoup分类打印输出 Python简单爬虫入门一 Python简单爬虫入门二 前两部主要讲述我们如何用BeautifulSoup怎去抓取网页信息以及获取相应的图片标题等信 ...

  9. Python简单爬虫入门二

    接着上一次爬虫我们继续研究BeautifulSoup Python简单爬虫入门一 上一次我们爬虫我们已经成功的爬下了网页的源代码,那么这一次我们将继续来写怎么抓去具体想要的元素 首先回顾以下我们Bea ...

随机推荐

  1. WebService学习总结(转)

    原文地址: WebService学习总结(一)——WebService的相关概念 WebService学习总结(二)——WebService相关概念介绍 WebService学习总结(三)——使用JD ...

  2. 78. Subsets 90. Subsets II

    1. Given a set of distinct integers, nums, return all possible subsets. Note: Elements in a subset m ...

  3. 折叠菜单slideUp

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. (C#基础) ref 和out练习

    对于C#中这两个关键字的用法,常常混淆,有点不清楚,今天又一次看到.遂把它们都记录下来,希望能有所用.这些都是他人写的,我只是搬过来一次,加深印象. 代码 using System; using Sy ...

  5. delphi image控件上画矩形的问题

    画的时候发现鼠标点的位置和矩形的位置有偏移 后来查看发现是由于image控件时stretch属性设置为true,这样在画的时候是缩放了的 也就是画到image显示的图片上去了 所以如果要画矩形,要按照 ...

  6. python 安装包查看

    pip freeze可以查看已经安装的python软件包和版本 pip list 也可以

  7. js常用用途

     页面元素查找 查找元素方法表达式                                                 返回值                            依据元 ...

  8. 团队作业之现场UML设计

    项目UML设计(团队) 团队信息 团队名:第三视角 各成员学号及姓名 姓名 学号 博客链接 张扬(组长) 031602345 http://www.cnblogs.com/sxZhangYang/p/ ...

  9. apache2.4搭建php5.53问题总结

    1.如果Apache handler方式配置php,则最好选择Thread Safe,否则找不到php5apache2_4.dll.如果选择VC6版本以上的php,请到这里http://www.apa ...

  10. 打开WORD文档出错提示

    打开WORD文档出错提示: Microsoft Office Word 遇到问题需要关闭.我们对此引起的不便表示抱歉. 您正在处理的信息有可能丢失.Microsoft Office Word 可以尝试 ...