php专区

 首页 > php专区 > PHP应用 > 常用功能 > php采集插件querylist入门之采集微信文章页安装QueryList微信采集代码解决乱码运行结果:

php采集插件querylist入门之采集微信文章页安装QueryList微信采集代码解决乱码运行结果:

分享到:
【字体:
导读:
         [导读] 采集目标 微信文章页标题、内容、发布时间、作者等信息。 采集示例URL https://mp.weixin.qq.com/s?src=11timestamp=1523173327ver=803signature=6PCxJ*3ojH2ZM8pm56Lquward0mQMwSkPnqCvYlrDkQmL2kAEjGcFJMj2lzvpHyuyT30lczb2L...

采集目标

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

采集示例URL

 
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

微信采集代码

$url = 'https://mp.weixin.qq.com/s?src=11×tamp=1523173327& 

ver=803&signature=6PCxJ*3ojH2ZM8pm56Lquward0mQMwSkPnqCvYlrDkQmL2kAEjGcFJMj2lzvpHyuyT30lczb2Ld0npUWmp*

2Gj7bPJY3SCWrpRKlXJA0p4eQWPpAzMPJVmxPcRV5TtLS&new=1';

// 采集规则$rules = ['title' => ['.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] =>


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


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


....)


分享到:
php使用QueryList入门之轻松采集JavaScri...
下面来演示QueryList使用PhantomJS插件抓取JS动态创建的页面内容。 安装 使用Composer安装: 安装QueryList composer require jaeger/querylist GitHub: https://github.com/jae-jae/QueryList 安装PhantomJS插件 composer require jaeger/querylist-phantomjs GitHub: https://github.com/jae-jae/QueryList-...
php中9大缓存技术总结1、全页面静态化缓...
今天带来php中9大缓存技术总结,现在服务端优化层出不穷,但是不外乎就是以下几大缓存技术。 站长收集起来也是方便大家查阅。 1、全页面静态化缓存     也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解析的流程。此种方式,在CMS系统中比较常见,比如dedecms;     一种比...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……