Python 使用selenium获取数据并将其添加到字典中,以便在数据帧中使用
我一直在尝试使用selenium从twitter上获取推文。我已经成功地获得了我想要的html并将其打印出来,但是我在获取适合用于数据帧的表单方面遇到了麻烦 这是我的密码: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
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', ...}