我一直在尝试使用硒从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,但是由于某种原因,我一直得到相同的结果。
我不明白为什么我可以打印所有推文,但不能将它们附加到字典中。
我是一个初学者,可能会缺少一些非常明显的东西,因此我们将不胜感激。
请,如果可能的话,我正在尝试仅使用硒,因为它比在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', ...}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句