【问题标题】:Is it possible for scrapy to navigate links before actually scraping data?scrapy 是否可以在实际抓取数据之前导航链接?
【发布时间】:2018-10-18 18:51:21
【问题描述】:

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

1) 向 scrapy 提供起始 url

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

3)告诉scrapy如何找到“下一个”页面来抓取

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

【问题讨论】:

    标签: python scrapy


    【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 2021-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 2020-01-05
      • 1970-01-01
      相关资源
      最近更新 更多