python - 使用 selenium 抓取数据并将其添加到字典中以在数据框中使用

标签 python selenium twitter

我一直在尝试使用 selenium 从 Twitter 上获取推文。我已经成功地获取了我想要的 html 并打印它,但是我在进入适合用于数据框的表单时遇到了麻烦。

这是我的代码:

import time
import pandas as pd
import numpy as np

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

browser = webdriver.Chrome()
url = 'https://twitter.com/search?f=tweets&q=cuomosmta%20since%3A2016-08-22%20until%3A2018-08-22'

browser.get(url)
time.sleep(1)

tweet_dict = {}

tweets = browser.find_elements_by_class_name('tweet-text')

for tweet in tweets:
    print(tweet.text)
    tweet_dict['tweet'] = tweet.text

如果您运行代码,您将看到它打印每条单独的推文。我这样做是为了确保代码正常工作。

但由于某种原因,当我检查字典时,我的输出来自:

tweet_dic['tweet']

是:

'Ugh, Cuomo and #CuomosMTA are terrible, just terrible.'

上面的输出也是我试图抓取的页面上的最后一条推文。

我已经尝试过多种方法,甚至尝试过 BeautifulSoup,但由于某种原因,我一直得到相同的结果。

我不明白为什么我能够打印所有推文但不能将它们附加到字典中。

我是初学者,可能错过了一些非常明显的东西,因此我们将不胜感激。

请,如果可能的话,我尝试只使用selenium,因为它比beautifulsoup中更容易获取准确的时间戳。

谢谢!

最佳答案

字典应该只包含唯一的键,因此您只需覆盖相同的键值对,而不是在循环中附加每条推文。您可以尝试以下解决方案:

for tweet in range(len(tweets)):
    print(tweets[tweet].text)
    tweet_dict['tweet_%s' % tweet] = tweets[tweet].text

输出应为

{'tweet_0': 'first tweet content', 'tweet_1': 'second tweet content', ...}

关于python - 使用 selenium 抓取数据并将其添加到字典中以在数据框中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52087684/

相关文章:

objective-c - 解析 Twitter 获取状态 Objective C

python - 在python中使用selenium从特定的td标签中查找tr标签的索引

java - twitter4j result.nextQuery() 总是给我 null

python - VCF 解析和插入数据库速度慢

selenium - 如何在XPath中选择一个空元素?

ruby-on-rails-3 - selenium webdriver 2.25.0 支持的火狐版本

ruby - 使用 Selenium 2 设置用户代理

java - 显示 Twitter 流时阻止 twitter4j 打印输出

python - 使用 Excel 文件从 URL 的特定工作簿下载数据

python - 多语言日期时间文本到标准日期格式