1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Thinkphp5与QueryList实现采集页面功能(爬虫)

Thinkphp5与QueryList实现采集页面功能(爬虫)

时间:2024-05-06 07:49:42

相关推荐

Thinkphp5与QueryList实现采集页面功能(爬虫)

php框架|ThinkPHP

Thinkphp5,QueryList

php框架-ThinkPHP

ip探测源码,vscode在终端中打开,ubuntu 终止拷贝,远程重启tomcat漏洞,庭院杀爬虫,php生成二维数组,seo公司推荐推广平台,绿色大气5.7织梦网站模版,joomla商城模板lzw

单页团购源码,vscode图标css坏掉,ubuntu替换源,tomcat启动瞬间停止,爬虫AOP,php 价格计算,seo快排软件快照,公司网站源码手机,discuz二次元手机模板lzw

QueryList 是什么?

asp实例源码,ubuntu保存中断输出,tomcat7有漏洞么,爬虫许可证,php数据库查看留言,荆州seo厂家lzw

QueryList是一套用于内容采集的PHP工具,它使用更加现代化的开发思想,语法简洁、优雅,可扩展性强。相比传统的使用晦涩的正则表达式来做采集,QueryList使用了更加强大而优雅的CSS选择器来做采集,大大降低了PHP做采集的门槛,同时也让采集代码易读易维护,让你从此告别晦涩难懂且不易维护的正则表达式。

QueryList 提供的一整套内容采集解决方案

● DOM内容选择:CSS选择器

● HTTP客户端:GuzzleHTTP

● 内容过滤:CSS选择器

● 解决乱码:内置多套乱码解决方案

● 额外功能:丰富的扩展插件

前提

项目主要用thinkphp5框架,主要会用到`QueryList.php`和`phpQuery.php`这两个文件。我们可以切换到项目目录,extend里新建QL,然后在QL目录执行composer命令安装QueryList:

composer require jaeger/querylist

然后在需要使用的控制器中加入 use QL\QueryList; 接下来就在控制器里编写代码了,以下是一个实例

//需要采集的目标页面$page = /news/566.html;//采集规则$reg = array( //采集文章标题 itle => array(h1, ext), //采集文章发布日期,这里用到了QueryList的过滤功能,过滤掉span标签和a标签 date => array(.pt_info, ext,-span -a,function($content){ //用回调函数进一步过滤出日期 $arr = explode( ,$content); return $arr[0]; }), //采集文章正文内容,利用过滤功能去掉文章中的超链接,但保留超链接的文字,并去掉版权、JS代码等无用信息 content => array(.post_content,html,a -.content_copyright -script,function($content){ //利用回调函数下载文章中的图片并替换图片路径为本地路径 //使用本例请确保当前目录下有image文件夹,并有写入权限 //由于QueryList是基于phpQuery的,所以可以随时随地使用phpQuery,当然在这里也可以使用正则或者其它方式达到同样的目的 $doc=\phpQuery::newDocumentHTML($content); $imgs = pq($doc)->find(img); foreach ($imgs as $img) { $src = \.pq($img)->attr(src); $localSrc = md5($src)..jpg; $stream = file_get_contents($src); file_put_contents($localSrc,$stream); pq($img)->attr(src,$localSrc); } return $doc->htmlOuter(); }));$rang = .content;$ql = QueryList::Query($page,$reg,$rang);$data = $ql->getData();//打印结果print_r($data);

注意:

在使用phpQuery类时需要在前面加上\,因为phpQuery.php中没有使用命名空间,因为使用命名空间后,QueryList.php无法使用phpQuery类。

更多相关ThinkPHP知识,请访问ThinkPHP教学!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。