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

php 采集不到内容_Thinkphp5与QueryList 也可以实现采集(爬虫)页面功能

时间:2021-01-24 00:48:45

相关推荐

php 采集不到内容_Thinkphp5与QueryList 也可以实现采集(爬虫)页面功能

QueryList 是什么

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 QLQueryList; 接下来就在控制器里编写代码了,以下是一个实例

//需要采集的目标页面$page = '/news/566.html';//采集规则$reg = array(//采集文章标题'title' => array('h1','text'),//采集文章发布日期,这里用到了QueryList的过滤功能,过滤掉span标签和a标签'date' => array('.pt_info','text','-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类。

以上是一个简单的例子,已经实现了采集网页数据,更多详细语法与实例可以移步到官网文档,细细查看

QueryList参考文档:/

以上内容希望帮助到大家,以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要请戳这里或者请关注我的个人主页以及知乎专栏
PHP7进阶架构师​

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