好久没更了,今天记录下爬虫遇到问题解决办法的思想。
需求:
前两天需求根据关键字去某站搜索,最终获得条数。
第一次发现问题:
之前写过,都跑通了,但是最后发现结果不是特别的严谨,某狗网站会根据关键词分割搜索相应的内容,就导致了结果条数虚假。
第一次解决办法
当时发现问题之后,想了一个办法。匹配搜索字符串在当前页面出现的次数。
第二次发现问题
实时的过程中发现了一个问题,也跑通了,但是某狗的页面关键词被标点符号分割了,而且还被em标签独立出来(为了加突出样式)
这个问题想了好多种办法,我来一一描述,
1、对搜索字符串进行分割,取第一句,或者,最长的句子(考虑,搜索内容标点符合不确定性及长度不确定性就放弃)
2、替换掉结果页中em标签(但发现,某狗会自动转化英文符号,考虑不确定性因素太大,放弃)
3、后来果断啥也不替换直接,提取所有中文,这样就没了杂七杂八的问题,果然还是单纯的好骗。
preg = "/[x{4e00}-x{9fa5}]+/u"; //正则所有中文 preg_match_all($preg,$str,$matches); //结果页格式化 preg_match_all($preg,$txtjt,$matches_txtjt); //搜索关键词格式化 $geshi_str = implode($matches[0]); //拼接 $geshi_txtjt = implode($matches_txtjt[0]); //拼接 echo preg_match_all('/'.$geshi_txtjt.'/',$geshi_str,$match2); //获得匹配次数 var_dump($match2);
根据这个匹配次数的多少选择是否录用结果,提高了严谨性