'Scrap Hotel facilities of TripAdvisor with Selenium
I want to scrape hotel facilities data on TripAdvisor using Selenium. To have all the facilities of an hotel I need to click on show more. However, I can't do that if i use the click function on the element show more. And if I scrap the information like that (without clicking show more) :
Property_Amenities= driver.find_elements_by_xpath(".//div[@class='bUmsU f ME H3 _c']")
for o in range(len(Property_Amenities)):
Property_Amenities[o]=Property_Amenities[o].text
print(Property_Amenities)
It only retrieve 8 facilities and not everything.
All the data is stored in a data-ssrev-handlers above. How can I retrieve information like facilities name easily ?
<div class="ssr-init-26f" data-ssrev-handlers="{"load":[3,"R5ISL7","default",{"amenities":{"highlightedAmenities":{"roomFeatures":[{"tagId":18905,"amenityNameLocalized":"Blackout curtains","amenityCategoryName":"Comfort","amenityIcon":"hotels"},{"tagId":19085,"amenityNameLocalized":"Soundproof rooms","amenityCategoryName":"Comfort","amenityIcon":"hotels"},{"tagId":9658,"amenityNameLocalized":"Air conditioning","amenityCategoryName":"RoomAmenities","amenityIcon":"hotels"},{"tagId":12120,"amenityNameLocalized":"Housekeeping","amenityCategoryName":"RoomAmenities","amenityIcon":"hotels"},{"tagId":10589,"amenityNameLocalized":"Safe","amenityCategoryName":"RoomAmenities","amenityIcon":"hotels"},{"tagId":9666,"amenityNameLocalized":"Minibar","amenityCategoryName":"KitchenAmenities","amenityIcon":"restaurants"},{"tagId":11269,"amenityNameLocalized":"Flatscreen TV","amenityCategoryName":"Entertainment","amenityIcon":"play"},{"tagId":18897,"amenityNameLocalized":"Bath / shower","amenityCategoryName":"Bath","amenityIcon":"bathroom-fill"}],"roomTypes":[{"tagId":9184,"amenityNameLocalized":"Non-smoking rooms","amenityCategoryName":"RoomTypes","amenityIcon":"hotels"},{"tagId":9160,"amenityNameLocalized":"Suites","amenityCategoryName":"RoomTypes","amenityIcon":"hotels"},{"tagId":9659,"amenityNameLocalized":"Family rooms","amenityCategoryName":"RoomTypes","amenityIcon":"hotels"}],"propertyAmenities":[{"tagId":9176,"amenityNameLocalized":"Free High Speed Internet (WiFi)","amenityCategoryName":"Internet","amenityIcon":"wifi"},{"tagId":12111,"amenityNameLocalized":"Breakfast available","amenityCategoryName":"FoodAndDrink","amenityIcon":"food-drink"},{"tagId":19103,"amenityNameLocalized":"Taxi service","amenityCategoryName":"Transportation","amenityIcon":"taxi"},{"tagId":19063,"amenityNameLocalized":"24-hour security","amenityCategoryName":"General","amenityIcon":"hotels"},{"tagId":18896,"amenityNameLocalized":"Baggage storage","amenityCategoryName":"General","amenityIcon":"hotels"},{"tagId":18924,"amenityNameLocalized":"24-hour check-in","amenityCategoryName":"ReceptionServices","amenityIcon":"suitcase-fill"},{"tagId":18977,"amenityNameLocalized":"24-hour front desk","amenityCategoryName":"ReceptionServices","amenityIcon":"suitcase-fill"},{"tagId":9180,"amenityNameLocalized":"Dry cleaning","amenityCategoryName":"CleaningServices","amenityIcon":"dry-cleaning"}]},"nonHighlightedAmenities":{"roomFeatures":[{"tagId":19104,"amenityNameLocalized":"Telephone","amenityCategoryName":"RoomAmenities","amenityIcon":"hotels"},{"tagId":18911,"amenityNameLocalized":"Bottled water","amenityCategoryName":"RoomAmenities","amenityIcon":"hotels"},{"tagId":19117,"amenityNameLocalized":"Wake-up service / alarm clock","amenityCategoryName":"RoomAmenities","amenityIcon":"hotels"},{"tagId":18949,"amenityNameLocalized":"Electric kettle","amenityCategoryName":"KitchenAmenities","amenityIcon":"restaurants"},{"tagId":18972,"amenityNameLocalized":"Complimentary toiletries","amenityCategoryName":"Bath","amenityIcon":"bathroom-fill"},{"tagId":18984,"amenityNameLocalized":"Hair dryer","amenityCategoryName":"Bath","amenityIcon":"bathroom-fill"}],"roomTypes":[],"propertyAmenities":[{"tagId":9173,"amenityNameLocalized":"Wifi","amenityCategoryName":"Internet","amenityIcon":"wifi"},{"tagId":18971,"amenityNameLocalized":"Complimentary Instant Coffee","amenityCategoryName":"FoodAndDrink","amenityIcon":"food-drink"},{"tagId":18933,"amenityNameLocalized":"Complimentary tea","amenityCategoryName":"FoodAndDrink","amenityIcon":"food-drink"},{"tagId":19080,"amenityNameLocalized":"Snack bar","amenityCategoryName":"FoodAndDrink","amenityIcon":"food-drink"},{"tagId":19087,"amenityNameLocalized":"Special diet menus","amenityCategoryName":"FoodAndDrink","amenityIcon":"food-drink"},{"tagId":9656,"amenityNameLocalized":"Concierge","amenityCategoryName":"General","amenityIcon":"hotels"},{"tagId":9670,"amenityNameLocalized":"Non-smoking hotel","amenityCategoryName":"General","amenityIcon":"hotels"},{"tagId":18925,"amenityNameLocalized":"Express check-in / check-out","amenityCategoryName":"ReceptionServices","amenityIcon":"suitcase-fill"},{"tagId":9623,"amenityNameLocalized":"Laundry service","amenityCategoryName":"CleaningServices","amenityIcon":"dry-cleaning"},{"tagId":19003,"amenityNameLocalized":"Ironing service","amenityCategoryName":"CleaningServices","amenityIcon":"dry-cleaning"}]},"languagesSpoken":[{"tagId":18950,"amenityNameLocalized":"English"},{"tagId":18976,"amenityNameLocalized":"French"},{"tagId":19086,"amenityNameLocalized":"Spanish"},{"tagId":18890,"amenityNameLocalized":"Arabic"},{"tagId":18928,"amenityNameLocalized":"Chinese"}]},"loading":false,"viewport":"DESKTOP"}]}"><div class="ccdzg S5 b Pf ME">Property amenities</div><div class="exmBD K"><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon wifi eqNRg Nd"></span>Free High Speed Internet (WiFi)</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon coffee-tea-cafe eqNRg Nd"></span>Breakfast available</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon taxi eqNRg Nd"></span>Taxi service</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon hotels eqNRg Nd"></span>24-hour security</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon hotels eqNRg Nd"></span>Baggage storage</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon suitcase-fill eqNRg Nd"></span>24-hour check-in</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon suitcase-fill eqNRg Nd"></span>24-hour front desk</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon dry-cleaning eqNRg Nd"></span>Dry cleaning</div><div class="fphCZ K w fwzKF"><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon wifi eqNRg Nd"></span>Wifi</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon food-drink eqNRg Nd"></span>Complimentary Instant Coffee</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon food-drink eqNRg Nd"></span>Complimentary tea</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon food-drink eqNRg Nd"></span>Snack bar</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon food-drink eqNRg Nd"></span>Special diet menus</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon hotels eqNRg Nd"></span>Concierge</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon smoking-prohibited eqNRg Nd"></span>Non-smoking hotel</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon suitcase-fill eqNRg Nd"></span>Express check-in / check-out</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon dry-cleaning eqNRg Nd"></span>Laundry service</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon dry-cleaning eqNRg Nd"></span>Ironing service</div></div></div><div><div><span class="fqQue S4 _S Nc">Show more</span><span class="ui_icon caret-down bRRbx"></span></div></div><div class="ccdzg S5 b Pf ME">Room features</div><div class="exmBD K"><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon hotels eqNRg Nd"></span>Blackout curtains</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon hotels eqNRg Nd"></span>Soundproof rooms</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon air-conditioning eqNRg Nd"></span>Air conditioning</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon hotels eqNRg Nd"></span>Housekeeping</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon hotels eqNRg Nd"></span>Safe</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon restaurants eqNRg Nd"></span>Minibar</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon play eqNRg Nd"></span>Flatscreen TV</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon bathroom-fill eqNRg Nd"></span>Bath / shower</div><div class="fphCZ K w fwzKF"><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon hotels eqNRg Nd"></span>Telephone</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon hotels eqNRg Nd"></span>Bottled water</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon hotels eqNRg Nd"></span>Wake-up service / alarm clock</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon restaurants eqNRg Nd"></span>Electric kettle</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon bathroom-fill eqNRg Nd"></span>Complimentary toiletries</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon bathroom-fill eqNRg Nd"></span>Hair dryer</div></div></div><div><div><span class="fqQue S4 _S Nc">Show more</span><span class="ui_icon caret-down bRRbx"></span></div></div><div class="ccdzg S5 b Pf ME">Room types</div><div class="exmBD K"><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon smoking-prohibited eqNRg Nd"></span>Non-smoking rooms</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon hotels eqNRg Nd"></span>Suites</div><div class="bUmsU f ME H3 _c" data-test-target="amenity_text"><span class="ui_icon hotels eqNRg Nd"></span>Family rooms</div><div class="fphCZ K w fwzKF"></div></div><div></div></div>
Solution 1:[1]
to click on show more button, you can use the below XPath:
//div[text()='Show more']
I'd recommend you to use explicit wait to click on it:
Code:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[text()='Show more']"))).click()
Imports:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
Solution 2:[2]
To solve the problem :
First, scroll to the link using Action class
element=driver.find_element_by_xpath(".//div[contains(@class, 'dPTxH S4 b _S')]")
actions = ActionChains(driver)
actions.move_to_element(element).perform()
Then click on the "show more" using :
ActionChains(driver, 20).move_to_element(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[text()='Show more']")))).click().perform()
After that you can retrieve all the informations you want !
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | cruisepandey |
| Solution 2 | Laurent Louis |

