用硒删除Twitter转推

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

[因此,我正在尝试使用Selenium来擦除给定Tweet的Twitter Retweets。我知道我可以使用Twitter API中的GetRetweeters()来获取最后100个,但是我偶尔想超过该限制,因此我尝试采取一种解决方法。

我的代码在下面,问题如下。有时,当我运行它时,我会得到所有结果(在本示例中为12),并且效果很好。通常,它可能返回结果的一半(六或七个),偶尔不返回任何结果。我每次都运行完全相同的代码。

[具有更大的推文,其中有数百个转发,我从来没有回来超过8个。

Chromedriver运行正常,BeautifulSoup似乎返回了整个页面。发生了什么事?

谢谢!

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
options.add_argument('--incognito')
options.add_argument('--headless')
driver = webdriver.Chrome("chromedriver", options=options)
driver.get("https://twitter.com/TwitterMoments/status/1271665166216646661/retweets/without_comments")
page_source = driver.page_source

from bs4 import BeautifulSoup

soup = BeautifulSoup(page_source, "html.parser")

mydivs = soup.find_all('div', {'class':'css-901oao css-bfa6kz r-1re7ezh r-18u37iz r-1qd0xha r-a023e6 r-16dba41 r-ad9z0x r-bcqeeo r-qvutc0'})
retweeters = []
for item in mydivs:
    retweeter = item.get_text()
    retweeters.append(retweeter)
print(retweeters)

python selenium twitter beautifulsoup
1个回答
0
投票

正如您所说,该代码有时可以正常工作。整个页面/所有转发可能尚未完全加载。您可以尝试的是

import time

然后告诉您的脚本稍等一会儿再抓取转发。这可能会有所帮助,以便在尝试抓取其全部功能之前可以加载其完整功能。如果可行,我建议您使用隐式等待而不是显式等待,因为这样做效率更高。

这通常对我来说对Selenium有用,但是我不知道这是否对bs4有用,或者您不应该将其合并到脚本中,但是您总是可以尝试一些方法。

This question也许也可以为您提供帮助。

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