Это - это URL карты сайта, который я сканирую. Я хочу, чтобы мой паук очищал данные со страниц, которые начинаются с / property .
Проблема в том, что эти страницы не показывают правильный ответ при отправке запроса без заголовков. Для запроса требуется заголовок агента пользователя.
Я пришел к такому решению. Во-первых, URL, начинающиеся с / property , сканируются методом parse
, и этот метод получает пустой ответ. Тот же запрос отправляется вместе с заголовками методом parse
, а правильный ответ будет сканироваться методом parse_items
.
Метод parse_items
никогда не вызывается и процесс оболочки никогда не запускается. Я не понимаю, почему parse_items
не достигается. Есть ли способ определить метод, такой как start_requests
, чтобы я мог переопределить поведение метода parse
для класса SitemapSpider
.
class MySpider(SitemapSpider):
name = 'myspider'
sitemap_urls = [
'https://www.iproperty.com.my/sitemap_index.xml',
]
sitemap_rules = [
('/property', 'parse'),
]
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
}
def parse(self, response):
yield scrapy.Request(
url=response.url,
method='GET',
headers=self.headers,
callback=self.parse_items
)
def parse_items(self, response):
from scrapy.shell import inspect_response
inspect_response(response, self)