3213?1442652660

【任务】 单机爬虫更新 正常


LiZX添加于 2015-08-17 11:53

本次更新针对增量模式;目标是提高数据实时性;途径是周期性地重爬列表页首页,通过局部url去重来确定新产生的详细页url,然后进行最后的抓取。


目前涉及到的更改有:

1.列表页爬取、详细页url抽取、详细页爬取三个模块合到一起,周期性地流水运行整个过程。

2.列表页内容和详细页url不再持久化,只把最后详细页的页面内容存储到数据库中

3.更加细粒度的利用Webmagic的组件,之前列表页和详细页的爬取对webmagic的调用太臃肿了,其实主要是利用了其下载功能。

上述更改已经简单实现。


接下来的工作:

1.把参数随机化和爬取速率控制纳入到新的设计中。

2.迭代周期的计算模型:即每隔多长时间去重爬首页。

3.其他一些细节部分

回复(7)
  • 11?1648889181
    王涛 9年前

    问题是有新的帖子增加后对应的列表页面会变化啊,比如你原来爬到第10页,新增了200个帖子,你后续爬的应该就不是第11页开始了

  • 3213?1442652660
    LiZX 9年前

    镜像爬取历史数据的时候:从配置文件中读取列表页的范围之后(startIndex,endIndex),就用for循环持续抓取。没有别的操作,就是爬下来。后续的抽取部分会和和数据库比较,如果这个页面变化了,就存,把之前的设置为历史

  • 11?1648889181
    王涛 9年前

    > wangtao 写到: > 1. 对于增量爬取这样合并没有问题,但是后续我们还会不断增加新的知识分享站点。拿StackOverflow来说,假定一次爬取10个列表页,然后解析有500个详情页,然后爬取500个详情页。完成之后再进入下一轮爬新的列表页。在爬500个详情页的时候StackOverflow又新增了1000个帖子,对应的列表页发生了变化。这时如何确定第二轮列表页爬取的位置,保证不会遗漏或者重复? 现在的历史数据爬取策略是如何解决这个问题?

  • 3213?1442652660
    LiZX 9年前

    1,同时爬的想法:镜像爬的时候,如果数据量很大,耗费的时间较长,就可能会丢失许多更新的页面。当爬新站点的时候,同时开启两种爬取,实时更新和历史数据都会被抓取; 2,进行局部去重是为了避免短时间内重复抓取同一个页面造成白白浪费ip访问,降低被封ip的几率。王老师所说的情况是涉及到页面更新了,这样的页面,目前的爬虫也是会直接爬下来,因为后面的t_knowlege几个模块会进行去重更新。全局的url去重和有机制的页面更新,咱们的系统好像还没有搞过。

  • 11?1648889181
    王涛 9年前

    1。 “镜像爬取的同时也增量爬”是怎么设计的? 2。局部去重会有效吗?你第1次爬的某个页面在第10次爬的时候由于某个属性进行了修改因此又出现在了列表页首页,仅与上次爬的进行对比如何判断是重复还是更新?

  • 3213?1442652660
    LiZX 9年前

    1,本次更新是针对增量模式下的,对于新的站点我们可以用之前的爬虫爬;或者用目前正在考虑的一种设计:镜像爬取的同时也增量爬。 2,因为只是盯着列表页的第一页看,所以只进行局部去重(与上一次爬的的进行对比)即可知道是否重复或者更新

  • 11?1648889181
    王涛 9年前

    1. 对于增量爬取这样合并没有问题,但是后续我们还会不断增加新的知识分享站点。拿StackOverflow来说,假定一次爬取10个列表页,然后解析有500个详情页,然后爬取500个详情页。完成之后再进入下一轮爬新的列表页。在爬500个详情页的时候StackOverflow又新增了1000个帖子,对应的列表页发生了变化。这时如何确定第二轮列表页爬取的位置,保证不会遗漏或者重复? 2.详情页url不持久化如何判断后面爬取一个页面是否与前面的重复或者有更新?

0?1470885445
登录后可添加回复
  • 当前状态 新增
  • 选定优先级 正常
  • 指派给 LiZX
  • 里程碑 --
  • 开始日期 2015-08-17
  • 结束日期
  • 预计工时(H) 0.00 小时
  • 完成度 0%
  • 关联Commit

© Copyright 2007~2021 国防科技大学Trustie团队 & IntelliDE 湘ICP备 17009477号

问题和建议
还能输入50个字符 提交

加入QQ群

关注微信APP


×