简单方法
art_urls = []
if art_url in art_urls:
break
可以在Scrapy中使用一个集合来存储已经爬取的文章链接,在解析新的文章链接时,先判断集合中是否已经存在该链接,如果不存在,则继续爬取,否则跳过。以下是示例代码:
class CBGASpider(scrapy.Spider):
visited_urls = set() # 存储已访问链接的集合
def parse(self, response):
# 解析文章列表中的所有链接
for article_link in response.css('.entry-title a::attr(href)').getall():
if article_link not in self.visited_urls: # 如果链接未被访问过,则继续爬取
self.visited_urls.add(article_link) # 将链接添加到已访问集合中
yield scrapy.Request(article_link, callback=self.parse_article)
在上述代码中,我们创建了一个集合visited_urls
,用于存储已经访问过的文章链接。在解析文章列表中的链接时,我们先判断该链接是否已经存在于集合中,如果不存在,则将链接添加到集合中,并发送一个Request
对象进行爬取。在解析文章内容时,我们使用yield
关键字返回一个包含文章信息的字典。