【爬虫问题】论爬取结果的不完整性



  • 运行v3.js, v4.js后,发现结果并不满523个目标医院。

    v3的结果为492/503|523, v4的spiderSuccessIndex更小, 那么无法返回请求数据的原因都有哪些?

    例如,当spiderIndex正指向某家医院,而request时出现error,那下一次再调用query(next)则直接请求下一家医院的数据,这一家的数据就算没有爬成功。如果request时频繁报错,那不就会遗失很多需要的数据吗?

    如果需要全部的数据怎么办?


  • cid:81:privileges:find

    爬虫结果不足的原因会有不少
    最常见的是 高德地图搜不到这个医院
    也有返回的问题等


  • 太阁x英雄榜

    你好,感谢您的提问!

    针对第一个问题:无法返回请求数据的原因都有哪些?

    请参见一楼周老师的回答。

    针对第二个问题:如果request时频繁报错,那不就会遗失很多需要的数据吗?

    如果request返回error的话可以具体debug下看看能不能再代码中解决这个问题,比如看看是不是医院名字不正确/不完整,或者可以尝试换个地图查询。
    爬取数据时遇到数据遗漏是正常的现象,针对可重新获取的数据,如果代价处于allow的范围内,建议在本地代码做一定调整,以提高数据完整度。针对无法获取的数据,可以在随后的数据预处理中进行填补处理等。

    针对第三个问题:如果需要全部的数据怎么办?

    同上,建议进行Debug找到具体原因后,针对可以解决的case进行代码修正。

    造成数据缺失的原因是多方面的,主要分为以下几种:

    1)有些信息暂时无法获取。
    2)有些信息是被遗漏的。
    3)有些对象的某个或某些属性是不可用的。也就是说,对于这个对象来说,该属性值是不存在的。
    4)有些信息(被认为)是不重要的。
    5)获取这些信息的代价太大。

    针对数据缺失的问题,可以在数据预处理的步骤进行一定的修正,详情可见:http://www.ppvke.com/Blog/archives/36612



  • 好的~谢谢老师和TA的回答!



  • @周_宁奕 如果keyword的索引改成spiderSuccessIndex是不是就能保证爬成功当前请求才能继续下一个,但是会出现一旦出错代码就卡住的问题?


 

与 BitTiger Community 的连接断开,我们正在尝试重连,请耐心等待