我正在尝试使用硒向下滚动谷歌地图页面,但无法这样做。我已经尝试过这里写的所有内容: 使用 selenium python 向下滚动谷歌地图网页
这是我的代码:
def scroll(self):
SCROLL_PAUSE_TIME = 5
# Get scroll height
last_height = self.execute_script("return document.body.scrollHeight")
number = 0
while True:
number = number+1
# Scroll down to bottom
ele = self.find_element_by_css_selector('div[jstcache="211"]')
print(ele)
self.execute_script('arguments[0].scrollBy(0, 500)', ele)
# Wait to load page
time.sleep(SCROLL_PAUSE_TIME)
# Calculate new scroll height and compare with last scroll height
print(f'last height: {last_height}')
ele = self.find_element_by_css_selector('div[jstcache="211"]')
new_height = self.execute_script("return arguments[0].scrollHeight", ele)
print(f'new height: {new_height}')
if number == 5:
break
if new_height == last_height:
break
print('cont')
last_height = new_height
但不知道如何向下滚动。
请帮忙!!
其他答案对我不起作用,所以这就是我想出的。
divSideBar=driver.find_element(By.CSS_SELECTOR,f"div[aria-label='Results for {query}']")
keepScrolling=True
while(keepScrolling):
divSideBar.send_keys(Keys.PAGE_DOWN)
time.sleep(0.5)
divSideBar.send_keys(Keys.PAGE_DOWN)
time.sleep(0.5)
html =driver.find_element(By.TAG_NAME, "html").get_attribute('outerHTML')
if(html.find("You've reached the end of the list.")!=-1):
keepScrolling=False
对我有用的解决方案是:
def scroll(self):
for i in range(6,25,3):
last_review = self.find_elements_by_css_selector('div[jstcache="192"]')
self.execute_script('arguments[0].scrollIntoView(true);', last_review[i])
time.sleep(5)
其背后的想法是,每次获取所有业务框并滚动到视图中的最后一个,然后等待,再次获取,再次滚动到视图中,依此类推。
进入网站后,您很可能会打开侧面板。通过单击屏幕中心一次通过 selenium 来关闭它。然后将箭头键发送到地图元素。
from selenium.webdriver.common.keys import Keys
driver.find_element(BY.CLASS, "dmCR2e widget-scene").click()
driver.find_element(BY.CLASS, "dmCR2e widget-scene").send_keys(Keys.ARROW_DOWN)
#ARROW_UP ARROW_RIGHT ARROW_LEFT
我使用了相同的代码,您可以通过删除以下行来修复它:)
if number == 5:
break
这个解决方案对我有用
sidebar_div=driver.find_element(By.XPATH,'//*[@class="TFQHme "]')
sidebar_div.click()
no_scroll=3 # how many times do you want to scroll
for page_down in range(0,no_scroll):
ele = driver.find_element(By.XPATH,'//*[@id="QA0Szd"]/div/div/div[1]/div[2]/div/div[1]/div/div/div[2]/div[1]')
driver.execute_script('arguments[0].scrollBy(0, 5000);', ele)
time.sleep(2)
我遭受了很多痛苦,然后我从一个随机的 YouTube 家伙那里找到了解决方案。频道名称:使用 Python 自动化:我的问题已通过执行以下操作得到解决: 将类名相应替换为您的位置: 结果 = driver.find_elements(By.CLASS_NAME, 'hfpxzc') driver.execute_script("返回参数[0].scrollIntoView();", 结果[-1])