为了账号安全,请及时绑定邮箱和手机立即绑定

关于node爬虫的问题

关于node爬虫的问题

眼眸繁星 2018-10-05 18:19:08
关于爬虫的若干问题最近想利用爬虫去获取较为大量的数据,但是在爬的过程中遇到了若干问题,所以来和各位大神讨教一下,如能解答,感激不尽。1. 对于网页链接数量较多的时候,用什么方式去爬能提升效率?我现在是将所有的子页链接存到一个数组里面,在对数组链接map操作,然后去获取每一页的数据。但是我现在所爬到的子页链接有上万个,爬取这些链接需要很长的时间,获取链接之后的请求页面获取数据也要很久的时间。所以我想知道,有没有更好的方式能够提高爬虫的效率的。2. 获取数据和存储数据应该怎么处理我在请求子页面获取数据之后,会将数据存储到mongodb里面,但是事实证明,这种写法让我的爬虫存储效率低下,而且经常出现堆栈溢出的情况。所以我想了解一下大神们获取到数据之后是怎么存储数据的,我听过读写分离,但是不知道这具体是怎样的一个概念,有大神讲解下么~3. 对于爬到错误数据的处理有些时候,所爬到页面的数据,是不符合存储标准的,但是我不知道这部分的数据是应该放过,还是重新请求页面重新获取一次。我现在是如果请求到的数据不合格,就会换个ip重新请求页面,知道数据符合为止。但是这样很有可能造成死循环,所以想知道大神们对这种状况的处理方式。4. 用mongo存储数据的问题从昨晚到今天,总共有将近7w个子链接,但是我的mongodb里只多了5k条数据。所以我想了解一下,关于mongodb,有没有什么可参考数据之类的,可以让我了解一下它的真实性能。顺便如果有大神肯分享一些mongo使用技巧和心得的话,那就更感谢了。。。小菜鸟新入门,如果有犯低级错误的地方,欢迎各位大神指正。
查看完整描述

2 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

  1. 对于网页链接数量较多的时候,用什么方式去爬能提升效率?

没有办法,网络和带宽限制

  1. 获取数据和存储数据应该怎么处理

正常使用非内存型数据库存放即可,如上面答主所说,瓶颈不会在数据库。因为网络和带宽限制,写入量极其小。猜测你所说的堆栈溢出问题是因为遍历全表使用callback导致。对mongodb不熟,建议使用mysql

  1. 对于爬到错误数据的处理

如你所说,你应该分析并创建相应的处理规则。符合规则的进行重试,比如有些网页频繁请求会限制ip等等,这些需要你重新请求,但是要设定次数,比如重试两次。。除此之外所有异常,比如404等等,不去理会,继续下一个任务

  1. 用mongodb存储数据的问题

还是上面的结果,一个爬虫远远达不到数据库的性能上限。你只需要关注你写的程序,有没有遍历全表的操作即可。

曾经用mysql存了130G的MD5数据,大概10亿条,查询响应还是和普通的查询差不多。由此可见,只要是正确的查询姿势,没有复杂的联合查询,一般不会触及到性能上限


查看完整回答
反对 回复 2018-10-14
  • 2 回答
  • 0 关注
  • 952 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信