使用Python Selenium Chrome驱动程序点击Zomato上的元素
问题描述:
我想收集所有来自Zomato的评论提交时间。不是来自“热门”选项卡的选项,而是来自“所有评论”选项卡的选项。使用Python Selenium Chrome驱动程序点击Zomato上的元素
对于我来说,我必须点击“所有评论”选项卡,但我很难做到这一点,我的代码不断从“热门”标签打印出来。
输出:
- 25天以前
- 一个月前
- 一个月前
- 2个月前
- 2个月前
- 2个月前
预计O本安输出:
- 昨天
- 3天前
- 3天前
- 12天以前
- 13天前
注:输出显示从当天的代码的结果这个问题已发布。
from selenium import webdriver
import os
chromeDriver = "....\\chromedriver"
URL = "https://www.zomato.com/cebu/the-pyramid-lahug-cebu-city"
os.environ["webdriver.chrome.driver"] = chromeDriver
driver = webdriver.Chrome(chromeDriver)
driver.get(URL)
driver.find_elements_by_xpath("//a[@data-sort='reviews-dd']")[0].click()
timeList = driver.find_elements_by_tag_name('time')
for time in timeList:
print(time.text)
driver.quit()
答
尝试这段代码可能是它的工作。
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
browser=webdriver.Chrome()
browser.maximize_window()
browser.get("https://www.zomato.com/cebu/the-pyramid-lahug-cebu-city")
delay=15
#browser.execute_script("window.scrollTo(0,document.body.scrollHeight/2)")
time.sleep(2)
element = WebDriverWait(browser, delay).until(EC.presence_of_element_located((By.XPATH, ".//*[@id='selectors']/a[2]")))
element.click()
element = WebDriverWait(browser, delay).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".item.default-section-title.everyone.empty")))
element.click()
print "click done"
time= WebDriverWait(browser, delay).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".grey-text>time")))
for i in time:
print i.text
browser.quit()
+0
您输出的原因是您的页面没有滚动。 – Sachhya
你应该发布一个最简单的例子,可以很容易地被每个人复制。这有助于您快速了解您的问题。 – Heyji