3213?1442652660

【任务】 适应论坛模式的爬虫 正常


LiZX添加于 2015-04-13 12:42
爬虫目前的爬取策略(以csdn为例): 首先将大任务分解为子任务: 一次子任务,在爬列表页时为3页,爬详细页的时候为10页; 使用3个线程请求,线程请求一次,休息1秒;完成一次子任务 ,睡眠5秒。 转换为增量爬取时:大任务设定为反复请求前50页,大任务完成,睡眠20000秒。 以上参数因站点而异,在程序开始运行时设置,运行期间没有改变。 改进策略: 1.随机化: ①.设置一个User Agent集合,每次发出请求时都随机的从集合中选取一个 ②.每次发出请求的时间间隔也是随机设置 ③.每次子任务的睡眠时间也可以随机设置。 2.降低爬取速率 ①.每次发出请求的时间间隔和批量处理每次迭代的时间间隔设置一个下限, ②.实际观察站点的更新频率来设置增量的间隔,达到这样的目标:在站点下次更新前,上一次更新的全部网页能够爬取完即可,不用太快,这样之前用来睡眠的时间可以用来降低访问频率。
回复(6)
  • 3213?1442652660
    LiZX 9年前

    主题新增爬取网站的前期观察及测试 变更为 适应论坛模式的爬虫

    刚才用iteye论坛的两个版块 和 51cto的博客站点进行测试,爬虫都能正常爬取。 下午我再部署到服务器上,在测试数据库中多用几个论坛模式的站点和普通模式的站点进行长时间测试,看看还有什么问题

  • 3213?1442652660
    LiZX 9年前

    主题51cto_blog测试 变更为 新增爬取网站的前期观察及测试

    已经写好爬取配置文件的网站: ①51CTO_blog ②iteye_blog ③codeproject 以上网站在我电脑上测试是可以进行爬取的。 其它目前不适合爬取的网站: ①lupaworld:配置文件已经写好了,但是出现了上次报告中的问题。 ②linuxtone:是个论坛,内容是分模块的,没有分页,不适合咱们的爬虫。 ③phpChina:同上。 ④softpedia:软件板块初步看起来是分类型和系统的,选择好条件后,里面的东西是分页的;新闻版块是在一个页面可以一直往下拉,没有分页。 ⑤apache:项目是以一定顺序列出来的,所有项目都在一个页面,其页面url不符合咱们爬虫“前缀+数字+后缀”的规则。 另外两个站点Javaforge和GNA访问的时候太卡了,页面半天显示不出来,或者显示不完整,所以还没来得及看。 明天我会和抽取上述站点的负责人进行交流,看看是否有其它我没发现的可以爬取的入口。 另外三个可以爬取的站点列表页都只有20~30页,内容不是很多,可以等着和其他网站一起上线。

  • 3213?1442652660
    LiZX 9年前

    主题爬取策略 变更为 51cto_blog测试

    51cto_blog测试结果: 列表页爬虫完成了一次镜像爬取(30个列表页)和一次增量爬取(16个列表页) :15:58:06~16:11:21 耗时795秒,平均每条耗时17.3秒; 详细页爬虫共爬取了662页:15:58:18~19:53:09 耗时14091秒(中间随机休息了一次1838秒),平均每条耗时21.3秒 另:在写lupaworld对应的爬虫配置文件时发现了一个问题:html元素的一些属性值不固定,这对在列表页中抽取详细页url有影响。目前正在定位是其网站的原因,还是我们程序中设置动态User Agent,导致对方服务器根据不同UA返回不同的页面内容。

  • 3213?1442652660
    LiZX 9年前

    1.王老师说的间歇性的随机休息是可以设置的 2.这个数据是我在本机搭建了个很简单的网站,让爬虫爬取了一段时间,算的平均值。目前已经部署到服务器对51cto的博客进行测试。 3.这个问题我刚才也意识到了,列表页是不断更新的,里面的数据具有流动性,爬的太慢会有问题。 以上问题我明天会落实到代码中。

  • 11?1648889181
    王涛 9年前

    > starlee 写到: > 爬取策略已实现: > > 镜像爬取时:20秒~30秒发起一次请求,User Agent随机产生,请求时间间隔在该区间内随机产生; 镜像爬取同一个IP总是每20-30秒发送一次请求是否归于规律导致容易被人识别出来?中间是否可以增加随机随机时间的休眠,比如每爬1、2个小时(这一两个小时内的请求通过随机的10-20秒发一次请求)就随机休眠30分钟到2个小时? > 转换为增量爬取后:爬列表页时,每天扫描一次,扫描的范围需要人为的根据站点的更新频率来指定,爬虫把需要爬取的列表页平均到一天之内完成:比如一天要扫描前24页,就需要一个小时爬取一个,但是考虑到其他的消耗,为了保证能在一天之内完成任务,所以就设置在0.5小时~0.8小时之间随机产生一个时间值来爬取一个列表页; > 经本地测试:列表页 25.2秒爬一个;详细页30.6秒爬一个。 这个数据时如何算出来的? > 稍候我会部署到服务器上,找一个网站,在实际网络中测试一下上述参数有何变化。 > > 下一步: > 增量爬取后,如果详细页的爬取量也赶上来了,此时不再让其20秒~30秒爬一次,设置成和列表页一样,每天平均完成一定量的任务。 增量爬取的量比较少,列表页的爬取集中在一段时间内爬取完即可,即使爬60页,一分钟爬一页速度已经够慢了,一个小时也能做完,没必要分布到一整天来做。同时,爬完列表页后后续的详情页面的爬取同样要访问同一个网站,因此只要根据列表页和详情页的总量采用同一个策略合理安排、降低爬取频率即可,不用将列表页和详情页的爬取区分开分别设计策略来做

  • 3213?1442652660
    LiZX 9年前

    爬取策略已实现: 镜像爬取时:20秒~30秒发起一次请求,User Agent随机产生,请求时间间隔在该区间内随机产生; 转换为增量爬取后:爬列表页时,每天扫描一次,扫描的范围需要人为的根据站点的更新频率来指定,爬虫把需要爬取的列表页平均到一天之内完成:比如一天要扫描前24页,就需要一个小时爬取一个,但是考虑到其他的消耗,为了保证能在一天之内完成任务,所以就设置在0.5小时~0.8小时之间随机产生一个时间值来爬取一个列表页; 经本地测试:列表页 25.2秒爬一个;详细页30.6秒爬一个。 稍候我会部署到服务器上,找一个网站,在实际网络中测试一下上述参数有何变化。 下一步: 增量爬取后,如果详细页的爬取量也赶上来了,此时不再让其20秒~30秒爬一次,设置成和列表页一样,每天平均完成一定量的任务。

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

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

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

加入QQ群

关注微信APP


×