#python #selenium #web-scraping
#python #селен #очистка веб-страниц
Вопрос:
Я пытаюсь практиковать извлечение обзоров из booking.com . Я случайным образом выбираю отель и заставляю selenium получить элемент, затем пытаюсь найти, чтобы получить отзывы от BeautifulSoup следующим образом, но результаты не возвращают никаких данных. Могу ли я получить ваши предложения, что пошло не так и как это исправить?
from selenium import webdriver
from bs4 import BeautifulSoup
driver = webdriver.Chrome(executable_path="./driver/chromedriver.exe")
driver.get("https://booking.com")
driver.find_element_by_css_selector("input[class*='sb-searchbox__input']").send_keys("Eden The Residence at The Sea")
driver.find_element_by_css_selector("button[type='submit']").click()
driver.find_element_by_xpath("//span[contains(text(),'Eden The Residence at The Sea')]").click()
soup = BeautifulSoup(driver.page_source,"html.parser")
containers = soup.find_all("div", {"class": "review_list_container"})
reviews = containers[0].find_all("ul")
Ответ №1:
Вы должны переключить фокус на новую вкладку, которая открывается. Вы можете сделать это с помощью
driver.switch_to.window(driver.window_handles[1])
Вот окончательный код:
from selenium import webdriver
from bs4 import BeautifulSoup
import time
driver = webdriver.Chrome()
driver.get("https://booking.com")
time.sleep(2)
driver.find_element_by_css_selector("input[class*='sb-searchbox__input']").send_keys("Eden The Residence at The Sea")
driver.find_element_by_css_selector("button[type='submit']").click()
driver.find_element_by_xpath("//span[contains(text(),'Eden The Residence at The Sea')]").click()
time.sleep(3)
driver.switch_to.window(driver.window_handles[1])
soup = BeautifulSoup(driver.page_source,"html.parser")
containers = soup.find_all("span", {"class": "c-review__body"})
for span in containers:
print(span.text)
Вывод:
“The location is great just few minutes walk to the beach”
“The entire experience was flawless. This is the most beautiful villa I've ever stayed in, let alone, seen. The staff were outstanding and so friendly and professional. The private chefs that cooked breakfast in our Villa was amazing, and SO well pri…
“The staff were great and it was very easy to order meals and have them prepared at a very reasonable price.”
“The villa is spacious and airy with a large private pool.
Bedrooms are large each with their own bathroom facilties.
The staff go above and beyond to make your stay as comfortable as possible.”
“Excellent , friendly helpful staff
Beautiful patio, garden and pool
Very spacious villa
Fast laundry service
Decorate the villa and bath with flowers for my wife’s birthday ”
“We loved almost everything about Eden Residence from the location, the quality of the villa, the staff, the cost and the room service (cooks came and prepared meals at the cost to buy groceries plus 15%).
The staff are super friendly and we felt ext…
“Great accomodation. Lots of space. Great pool. Good service”
“Everything! The spacious living room, big toilet, beautiful surroundings. Not to forget, fantastic service by all the staff! Sampai jumpa lagi semuanyaaa 🙏🏻”
“Staff were exceptional. They went above and beyond to meet our needs at all hours of the day/night. Great, convenient location. Large spacious rooms all each with their own bathroom/ensuite. Pool was amazing. Staff cooked traditional suckling pig fo…
“Luxury Villa
Excellent friendly staff
Private pool
Ocean View sunsets from rooftop
Walking distance to beach”