如何在 Scrapy SitemapSpider 中停止解析

How to stop parse in Scrapy SitemapSpider

我的要求是获取 sitemap.xml 中的所有 url,scrapy sitemapspider class 完成任务但它也尝试解析页面,这使得爬行变慢尝试下载整个页面。

他们是一种只获取 url 的方法,而无需深入研究它们中的每一个。

您可以使用 scrapy.utils.sitemap.Sitemap 对象从站点地图中提取网址,它会为您完成一切。

import scrapy
from scrapy.utils.sitemap import Sitemap


class SitemapJustUrlsSpider(scrapy.Spider):
    name = "sitemap_spider"
    start_urls = (
        'http://www.example.com/sitemap.xml',
    )

    def parse(self, response):
        s = Sitemap(response.body)
        for sitelink in s:
            url = sitelink['loc']
            yield {'url': url}

然后保存网址:scrapy crawl sitemap_spider -o urls.json