在实际抓取数据之前,scrapy是否有可能浏览链接?

时间:2018-10-18 18:51:22

标签: python scrapy

我一直在研究一些繁琐的教程,但有一个问题(我对此很陌生,因此,如果这是一个愚蠢的问题,我深表歉意)。到目前为止,我所看到的大部分内容都涉及:

1)输入起始网址以抓取

2)告诉scrapy要抓取页面的哪些部分

3)告诉scrapy如何找到要抓取的“下一页”

我想知道的是-当数据本身不在起始页上时,是否可以使用scrapy刮取数据?例如,我有一个指向论坛的链接。该论坛包含几个子论坛的链接。每个子论坛都有指向多个线程的链接。每个线程包含多个消息(可能跨越多个页面)。这些消息是我最终要抓取的信息。是否可以这样做,并且仅使用指向论坛的初始链接?可以使scrapy遍历每个子论坛,并且每个线程和 then 开始抓取吗?

1 个答案:

答案 0 :(得分:1)

是的,尽管您将需要使用xpathcssCrawlSpider规则来提取导航链接,但是您无需进行数据抓取即可进行导航。这些链接仅可用于导航,而无需加载到项目中。

不要求您将所访问的每个页面中的内容加载到项目中。考虑一种情况,您需要对过去的登录进行身份验证才能获取要抓取的数据。无需从登录页面抓取/传递/写入任何数据。

出于您的目的:

def start_requests(self):
    forum_url = <spam>
    yield scrapy.Request(url=forum_url, callback=self.parse_forum)

def parse_forum(self, response):
    #get the urls
    for u in subforum_urls:
        yield scrapy.Request(url=u, callback=parse_subforum)

def parse_subforum(self, response):
    #get the other urls
    for u in thread_urls:
        yield scrapy.Request(url=u, callback=parse_thread)

def parse_thread(self, response):
    #get the data you want
    yield <the data>