python - 如何向下滚动 Twitter 页面以加载下一页并提取数据
问题描述
我正在尝试向下滚动关于 Twitter 状态的评论,尝试提取包含所有评论的页面(或至少前 5 页)。使用 selenium 驱动程序,但滚动部分不成功,所以我必须手动进行并提取。我正在使用 python 3.6.5 请帮助...
例如对于这条推文 - https://twitter.com/TeamYouTube/status/1012415985184206848 谁能帮我写代码..
我的代码:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome(executable_path="...../chromedriver")
driver.get('https://twitter.com/TeamYouTube/status/1012415985184206848')
for i in range(1,10):
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(3)
ip = input("Enter y to proceed: ")
if(ip == 'y'):
page = driver.page_source
filename = input('Enter file name : ')
path = 'D:/page_'+filename+'.html'
f = open(path,'w',encoding='utf-8')
f.write(page)
f.close()
driver.close()
解决方案
尝试这个:
driver.execute_script("arguments[0].scrollTo(0, document.body.scrollHeight);", driver.findElement(By.id("#permalink-overlay-dialog")));
说明:您必须滚动特定的div
. 为了能够做到这一点,你必须在页面上找到这个元素并且滚动到页面末尾只有这个元素。
第二个建议是使用:
from selenium.webdriver.common.keys import Keys
# locate element and simulate 'END' button press
driver.find_element_by_id("permalink-overlay-dialog").send_keys(Keys.END)
如果 ot 不起作用,请尝试使用 ActionChains 进行扩展:
from selenium.webdriver.common.action_chains import ActionChains
element = driver.find_element_by_id("permalink-overlay-dialog")
action = ActionChains(driver)
action.move_to_element(element).perform()
element.send_keys(Keys.END)
推荐阅读
- node.js - Hapi 未知认证策略 jwt
- c# - C# 构造函数由于另一个构造函数而中断
- java - 读取包含无符号数的二进制流
- python - Airflow - 为 DockerOperator 获取并清理 run_id
- pycharm - 如何为 pycharm 和 spyder 设置站点包目录?
- python - 如何从下一个名称中减去存储在 python 列表中的列名?
- vba - 在 Access CSV 导出顶部附加其他行
- javascript - 多个地址自动完成字段?(#Google Places API & getElementById #)
- deep-learning - 如何在 Pytorch 中分别连接两个大小为 [B,C,13,18] 和 [B,C,14,18] 的张量?
- java - 如何模拟任务:Spring中的执行者