Python Selenium滚动到底部Google相册

时间:2016-12-13 01:13:31

标签: python selenium selenium-webdriver web-scraping

我正在尝试使用Google相册幻灯片制作一个Raspberry Pi动力数码相册。理想情况下,我希望能够通过Selenium自动执行登录过程,然后使用BeautifulSoup解析每个图像的唯一URL的html源。

谷歌照片似乎一次加载〜12张图片(可能更多/更少基于图片方向),这使得获取所有图片网址的列表更加困难。

我试图使用以下内容的变体来滚动图像的加载:

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

不幸的是,该代码不会导致FireFox滚动。任何指针都将非常感激。我已将我的混淆代码包含在内以供审核:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from bs4 import BeautifulSoup

driver = webdriver.Firefox()
# print(driver.current_url)
driver.get('https://accounts.google.com/ServiceLogin? sacu=1&continue=https%3A%2F%2Fphotos.google.com%2Flogin&hl=en#identifier')
# print(driver.current_url)
elem = driver.find_element_by_name('Email')
elem.send_keys('******')
elem.send_keys(Keys.ENTER)
time.sleep(5)
elem = driver.find_element_by_name('Passwd')
elem.send_keys('******')
elem.send_keys(Keys.ENTER)
time.sleep(10)
driver.get('direct link to shared album')
time.sleep(5)
driver.execute_script("window.scrollBy(0,   document.body.scrollHeight);")

2 个答案:

答案 0 :(得分:1)

正如@ Y-B原因所述,您可以尝试Keys来解决您的问题:

from selenium.webdriver.common.keys import Keys

driver.switch_to_active_element().send_keys(Keys.PAGE_DOWN)

答案 1 :(得分:1)

在这种特殊情况下,要求$.ajaxSetup({async: false}); $.ajax({ type: "POST", async: "false", url: "checkpass.php", data: "password="+password, success: function(html) { var arr=$.parseJSON(html); if(arr == "Successful") { return true; } else { return false; } } }); $.ajaxSetup({async: true}); 切换到“活动元素”。产生了不良后果。当我发送driver密钥时,什么都不会发生。当我要求PAGE_DOWN按标签名称查找元素时,实现了此问题的解决方案。我能够指定我想要选择网站的Selenium,然后发送body密钥。解决方案如下所示。

PAGE_DOWN