Я изучаю очистку веб-страниц, поскольку я собираю реальные данные с реальных веб-сайтов. Тем не менее, я никогда не сталкивался с такими проблемами до сих пор. Обычно можно искать нужные исходные коды HTML, щелкнув правой кнопкой мыши часть веб-сайтов и выбрав опцию проверки. Я сразу же перейду к примеру, чтобы объяснить проблему.
Из рисунка выше выделенный красным цветом класс span не существует изначальноно когда я ставлю (даже не щелкаю) курсор на имени пользователя, появляется небольшое окно для этого пользователя, а также появляется этот класс span. В конечном итоге я хочу очистить адрес ссылки для профиля пользователя, который встроен в этот класс span. Я не уверен, но если я смогу проанализировать этот класс span, я думаю, что я могу попытаться очистить адрес ссылки, но я продолжаюне удалось разобрать этот скрытый класс span.
Я не ожидал такого многого, но мои коды, конечно, дали мне пустой список, потому что этот класс span не отображался, когда моего курсора не было на имени пользователя. Но я показываю свой код, чтобы показать, что я сделал.
from bs4 import BeautifulSoup
from selenium import webdriver
#Incognito Mode
option=webdriver.ChromeOptions()
option.add_argument("--incognito")
#Open Chrome
driver=webdriver.Chrome(executable_path="C:/Users/chromedriver.exe",options=option)
driver.get("https://www.tripadvisor.com/VacationRentalReview-g60742-d7951369-or20-Groove_Stone_Getaway-Asheville_North_Carolina.html")
time.sleep(3)
#parse html
html =driver.page_source
soup=BeautifulSoup(html,"html.parser")
hidden=soup.find_all("span", class_="ui_overlay ui_popover arrow_left")
print (hidden)
Существуют ли какие-либо простые и интуитивно понятные способы анализа этого скрытого класса диапазона с использованием селена? Если я могу разобрать его, я могу использовать функцию «найти», чтобы проанализировать адрес ссылки для пользователя, а затем перебрать всех пользователей, чтобы получить все адреса ссылки. Спасибо.
======================= обновил вопрос, добавив ниже ===================
Чтобы добавить более подробные объяснения того, что я хочу получить, я хочу получить ссылку, которая указана красной стрелкой на изображении ниже. Спасибо, что указали, что мне нужны дополнительные объяснения.
========================== обновленный код до сих пор =====================
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.support import expected_conditions as EC
#Incognito Mode
option=webdriver.ChromeOptions()
option.add_argument("--incognito")
#Open Chrome
driver=webdriver.Chrome(executable_path="C:/Users/chromedriver.exe",options=option)
driver.get("https://www.tripadvisor.com/VacationRentalReview-g60742-d7951369-or20-Groove_Stone_Getaway-Asheville_North_Carolina.html")
time.sleep(3)
profile=driver.find_element_by_xpath("//div[@class='mainContent']")
profile_pic=profile.find_element_by_xpath("//div[@class='ui_avatar large']")
ActionChains(driver).move_to_element(profile_pic).perform()
ActionChains(driver).move_to_element(profile_pic).click().perform()
#So far I could successfully hover over the first user. A few issues occur after this line.
#The error message says "type object 'By' has no attribute 'xpath'". I thought this would work since I searched on the internet how to enable this function.
waiting=wait(driver, 5).until(EC.element_to_be_clickable((By.xpath,('//span//a[contains(@href,"/Profile/")]'))))
#This gives me also a error message saying that "unable to locate the element".
#Some of the ways to code in Python and Java were different so I searched how to get the value of the xpath which contains "/Profile/" but gives me an error.
profile_box=driver.find_element_by_xpath('//span//a[contains(@href,"/Profile/")]').get_attribute("href")
print (profile_box)
Также есть ли способ переборачерез xpath в этом случае?