整站URL抓取有什么高效的遍历方式?

由于需要做整站抓取,所以涉及到url遍历问题。目前我的做法是以网站首页作为入口——>抓取页面所有a标签收取有效URL并去重存入集合——>递归循环抓取集合中的URL并获取新的链接——>等待递归结束或者是抓取到之前设置的URL数量上限后停止。

现在的问题是我觉得这种方式效率低,但是是又想不到更高效的方式,所以来求指点

其次是抓取量比较大,一般每次会抓取几万至几千个网站,最多的时候有几十万。目前总的抓取流程为,web服务端查询数据库并将数据入redis,其次有10台服务器部署节点程序负责遍历网站URL及抓取网页源码,然后建立lucene索引。

不过几千个网站抓取后就能产生几千万个链接,即便每台节点服务器都开启一个索引库建立索引的速度依旧不理想。之前观察过的一次是晚上下班前有三千多万个链接,第二天上班时已经全部执行完成了。不过我觉得效率并不算高,希望能有更好的解决方案,不光是效率的还有整个程序架构的。

...全文
365 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
踩坑又填坑 2019-07-08
  • 打赏
  • 举报
回复
引用 5 楼 zh619569096 的回复:
[quote=引用 4 楼 耍螳螂拳的程序猿 的回复:] ,好吧,我谈谈我的想法,你参考参考。架构我不知道怎么设计好,但是我也了解过这些东西。我所知道的能提高效率的操作,无非就几种。第一,爬取优化,你不要爬取a标签,直接正则匹配Http://或者https://开头的链接。递归爬取是可以,这个有人家写的库,效率高的,如果自己写的话,那就多进程加多线程进行爬虫。多线程和多进程一直是提高效率的利器。第三,用消息队列进行存数据库的操作。第四,表的优化,索引,读写分离。我也是小白,纯属个人见解,如果有错误,或者这种提高效率的手段太低端,欢迎提出新的观点,我也想学习学习。
多谢确实可以试试口碑比较好的库。不过http正则匹配是不行的,因为大部分网站基本不会直接在页面里写绝对路径,一般都会是相对路径,页面抓下来之后的格式大多数都是这种‘/topics/392758502’,想要获取能够正常访问的链接都需要后处理,而且要剔除图片之类的链接。 [/quote]恩恩,是的,还需要做处理的
  • 打赏
  • 举报
回复
引用 4 楼 耍螳螂拳的程序猿 的回复:
,好吧,我谈谈我的想法,你参考参考。架构我不知道怎么设计好,但是我也了解过这些东西。我所知道的能提高效率的操作,无非就几种。第一,爬取优化,你不要爬取a标签,直接正则匹配Http://或者https://开头的链接。递归爬取是可以,这个有人家写的库,效率高的,如果自己写的话,那就多进程加多线程进行爬虫。多线程和多进程一直是提高效率的利器。第三,用消息队列进行存数据库的操作。第四,表的优化,索引,读写分离。我也是小白,纯属个人见解,如果有错误,或者这种提高效率的手段太低端,欢迎提出新的观点,我也想学习学习。


多谢确实可以试试口碑比较好的库。不过http正则匹配是不行的,因为大部分网站基本不会直接在页面里写绝对路径,一般都会是相对路径,页面抓下来之后的格式大多数都是这种‘/topics/392758502’,想要获取能够正常访问的链接都需要后处理,而且要剔除图片之类的链接。
踩坑又填坑 2019-07-05
  • 打赏
  • 举报
回复
,好吧,我谈谈我的想法,你参考参考。架构我不知道怎么设计好,但是我也了解过这些东西。我所知道的能提高效率的操作,无非就几种。第一,爬取优化,你不要爬取a标签,直接正则匹配Http://或者https://开头的链接。递归爬取是可以,这个有人家写的库,效率高的,如果自己写的话,那就多进程加多线程进行爬虫。多线程和多进程一直是提高效率的利器。第三,用消息队列进行存数据库的操作。第四,表的优化,索引,读写分离。我也是小白,纯属个人见解,如果有错误,或者这种提高效率的手段太低端,欢迎提出新的观点,我也想学习学习。
  • 打赏
  • 举报
回复
引用 2 楼 耍螳螂拳的程序猿 的回复:
是你太牛逼了。你还想提高速度,要全网打尽么?


虽然我希望自己很牛逼,但现在的我是真没有。。。。。。。这也是面试被人鄙视了才来论坛问一些面试中意识到的一些问题。
踩坑又填坑 2019-07-05
  • 打赏
  • 举报
回复
是你太牛逼了。你还想提高速度,要全网打尽么?
  • 打赏
  • 举报
回复
为啥没人回答我啊,是我给的分太少吗?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧