我很想知道是否有可能抓取网站上的所有页面和链接,即使在跟随几个链接后,顶部的URL发生了变化?这里是一个例子:
首页URL:www.example.comwww.topURL.com
有3个链接: 网址:www.topURL.com/link1、网址:www.example.com和网址:www.topURL.com/link2 and www.topURL.com/link3
然后,如果我们单击www.example.com,它会将我们带到一个页面,该页面本身具有www.topURL.com/link1 it takes us to a page that itself has
2链接上: 和网站www.topURL.com/link4 and www.topURL.com/link5
但如果我们单击www.example.com,则会转到包含以下2个链接的页面:www.topURL.com/link4 it takes us to a page that has the following 2 links: www.anotherURL.com/link1 and www.thirdURL.com/link1
scrapy或任何python爬虫/spider都可以从www.example.com开始,然后沿着链接到达www.example.com吗 www.topURL.com and then follows links and end up on www.thirdURL.com/link1?
有没有一个限制,它可以多深?有没有代码示例告诉我如何做到这一点?
谢谢你的帮助。
1条答案
按热度按时间vtwuwzda1#
看看Scraby的
CrawlSpider
蜘蛛类CrawlSpider是爬行常规网站最常用的蜘蛛,因为它通过定义一组规则提供了一种方便的跟踪链接的机制。
为了实现你的目标,你只需要制定非常基本的规则:
上面的爬虫将抓取网站上与allowed_domains匹配的每个url,并回调到
parse_item
。值得注意的是,默认情况下
LinkeExtractor
忽略媒体页面(如pdf,mp4等)为了扩展深度主题,Scraby确实有深度限制设置,但默认设置为0(又名无限深度)
https://doc.scrapy.org/en/0.9/topics/settings.html#depth-limit
同样,scrapy默认情况下会先抓取深度,但如果你想更快地覆盖广度,首先可能会改善这一点:https://doc.scrapy.org/en/0.9/topics/settings.html#depth-limit