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

2024-06-28 19:35:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经完成了一些粗糙的教程,我有一个问题(我对这个非常陌生,所以我道歉,如果这是一个愚蠢的问题)。到目前为止,我看到的大部分都涉及:

1)向scrapy提供起始url

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

3)告诉scrapy如何找到“下一页”进行刮取

我想知道的是-当数据本身不在起始页上时,我是否能够使用scrapy来刮取数据?例如,我有一个指向论坛的链接。该论坛包含多个子论坛的链接。每个子窗体都有指向多个线程的链接。每个线程包含多条消息(可能在多个页面上)。这些信息是我最终想要搜集的。有没有可能做到这一点,只用到论坛的初始链接?scrapy是否可以浏览每个子窗体、每个线程并然后开始刮取?你知道吗


Tags: 数据信息消息url链接教程页面窗体
1条回答
网友
1楼 · 发布于 2024-06-28 19:35:27

是的,您可以在不刮取数据的情况下导航,不过您需要提取链接以使用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>

相关问题 更多 >