我已经使用 Python Scrapy 针对分销商网站构建了一个爬行蜘蛛。我只是想收集该域下的所有 URL,并且对于每个页面,该页面下列出了哪些 URL。然后可能我想使用 Gephi 来可视化该域的网络连接。
(1)抓取的 URL 如何存储(内存或磁盘),抓取限制是多少? 但是,我认为爬虫已经运行了 4 天,它已经爬取了大约 70 万页。我知道 Scrapy 不会爬取它已经爬过的页面,但我想知道:随着页面数量的增加,Scrapy 是否会限制“记住”它爬过的页面?抓取的 URL 会留在内存中,或者这背后的机制是什么?
(2)单域爬取总会有尽头吗?如果没有怎么办? 顺便说一句,我现在应该停止爬行,因为我不知道这个蜘蛛什么时候结束,我不知道他们是否有可能有一些动态页面,所以“域爬行”实际上是一项无止境的任务。 ...例如,他们有一些参数搜索框,这些搜索的所有组合都会导致一个新页面(javascript调用),但实际上......这会导致巨大的冗余......
在我了解 Scrapy 之前,我尝试先找出 URL 中的模式,然后填充所有 URL,然后转到每个 URL 并使用 urllib2+bs4 进行抓取。所以我不太确定这种“盲目”的爬行实际上是否可控。
这里可能有一些“哲学”问题,而不是具体问题,但是......欣赏任何想法或想法。