做一个循环,每次迭代滚动到列表中最后一个“review”的视图(对我有用):from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("https://www.google.com/search?q=a1%20plumbing%20boise&gws_rd=ssl#gws_rd=ssl&lrd=0x54aeff4cb0b24461:0x23720b81e2bed658,1")
# wait for reviews to appear
wait = WebDriverWait(driver, 10)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "span.review-snippet")))
while True:
reviews = driver.find_elements_by_css_selector("div._ju")
driver.execute_script("arguments[0].scrollIntoView();", reviews[-1])
注意这里的循环是无止境的-您需要弄清楚如何退出循环。例如,您可以统计滚动到视图前后的评论数,如果没有加载更多的评论,则退出循环。或者,你可以检查旋转圈是否存在。一旦它没有显示在滚动-这意味着没有更多的评论加载左边。在
这里有一个方法可以检测到没有更多的评论可以加载-检查下一次滚动后评论对话框的滚动高度是否没有改变-这与人类检测它的方式很接近:
^{pr2}$
我不喜欢这里有time.sleep(),希望你有更好的主意来解决这个问题。在