我的要求是获取sitemap.xml中的所有url,scrapy sitemapspider类完成任务,但它也尝试解析在尝试下载整个页面时使爬行速度变慢的页面。
他们是否可以在不进入每个网址的情况下获取网址。
答案 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