【发布时间】:2019-10-25 01:01:41
【问题描述】:
我尝试为每条评论单击“更多”按钮,以便将这些文本评论扩展到完整内容,然后尝试抓取这些文本评论。没有点击“更多”按钮,我最终检索到的是类似
“这个房间很干净。位置很好”。
我尝试了一些不同的功能来解决这个问题,例如 selenium 按钮单击和 ActionChain,但我想我没有正确使用这些功能。有人可以帮我解决这个问题吗?
以下是我当前的代码: 我没有上传整个代码以避免一些不必要的输出(试图使其简单)。
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver import ActionChains
#Incognito Mode
option=webdriver.ChromeOptions()
option.add_argument("--incognito")
#Open Chrome
driver=webdriver.Chrome(executable_path="C:/Users/chromedriver.exe",chrome_options=option)
#url I want to visit.
lists=['https://www.tripadvisor.com/VacationRentalReview-g30196-d6386734-Hot_51st_St_Walk_to_Mueller_2BDR_Modern_sleeps_7-Austin_Texas.html']
for k in lists:
driver.get(k)
html =driver.page_source
soup=BeautifulSoup(html,"html.parser")
time.sleep(3)
listing=soup.find_all("div", class_="review-container")
for i in range(len(listing)):
try:
#First, I tried this but didn't work.
#link = driver.find_element_by_link_text('More')
#driver.execute_script("arguments[0].click();", link)
#Second, I tried ActionaChains but didn't work.
ActionChains(driver).move_to_element(i).click().perform()
except:
pass
text_review=soup.find_all("div", class_="prw_rup prw_reviews_text_summary_hsx")
text_review_inside=text_review[i].find("p", class_="partial_entry")
review_text=text_review_inside.text
print (review_text)
【问题讨论】:
-
你在所有这些代码中最大的错误是
except: pass。没有这个,你很久以前就可以解决问题。代码引发包含所有信息的错误消息,但您看不到它。
标签: python selenium button click