如何在 Scrapy 中存储抓取的链接

时间:2021-05-05 20:51:55

标签: scrapy

我在网络上进行了大量搜索,但找不到任何相关内容,或者可能与所使用的措辞有关。

基本上,我想编写一个蜘蛛程序,它能够保存抓取的链接并检查是否已经抓取了其他一些链接。在scrapy中是否有任何内置功能可以这样做?

非常感谢

1 个答案:

答案 0 :(得分:1)

您可以为此目的编写自己的方法。我已经写在我的项目中,你可以参考这个。一个名为 already_parsed_urls 的字典,对于每个回调,我都会更新这个字典。

您可以查看以下代码片段并参考。

from scrapy.spiders import CrawlSpider
from scrapy_splash import SplashRequest


class Spider(CrawlSpider):
    name = 'test'
    allowed_domains = []
    web_url = ''
    start_urls = ['']
    counter = 0
    already_parsed_urls = {}
    
    wait_time = 3
    timeout = '90'

    def start_requests(self):
        for start_url in self.start_urls:
            yield SplashRequest(start_url, callback=self.parse_courses,
                                args={'wait': self.wait_time, 'timeout': self.timeout})

    def parse_courses(self, response):
        course_urls = []

        yield SplashRequest(course_urls[0], callback=self.parse_items, args={'wait': self.wait_time})

    def parse_items(self, response):

        if not self.already_parsed_urls.get(response.url):
            
            # Get Program URL
            program_url = response.url

            self.already_parsed_urls[response.url] = 1
            
        else:
            return {}