Второй xpath работает для меня НО , только если я установил правильный User-Agent
ie.
Mozilla/5.0 (X11; Linux x86_64; rv:75.0) Gecko/20100101 Firefox/75.0
Без User-Agent
или с короткой версией Mozilla/5.0
он перенаправляет на
https://www.booking.com/searchresults.de.html
(без аргументов ?dest_id=204;dest_type=country&
) и пустая страница без отелей.
Возможно, вам следует сначала проверить, что вы получаете по URL - ie. сохраните HTML в файле и откройте в браузере - возможно, вы также получите пустую страницу или предупреждение для ботов.
Минимальный рабочий код
Вы можете поместить его в один файл и запустить как обычный скрипт без создания проекта.
import scrapy
class MySpider(scrapy.Spider):
name = 'myspider'
start_urls = ['https://www.booking.com/searchresults.de.html?dest_id=204;dest_type=country&']
def parse(self, response):
print('url:', response.url)
#items = response.xpath('.//*[@class="sr-hotel__title "]/a/@href').extract()
items = response.xpath('//a[@class="hotel_name_link url"]/@href').extract()
for item in items:
yield {'url': item.strip()} # to save in CSV
# --- run without project and save in `output.csv` ---
from scrapy.crawler import CrawlerProcess
c = CrawlerProcess({
'USER_AGENT': 'Mozilla/5.0 (X11; Linux x86_64; rv:75.0) Gecko/20100101 Firefox/75.0',
# save in file CSV, JSON or XML
'FEED_FORMAT': 'csv', # csv, json, xml
'FEED_URI': 'output.csv', #
})
c.crawl(MySpider)
c.start()