我想从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
酒店:希尔顿大道
可用客房:无信息
我该怎么做?我认为我必须使用循环,对吧?
谢谢!
答案 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)