如何运行硒后从Twitter检索数据

问题描述 投票:0回答:1

我正在尝试使用Python在Twitter上进行情感分析。这是我的代码

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
browser = webdriver.Chrome()
base_url = u'htttps://twitter.com/search?q='
query = u'seattlepacificuniversity'
url = base_url + query
browser = webdriver.Chrome()
browser.get(url)
time.sleep(1)
body = browser.find_elements_by_tag_name('body')
for _ in range(100):
   body.send.keys(Keys.PAGE_DONW)
   time.sleep(0.2)
tweets = browse.find_elements_by_class_name('tweet-text')
for tweet in tweets:
    print(tweet.text)

问题是运行代码后,弹出了2个新窗口-一个带有seattlepacificuniversity标签的窗口,另一个带有名为“ data”的窗口,其中只有空格,错误为“ Chrome正在由自动化软件控制”。如何只检索推文以进行进一步的清理和分析步骤。

对不起,我对Python世界还很陌生

python selenium twitter
1个回答
0
投票

我已对下面的代码进行了一些更正。我不知道这最终是否会按照您的意图进行,但是它正在做的是进行大量的分页阅读,然后查找所有tweet并遍历它们,从每个tweet中打印文本。如果这不能完全产生所需的结果,但是您现在可以使用,则可能需要对代码进行更多的调整。

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
browser = webdriver.Chrome()
base_url = u'https://twitter.com/search?q='
query = u'seattlepacificuniversity'
url = base_url + query
browser.get(url)
time.sleep(1)
body = browser.find_element_by_tag_name('body')
for _ in range(100):
   body.send_keys(Keys.PAGE_DOWN)
   time.sleep(0.2)

tweets = browser.find_elements_by_css_selector("[data-testid=\"tweet\"]")

for tweet in tweets:
    print(tweet.text)

之所以打开第二个浏览器是因为您在下面有第二行:

browser = webdriver.Chrome()

为回答您关于收集所有tweet和打印文本的问题,我在下面做了一些代码更改。

for _ in range(16):
    tweets.extend(browser.find_elements_by_css_selector("[data-testid=\"tweet\"]"))
    body.send_keys(Keys.PAGE_DOWN)
    time.sleep(1)

tweets = list(dict.fromkeys(tweets))  # removes duplicates

for tweet in tweets:
    print(tweet.text)

由于DOM在每页向下时都加载了一组不同的tweet,因此我需要在每页向下之后收集这些tweet并将它们存储在列表中。在完成整个页面的循环之后,我删除了列表中所有重复的tweet,然后对其进行遍历以打印文本。*注意:我将for循环更改为仅执行16次,因为在执行此操作时,这是所需的最大页面下移次数。理想情况下,您需要执行while循环,然后找到一种方法来确定何时到达终点,然后退出循环。

© www.soinside.com 2019 - 2024. All rights reserved.