Я отказываюсь от booking.com для моего проекта Academi c. Мне нужно определить тип категории отеля, независимо от того, является ли данный отель отелем, или апарт-отелем, или виллой и т. Д. c. Каждый отель переходит по новой ссылке, и категории доступны в двух разных классах для каждого отеля.
Я использовал веб-драйвер селена и красивый суп, но мои результаты не верны, а также не получается получить класс (сообщение об ошибке: Сообщение: невозможно найти элемент: // span [@class = 'bui-badge bh тип собственности bh-property-type - constructive-dark '])
Класс 1 на booking.com
Класс 2 на booking.com
#Importing necessary library
from selenium import webdriver
from bs4 import BeautifulSoup
from selenium.webdriver.firefox.options import Options
from webdriver_manager.chrome import ChromeDriverManager
import pandas as pd
import time
import re
import requests
from PIL import Image
import requests
from io import BytesIO
import matplotlib.pyplot as plt
from bs4 import BeautifulSoup
from itertools import zip_longest
from itertools import zip_longest
from webdriver_manager.chrome import ChromeDriverManager
from selenium import webdriver
from fake_useragent import UserAgent
useragent = UserAgent()
profile = webdriver.FirefoxProfile()
profile.set_preference("general.useragent.override", useragent.random)
#driver = webdriver.Chrome(ChromeDriverManager().install())
driver = webdriver.Firefox(firefox_profile=profile)
names = []
links = []
driver.get("https://www.booking.com/searchresults.en-gb.html?label=gen173nr-1DCAEoggI46AdIM1gEaK4BiAEBmAEJuAEXyAEP2AED6AEBiAIBqAIDuALAlIX0BcACAQ&lang=en-gb&sid=643f8d88e23b09ce396d7959aaad4b9e&sb=1&sb_lp=1&src=index&src_elem=sb&error_url=https%3A%2F%2Fwww.booking.com%2Findex.en-gb.html%3Flabel%3Dgen173nr-1DCAEoggI46AdIM1gEaK4BiAEBmAEJuAEXyAEP2AED6AEBiAIBqAIDuALAlIX0BcACAQ%3Bsid%3D643f8d88e23b09ce396d7959aaad4b9e%3Bsb_price_type%3Dtotal%26%3B&ss=Auckland&is_ski_area=0&ssne=Auckland&ssne_untouched=Auckland&dest_id=-1506909&dest_type=city&checkin_year=2020&checkin_month=7&checkin_monthday=1&checkout_year=2020&checkout_month=7&checkout_monthday=15&group_adults=2&group_children=0&no_rooms=1&b_h4u_keep_filters=&from_sf=1")
time.sleep(5)
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
#Getting the hotel name
for item in soup.findAll('span', {'class': 'sr-hotel__name'}):
names.append(item.get_text(strip=True))
#Getting the link of each hotel
for item in soup.findAll("a", {'class': 'hotel_name_link url'}):
item = item.get("href").strip("\n")
links.append(f"https://www.booking.com{item}")
final = []
for item in zip_longest(names, links):
final.append(item)
df5 = pd.DataFrame(
final, columns=['Names', 'links'])
#Getting the hotel category by opening each hotel link
category = []
for item in df5['links']:
driver.get(item)
time.sleep(2)
# Extracting from class 1
try:
job_title = driver.find_element_by_xpath("//span[@class = 'hp__hotel-type-badge']").text
category.append(job_title)
# Extracting from class 2
except:
job_title = driver.find_element_by_xpath("//span[@class = 'bui-badge bh-property-type bh-property-type--constructive-dark']").text
category.append(job_title)
Я пытался извлечь названия категорий за последние два дня, но не удачные. Пожалуйста, помогите.