刮擦酒店数据,为酒店分配标签,但有时会有所不同

时间:2019-05-04 17:13:19

标签: python html selenium

我想从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

酒店:希尔顿大道

可用客房:无信息

以此类推

我该怎么做?我认为我必须使用循环,对吧?

谢谢!

1 个答案:

答案 0 :(得分:0)

欢迎来到。

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

# 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)