资讯专栏INFORMATION COLUMN

PHP使用QueryList采集微信文章页

AdolphLWQ / 534人阅读

摘要:采集目标微信文章页标题内容发布时间作者等信息。安装微信采集代码采集规则可以很轻松的就写出采集代码出来,来看看运行结果和预期一样正确采集到了内容,但是内容乱码了。

采集目标

微信文章页标题、内容、发布时间、作者等信息。

采集示例URL
https://mp.weixin.qq.com/s?src=11×tamp=1523173327&ver=803&signature=6PCxJ*3ojH2ZM8pm56Lquward0mQMwSkPnqCvYlrDkQmL2kAEjGcFJMj2lzvpHyuyT30lczb2Ld0npUWmp*2Gj7bPJY3SCWrpRKlXJA0p4eQWPpAzMPJVmxPcRV5TtLS&new=1
采集内容区图例

分析内容选择器

利用浏览器开发者工具来分析待采集的区域选择器,这里不做详细讲解,如有不明白请自行了解jQuery选择器和CSS选择器相关知识,如图:

分析结果:

标题选择器为:.rich_media_title

发布时间选择器为: #post-date

作者选择器为:#meta_content>.rich_media_meta:eq(2)

内容选择器为:.rich_media_content

选择器写法并不是唯一的,只要能选择到内容选择器随便怎么写都可以。

代码

选择器分析出来后代码就很容易实现了。

安装QueryList
composer require jaeger/querylist
微信采集代码
 [".rich_media_title","text"],
    "date" => ["#post-date","text"],
    "author" => ["#meta_content>.rich_media_meta:eq(2)","text"],
    "content" => [".rich_media_content","html"]
];

$data = QueryList::get($url)->rules($rules)->query()->getData();

print_r($data->all());

可以很轻松的就写出采集代码出来,来看看运行结果:

Array
(
    [0] => Array
        (
            [title] => “贸易战”战火尚未燃起,特朗普已被各大媒体炮轰丨外媒说
            [date] => 2018-04-08
            [author] => 双语君
            [content] => 


自特朗普挑起“贸易战”以来,一把利剑就悬在全球市场的头上。


中美两国公布的征税商品规模越变越大,股市震荡,世界经济的不确定性与日俱增。


...... )

和预期一样正确采集到了内容,但是内容乱码了。

解决乱码

解决乱码的方法有很多,QueryList内置的解决方案是使用encoding()removeHead()这个方法,但经过尝试发现目前的场景都没有效果,所以我使用了另一种方法来解决微信乱码问题,修改后的代码如下:

 [".rich_media_title","text"],
    "date" => ["#post-date","text"],
    "author" => ["#meta_content>.rich_media_meta:eq(2)","text"],
    "content" => [".rich_media_content","html"]
];

$html = GHttp::get($url);
// 直接匹配出body中的内容
preg_match("/]+>(.+)s+/s",$html,$arr);
$html = $arr[0];

$data = QueryList::html($html)->rules($rules)->query()->getData();

print_r($data->all());

运行结果:

Array
(
    [0] => Array
        (
            [title] => “贸易战”战火尚未燃起,特朗普已被各大媒体炮轰丨外媒说
            [date] => 2018-04-08
            [author] => 双语君
            [content] => 


自特朗普挑起“贸易战”以来,一把利剑就悬在全球市场的头上。


中美两国公布的征税商品规模越变越大,股市震荡,世界经济的不确定性与日俱增。


.... )
原文:http://study.querylist.cc/arc...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28557.html

相关文章

  • QueryList 4.0 简洁、优雅、可扩展的PHP采集工具(爬虫)

    QueryList 简介 QueryList是一套简洁、优雅、可扩展的PHP采集工具(爬虫),基于phpQuery。 特性 拥有与jQuery完全相同的CSS3 DOM选择器 拥有与jQuery完全相同的DOM操作API 拥有通用的列表采集方案 拥有强大的HTTP请求套件,轻松实现如:模拟登陆、伪造浏览器、HTTP代理等意复杂的网络请求 拥有乱码解决方案 拥有强大的内容过滤功能,可使用jQue...

    Astrian 评论0 收藏0
  • php使用QueryList轻松采集JavaScript动态渲染

    摘要:使用的方式来做采集,拥有丰富的插件。下面来演示使用插件抓取动态创建的页面内容。插件使用浏览器打开连接使用以采集今日头条手机版为例,今日头条手机版基于框架,内容是纯动态渲染出来的。 QueryList使用jQuery的方式来做采集,拥有丰富的插件。 下面来演示QueryList使用PhantomJS插件抓取JS动态创建的页面内容。 安装 使用Composer安装: 安装QueryList...

    Jason 评论0 收藏0
  • PHP使用QueryList轻松实现一个百度网盘资源搜索引擎

    摘要:使用的方式来做采集,拥有丰富的插件。下面来演示使用搜索引擎插件轻松实现站内搜索。 QueryList使用jQuery的方式来做采集,拥有丰富的插件。 下面来演示QueryList使用Baidu搜索引擎插件轻松实现站内搜索。 安装 使用Composer安装: 安装QueryList composer require jaeger/querylist GitHub: https://git...

    dantezhao 评论0 收藏0
  • 那些 PHP 开发者可能用得上的工具

    PHP 函数的 JavaScript 实现 module.exports = function array_sum (array) { // eslint-disable-line camelcase // discuss at: http://locutus.io/php/array_sum/ // original by: Kevin van Zonneveld (http://kv...

    JowayYoung 评论0 收藏0
  • laravel package收集

    摘要:查找保存下载用搭建自己的缓存仓库权限管理的好选择基于封装的后台管理系统,支持手机和端访问支付宝风格的验证器后台系统微信接口的部署脚本开发的博客系统百度推送自动记录用户行为扩展一个项目管理系统根据生成对应导航的状态 1.debug https://github.com/barryvdh/l... showImg(https://segmentfault.com/img/bVmhWL); ...

    psychola 评论0 收藏0

发表评论

0条评论

AdolphLWQ

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<