Оба запроса, которые вы делаете в своем пауке, получают 404 Not found
ответов.По умолчанию Scrapy игнорирует ответы с таким статусом, и ваш обратный вызов не вызывается.
Для того, чтобы ваш обратный вызов self.parse
вызывался для таких ответов, вы должны добавить код состояния 404
всписок обработанных кодов состояния с использованием мета-ключа handle_httpstatus_list
(подробнее здесь ).
Вы можете изменить свой метод start_requests
, чтобы запросы давали Scrapy команду обрабатывать даже 404 ответа.:
import scrapy
class TutorialSpider(scrapy.Spider):
name = "tutorial"
def start_requests(self):
urls = [
'https://example.com/page/1',
'https://example.com/page/2',
]
for url in urls:
print(f'{self.name} spider')
print(f'url is {url}')
yield scrapy.Request(
url=url,
callback=self.parse,
meta={'handle_httpstatus_list': [404]},
)
def parse(self, response):
print(response.url)
self.log(response.url)
sys.stdout.write('hello')