我在网络上进行了大量搜索,但找不到任何相关内容,或者可能与所使用的措辞有关。
基本上,我想编写一个蜘蛛程序,它能够保存抓取的链接并检查是否已经抓取了其他一些链接。在scrapy中是否有任何内置功能可以这样做?
非常感谢
答案 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 {}