Я пытаюсь сканировать веб-сайт (я получил их разрешение), и мой код возвращает то, что я хочу в оболочке Scrapy, но я ничего не получаю в своем пауке.
Я также проверил все предыдущие вопросыпохож на этот, но безуспешно, например, веб-сайт не использует javascript на домашней странице для загрузки необходимых мне элементов.
import scrapy
class MySpider(scrapy.Spider):
name = 'MySpider'
start_urls = [ #WRONG URL, SHOULD BE https://shop.app4health.it/ PROBLEM SOLVED!
'https://www.app4health.it/',
]
def parse(self, response):
self.logger.info('A response from %s just arrived!', response.url)
print ('PRE RISULTATI')
results = response.selector.xpath('//*[@id="nav"]/ol/li[*]/a/@href').extract()
# results = response.css('li a>href').extract()
# This works on scrapy shell, not in code
#risultati = response.xpath('//*[@id="nav"]/ol/li[1]/a').extract()
print (risultati)
#for pagineitems in risultati:
# next_page = pagineitems
print ('NEXT PAGE')
#Ignores the request cause already done. Insert dont filter
yield scrapy.Request(url=risultati, callback=self.prodotti,dont_filter = True)
def prodotti(self, response):
self.logger.info('A REEEESPONSEEEEEE from %s just arrived!', response.url)
return 1
Веб-сайт, который я пытаюсь сканировать, - https://shop.app4health.it/
Используемая мной команда xpath:
response.selector.xpath('//*[@id="nav"]/ol/li[*]/a/@href').extract()
Я знаю, что есть некоторые проблемы с prodotti функцией ecc ..., но этоне в этом дело.Я хотел бы понять, почему селектор xpath работает с оболочкой scrapy (я получаю именно те ссылки, которые мне нужны), но когда я запускаю его в своем пауке, я всегда получаю нулевой список.
Если это может помочь, когда я использую селекторы CSS в моем пауке, он работает нормально и находит элементы, но я хотел бы использовать xpath (он мне нужен в дальнейшей разработке моего приложения).
Спасибо за помощь:)
РЕДАКТИРОВАТЬ : я попытался напечатать тело первого ответа (из start_urls), и это правильно, я получаю страницу, которую хочу.Когда я использую селекторы в моем коде (даже тот, который был предложен), они все прекрасно работают в оболочке, но я ничего не получаю в своем коде!
РЕДАКТИРОВАТЬ 2 Я стал более опытным с Scrapy и веб-сканированием, и я понял, что иногда HTML-страница, которую вы получаете в своем браузере, может отличаться от той, которую вы получаете сЗапрос на терапию!По моему опыту, какой-то веб-сайт отвечал бы другим HTML-кодом, чем тот, который вы видите в своем браузере!Вот почему иногда, если вы используете «правильный» запрос xpath / css, полученный из браузера, он может ничего не возвращать, если используется в вашем коде Scrapy.Всегда проверяйте, является ли тело вашего ответа тем, чего вы ожидали!
решено : путь указан правильно.Я неправильно написал start_urls!