您好,欢迎访问一九零五行业门户网

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 ql\querylist; 接下来就在控制器里编写代码了,以下是一个实例
//需要采集的目标页面$page = 'http://cms.querylist.cc/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 = 'http://cms.querylist.cc'.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教程!
以上就是thinkphp5与querylist实现采集页面功能(爬虫)的详细内容。
其它类似信息

推荐信息