jae-jae / QueryList

:spider: The progressive PHP crawler framework! 优雅的渐进式PHP采集框架。
https://querylist.cc
2.65k stars 441 forks source link

使用encoding('UTF-8')后,无法获取rules后的内容 #84

Closed jeeinn closed 5 years ago

jeeinn commented 5 years ago
$url = 'http://2345.com';
//采集规则
$rules = [
    'title' => ["title", "text"],
];
$formattedInfo = QueryList::get($url)
                     ->encoding('UTF-8')
                     ->rules($rules)
                     ->queryData(); // 没有输出任何内容
// 使用 getHtml() 可以输出正常转码后的网页,但是转码后无法使用 rules + queryData 获取内容
// $formattedInfo = QueryList::get($url)->rules($rules)->queryData();    //正常,但乱码

环境 php7.3.4 + queryList 4.1

看到网友也有同样的问题:https://segmentfault.com/q/1010000019803091

希望能解决下,Thx

jae-jae commented 5 years ago

这种情况一般是网页结构不规范引起的,可以尝试以下解决方法:

  1. 采集到内容后,手动对采集到的结果进行转码
  2. 自己手动获取到HTML源码后,然后对源码进行转码,然后再讲源码传给QueryList来抽取内容
  3. 尝试调用removeHead()方法
jeeinn commented 5 years ago

好的,已自行实现转码。感谢!