Python 使用selenium获取数据并将其添加到字典中,以便在数据帧中使用

Python 使用selenium获取数据并将其添加到字典中,以便在数据帧中使用,python,selenium,twitter,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.b

我一直在尝试使用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。我这样做是为了确保代码正常工作

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

tweet_dic['tweet']
是:

上面的输出也是我正在抓取的页面上的最后一条推文

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

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

我是一个初学者,可能错过了一些非常明显的,所以任何帮助将不胜感激

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


谢谢大家!

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

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', ...}

非常感谢你。我唯一的问题是['tweet\%s'%tweet]实际上是什么意思。如果你能告诉我这一点,我会非常感激。这是Python中字符串连接的工作方式:
%s
是一个字符串占位符,意味着它将被实际字符串值替换<代码>%tweet是您传递的内容,而不是占位符。您还可以将更多子字符串传递为
“这里有%s和%s”%(“第一”、“第二”)
,这样它将被执行为
“fere comes first and second”
@agra94您可以/如果解决了您的问题的答案/是有用的,当然,对不起。直到今天我才能够投票,因为我没有足够的声誉。
{'tweet_0': 'first tweet content', 'tweet_1': 'second tweet content', ...}