jae-jae / QueryList

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

不清楚为什么,采集到的元素,开头都被加了一个貌似空格的字符 #97

Closed aboutboy closed 3 years ago

aboutboy commented 4 years ago

"title" => " 想念的星星不说话",比如这里,标题被加了一个空格。这个空格很奇怪,我用trim居然不能去除,只能复制后用str_replace。 增:也可以用$x['title'] = ltrim($v['title'][0],' ');这种方式去除这个字符。 这个符号我复制到notepad++里面,也搞不清具体是什么符号? 但实际上网页源码中被采集元素的开头是不带空格的。。 原文是这样:class="tooltip">想念的星星不说话 我的laravel版本是:5.8

ThisBug commented 4 years ago

用ord()查看一下ascll码

aboutboy commented 4 years ago

用ord()查看一下ascll码

ord()后是194

感觉可能是removeHead()导致的问题。。。

aboutboy commented 4 years ago

应该不是removeHead()导致的问题。不过我之前确实遇到不添加removeHead()和添加removeHead()会获取两个完全不一样的数据的情况(也就是说两个html的内容完全不一样,似乎变成了两个不同地址页面的数据)。

我试过,removeHead()后dump打印的数据中,是不包含那个特殊空格的。 因为页面是table,tr,td结构的,所以我下一步采用了: $title = $data->find('table:eq(2)')->find('tr:gt(0)')->map(function($row){ $row1['author'] = $row->find('td:eq(1)')->texts()->all(); $row1['title'] = $row->find('td:eq(2)')->texts()->all(); return $row1; }); 这样的方法。。这样获取到的结果再dump出来,就带了那个特殊空格。 不知道是为什么。