Как отметил @stranac, Scrapy разработан (и все связанные с ним пауки) для получения информации из Интернета, и файлы Sitemap являются хорошим способом найти эти ссылки в продуктах на каждом веб-сайте, но на самом деле это не очень хорошофактически сканирует информацию непосредственно из файлов Sitemap.
Итак, как и предполагалось, вам нужно создать своего собственного паука, который должен выглядеть примерно так:
from scrapy import Spider
from lxml import etree
class MySpider(Spider):
name = 'sitemap_example'
def start_requests(self):
yield Request('https://www.reuters.com/sitemap_news_index1.xml')
def parse(self, response):
sitemap = etree.fromstring(response.body)
for child in sitemap.getchildren():
inner_children = child.getchildren()
news_child = [x for x in inner_children if 'news' in x.tag]
if not news_child:
continue
else:
news_child = news_child[0]
stock_child = [x for x in news_child if 'stock_tickers' in x.tag]
keywords_child = [x for x in news_child if 'keywords' in x.tag]
title_child = [x for x in news_child if 'title' in x.tag]
if stock_child:
yield {
'stock_tickers': stock_child[0].text,
'keywords': keywords_child[0].text,
'title': title_child[0].text,
}
Пожалуйста, дайте мне знать, что вы думаете, иесли я могу помочь вам чем-нибудь еще.