Python 使用scrapy css从booking.com提取价格时出现问题

Python 使用scrapy css从booking.com提取价格时出现问题,python,web-scraping,scrapy,Python,Web Scraping,Scrapy,我正试图从booking.com网站上提取酒店名称及其价格。我设法提取了酒店名称并将其存储在物品容器中,但是我很难从网页中提取出属于我的价格。 我的代码如下: import scrapy from ..items import KonkurrenzanalyseItem class Konkurrenzanalyse(scrapy.Spider): name = 'Booking' start_urls = [ 'https://www.booking.com/se

我正试图从booking.com网站上提取酒店名称及其价格。我设法提取了酒店名称并将其存储在物品容器中,但是我很难从网页中提取出属于我的价格。 我的代码如下:

import scrapy

from ..items import KonkurrenzanalyseItem


class Konkurrenzanalyse(scrapy.Spider):
    name = 'Booking'
    start_urls = [
    'https://www.booking.com/searchresults.de.html?aid=304142&label=gen173nr-1DCAEoggI46AdIM1gEaDuIAQGYAQe4AQfIAQ3YAQPoAQGIAgGoAgO4AuadkPIFwAIB&sid=f5f5396810ee33128397135370be94ba&tmpl=searchresults&checkin_month=2&checkin_monthday=18&checkin_year=2020&checkout_month=2&checkout_monthday=19&checkout_year=2020&class_interval=1&dest_id=-1821233&dest_type=city&dtdisc=0&from_sf=1&group_adults=2&group_children=0&inac=0&index_postcard=0&label_click=undef&no_rooms=1&order=price&postcard=0&raw_dest_type=city&room1=A%2CA&sb_price_type=total&shw_aparth=1&slp_r_match=0&src_elem=sb&srpvid=704b677afe570188&ss=Lübeck&ss_all=0&ssb=empty&sshis=0&ssne=Lübeck&ssne_untouched=Lübeck&top_ufis=1&rows=25&offset=25'
    ]

    def parse(self, response):
        items = KonkurrenzanalyseItem()

        hotel_name = response.css('.sr-hotel__name::text').extract()
        hotel_price = response.css('.bui-price-display__value::text').extract()

        items['hotel_name'] = hotel_name
        items['hotel_price'] = hotel_price

        yield items
下一幅图表示我想从html代码中提取的价格:

到目前为止,代码输出以下尚未列出价格的值:


由于我在这个环境中是一个新手,如果我的问题没有100%准确地表达出来,请原谅。

在我看来,您的css选择器有点不正确,请尝试:

hotel_price = response.css('div.bui-price-display__value.prco-inline-block-maker-helper::text').extract_first()

看看这个有用的css slector资源

不要发布文本图像。(从我的iPhone发送,这是一个很好的理由。)请看我对最近这个问题的回答,以解决您的问题。我已经检查了你最近对一个类似问题的回答。我的收获是,我应该循环并单独生成每个项目,以获得所需的价格输出。然而,即使我这样做了,我仍然有一个问题,就是没有收到任何价格的价值,我仍然不知道为什么。使用scrapy shell并获取URL,看看数据是否确实存在。如果它显示在浏览器中,但不是在scrapy中,则可以通过JS加载。使用“网络”选项卡中的浏览器检查器工具查看是否有XHR请求加载到价格中。非常感谢!我用scrapy shell->view(response)检查了url,酒店名称仍然存在,但价格缺失,因为在将url转换为scrapy时,没有采用日期,这是获取房价所必需的。你知道如何解决这个问题吗?