如何在Scrapy SitemapSpider中停止解析

时间:2016-08-12 05:07:54

标签: python web-scraping scrapy web-crawler sitemap

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

他们是否可以在不进入每个网址的情况下获取网址。

1 个答案:

答案 0 :(得分:1)

您可以使用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