欢迎来到[自学php网] ①群 AG亚游集团

AG亚游集团 > php专栏 > php综合实列 >

php采集插件querylist入门之采集微信文章页

来源:未知 ?? 时间:2018-07-23 14:03?作者:小飞侠

[导读] 采集目标 微信文章页标题、内容、发布时间、作者等信息。 采集示例URL /mpaff4weixinaff4qqaff4com/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

微信采集代码

<?phprequire 'vendor/autoload.php';use QL\QueryList;

$url = '/mpaff4weixinaff4qqaff4com/s?src=11&timestamp=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] => a??è′???????a?????????°???a???èμ·?????1???????·2è¢?????¤§?a???????è?°??¨?¤??a?èˉ′[date] => 2018-04-08[author] => ???èˉ-???[content] => <section class="xmteditor" style="display:none;" data-tools="??°?a??????????" data-label="powered by xmt.cn"></section><p style="white-space: normal;"><img class="" data-ratio="0.134375" data-s="300,640" data-src="/mmbizaff4qpicaff4cn/mmbiz_png/IqicDAGdXNibs5wrrbmbVJW8HZB9Qv5ajtuR4C4kIQI43GjtM0ZDsDWzFSCZ7UcthQ1bbPqBSENxEdvRyzzaBavg/640?wx_fmt=png" data-type="png" data-w="640" style="color: rgb(62, 62, 62);text-align: justify;line-height: 28.4444px;background-color: rgb(255, 255, 255);box-sizing: border-box !important;word-wrap: break-word !important;visibility: visible !important;width: auto !important;" width="auto"></p><p style="white-space: normal;"><br></p><p style="white-space: normal;"><span style="font-size: 15px;">è?a??1?????????èμ·a??è′???????a????¥??¥????????????????°±?????¨??¨????????o????¤′??????</span></p><p style="white-space: normal;"><br></p><p style="white-space: normal;"><span style="font-size: 15px;">??-?????¤????????????????¨???????è§??¨?è?????è???¤§???è?????é??è???????????????μ???????????????§?????¥??±?¢????</span></p><p style="white-space: normal;"><br></p>......)


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

解决乱码

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


<?phprequire 'vendor/autoload.php';use Jaeger\GHttp;use QL\QueryList;$url = '/mpaff4weixinaff4qqaff4com/s?src=11&timestamp=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']];$html = G:get($url);/直接匹配出body中的内容preg_match('/<body[^>]+>(.+)\s+<\/body>/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] => <section class="xmteditor" style="display:none;" data-tools="新媒体管家" data-label="powered by xmt.cn"></section><p style="white-space: normal;"><img class="" data-ratio="0.134375" data-s="300,640" data-src="/mmbizaff4qpicaff4cn/mmbiz_png/IqicDAGdXNibs5wrrbmbVJW8HZB9Qv5ajtuR4C4kIQI43GjtM0ZDsDWzFSCZ7UcthQ1bbPqBSENxEdvRyzzaBavg/640?wx_fmt=png" data-type="png" data-w="640" style="color: rgb(62, 62, 62);text-align: justify;line-height: 28.4444px;background-color: rgb(255, 255, 255);box-sizing: border-box !important;word-wrap: break-word !important;visibility: visible !important;width: auto !important;" width="auto"></p><p style="white-space: normal;"><br></p><p style="white-space: normal;"><span style="font-size: 15px;">自特朗普挑起“贸易战”以来,一把利剑就悬在全球市场的头上。</span></p><p style="white-space: normal;"><br></p><p style="white-space: normal;"><span style="font-size: 15px;">中美两国公布的征税商品规模越变越大,股市震荡,世界经济的不确定性与日俱增。</span></p><p style="white-space: normal;"><br></p>....)


最新文章

点击排行

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号@版权所有AG亚游集团

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

关小刀任九:热刺沙尔克做胆 红军主场谨防冷平 贵人资本梁渊:港股近期走势先升后随A股 留意绩优股 意甲-飞翼4连助 尤文遭倒钩1-1客平保级队领先4分 曝布冯将在本周四宣布退役 40岁的他服老了? 丈夫因妻子出轨愤恨难平 叫辆滴滴对司机割喉泄愤 特朗普前竞选经理出庭受审 面临18项财务欺诈指控 NBA有个奖项被詹姆斯承包!这片鱼塘他已7连庄 政协委员:未成年犯罪应立足教育矫治 不主张入刑 换口味?6帽饼皇开起火锅店 19+12吃饼也不落下 [新浪彩票]足彩18046期大势:大巴黎客胜稳胆 英媒:印度加强对朝鲜外交 欲积极参与半岛事务 半月谈:高校更名热度不减 不改就没有学生报名?
胡春华浙江调研:推进“放管服”改革 为企业减负 亚太股市早盘低迷 沪指下跌1% 初创企业Rocket Lab成功发射火箭 携三卫星进入… 2月27日四大证券报头版头条内容精华摘要 英国首相宣布驱逐23名俄外交官 限其一周内离境 英国财长哈蒙德:一个“软脱欧”旗手的烦恼 白宫发言人:美俄总统曾商讨可能会晤地点 含白宫 特斯拉:下周开启MODEL 3\"四驱版\"和\"性能… 潍坊杯-贡阿尔维斯凌空侧钩致胜球 一方0-1巴西体育 美民调:美国人对中国好感度53% 为近30年最高水平 奥巴马长女街头约会照曝光 男友是英国富二代(图) 广东终于赢了一次肯帝亚!阿联19分带队2分险胜
急于会晤中国高层却小动作频频 日本在拧巴什么? 网易财报:在线游戏服务收入87.61亿元 同比降18.… 留守儿童作文称一天只吃一餐饭 实际家庭条件较好 美欧贸易紧张形势缓解 但欧洲进口美大豆数量未定 韩媒:文在寅特使赴美通报访朝成果 或会晤特朗普 县官遭遇“桃色陷阱” 待女方怀孕后还出面铲事儿 日本国税厅长官拟辞职 被指就森友学园问题说谎 贝尔斯登垮台十周年:全球强化宏观审慎监管 查尔斯顿赛凯斯三盘过关 下轮战意大利小美女 手机可以做的打字兼职 月薪过万十大冷门职业 加盟什么店最赚钱 在中国发横财七大方法 AG亚游集团