1
147
你肯定会重新发明轮子的。但基本情况如下:
把它们放在持久性存储中,这样就可以停止和启动爬虫程序而不会丢失状态。 算法是:
|
2
30
爬虫程序的复杂部分是如果你想将它扩展到大量的网站/请求。 在这种情况下,您必须处理一些问题,如:
还有一些重要的事情
|
3
8
多线程网络爬虫
如果你想爬网大型网站,那么你应该写一个多线程爬虫。 连接、获取和写入文件/数据库中的爬网信息-这是爬网的三个步骤,但如果使用单线程,则CPU和网络利用率将大大降低。 一个多线程的网络爬虫需要两个数据结构-linksVisited(这应该实现为hashmap或trai)和linkstobevisted(这是一个队列)。 网络爬虫使用BFS遍历万维网。 基本web的算法爬虫:-
|
4
5
爬虫的概念很简单。 您通过httpget获得一个根页面,对其进行解析以找到url并将其放入队列,除非它们已经被解析(因此您需要一个已经解析的页面的全局记录)。 您可以使用contenttypeheader找出内容的类型,并将爬虫程序限制为只解析HTML类型。 您可以去掉HTML标记以获得纯文本,您可以对纯文本进行文本分析(以获得标记等页面的内容)。你甚至可以在图片的alt/title标签上这样做。 在后台,您可以有一个线程池,从队列中获取url并执行相同的操作。当然,你要限制线程的数量。 |
5
5
如果你的NPO的网站比较大或者比较复杂(有动态页面,可以有效地创建一个“黑洞”,比如带有“第二天”链接的日历),你最好使用一个真正的网络爬虫,比如 Heritrix. 如果这些站点总共有几个页面,那么只需使用curl、wget或您自己的页面就可以了。只要记住,如果他们开始变大,或者你开始让你的脚本更复杂,只使用一个真正的爬虫,或者至少看看它的来源,看看他们在做什么,为什么。 一些问题(还有更多):
|
6
4
web crawlers ,涵盖了许多算法和注意事项。 off-the-shelf crawler . 有很多免费和开源的爬虫程序,可能会做你需要的一切,而你的工作很少。 |
7
2
你可以做一个单词列表,并为谷歌搜索到的每个单词创建一个线程。
|
8
0
编辑:或者用curl代替wget,但是我不熟悉curl,我不知道它是否像wget那样进行递归下载。 |
9
0
我正在使用Open search server进行公司内部搜索,请尝试以下操作: http://open-search-server.com 它也是开放式的。 |
10
0
https://github.com/Misterhex/WebCrawler
您可以按如下方式使用它:
|
Tae · Python3中方法has\u key的替换 6 年前 |
Vega · 如何从DOM获取所有链接? 6 年前 |
bob9123 · 为什么状态和索引中的文档计数不同? 6 年前 |
Konstantin · crawler中未启动回调函数,scrapy 6 年前 |
SY9 · 刮:已爬网并刮取0个项目 6 年前 |