【问题标题】:Scrape Hotel data, assign tag to hotel, but sometimes different [duplicate]抓取酒店数据,为酒店分配标签,但有时不同[重复]
【发布时间】:2019-05-04 17:13:18
【问题描述】:

我想从 Bookings.com 抓取一些数据(对不起,我是初学者)。我的目标是提取酒店的名称以及有多少房间可用。

酒店名称在以下 HTML 标记中:

<span class="sr-hotel__name
" data-et-click=" ">Hotel New York</span>

我正在使用以下代码获取酒店的名称并将其打印到控制台:

titles_element = browser.find_elements_by_class_name('sr-hotel__name')
for title in titles_element:
    # get the number of elements
    print('Hotel: ' + title.text)

这工作正常,但我确定的可用房间有两个不同的标签:

<span class="only_x_left sr_rooms_left_wrap " data-x-left-count="6">
Nur noch 6 Zimmer auf unserer Seite verfügbar!
</span>

<span class="only_x_left sr_rooms_left_wrap js--highdemand-scarce" data-x-left-count="6">
Sehr gefragt – nur noch 6 auf unserer Seite verfügbar!
</span>

问题还在于,有时此标签不可用,因为 Booking.com 不提供房间可用性。在这种情况下,我只想打印“无信息”。

我的目标是为酒店分配正确的房间可用性并将其打印到控制台,例如:

酒店:纽约酒店

可用房间:3

酒店:希尔顿大道

可用房间:无信息

等等

我该怎么做?我假设我必须使用循环,对吗?

谢谢!

【问题讨论】:

    标签: python html selenium


    【解决方案1】:

    欢迎来到 SO。

    这是我将使用的解决方案。

    # get the hotels
    hotels = driver.find_elements_by_css_selector(".sr_item")
    # now iterate through all hotels
    for hotel in hotels:
        # get hotel name
        name = hotel.find_element_by_class_name('sr-hotel__name').text
        rooms = hotel.find_elements_by_class_name('sr_rooms_left_wrap')
        if (len(rooms)>0):
            room = rooms[0].get_attribute('data-x-left-count')
        else:
            room = "No information"
        print("Hotel : " + name)
        print("Rooms Available : " + room)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-23
      • 2022-11-11
      • 2011-06-06
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2013-12-09
      相关资源
      最近更新 更多