使用硒抓取数据并将其添加到字典中以便在数据框中使用

时间:2018-08-30 00:22:59

标签: python selenium twitter

我一直在尝试使用硒从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']

是:

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

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

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

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

我是一个初学者,可能缺少一些非常明显的东西,因此将不胜感激。

请,如果可能的话,我尝试仅使用硒,因为比起beautifulsoup,它更容易掌握确切的时间戳。

谢谢!

1 个答案:

答案 0 :(得分:1)

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

var system = [
   ['08-30-2018', 'in'],
   ['08-29-2018', 'out'],
   ['08-28-2018', 'in'],
   ['08-27-2018', 'in']
];

输出应为

array.push