Python中的Twitter抓取

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

我必须从2018年1月开始从Twitter抓取特定用户(@salvinimi)的推文。问题是在这段时间内有很多推文,因此我无法抓取我所有的推文。需要!我尝试了多种解决方案:

1)

pip install twitterscraper
from twitterscraper import query_tweets_from_user as qtfu
tweets = qtfu(user='matteosalvinimi')

通过这种方法,我只得到了几条teets(或多或少了500〜600个),而不是所有的tweets ...你知道为什么吗?

2)

!pip install twitter_scraper
from twitter_scraper import get_tweets
tweets = []
for i in get_tweets('matteosalvinimi', pages=100):
    tweets.append(i)

使用此方法,我收到一个错误->“ ParserError:文档为空” ...如果设置“ pages = 40”,我得到的推文没有错误,但不是全部。你知道为什么吗?

python web-scraping twitter
1个回答
1
投票

遇到的第一个问题的三件事:

  • 首先,每个API都有其限制,如果用户要求的数量超出限制,则希望像Twitter这样的API能够监视其使用并最终阻止用户检索数据。试图克服API的局限性可能不是最好的主意,并且可能会导致其被禁止访问该网站或其他事物(我在这里猜测是因为我不知道Twitter对此有何政策)。也就是说,您正在使用的库中的documentation状态:

    使用Twitter的Search API,您每15分钟只能发送180个请求。每个请求最多可以发送100条推文,这意味着您每小时可以挖掘4 x 180 x 100 = 72.000条推文。通过使用TwitterScraper,您不受此数量的限制,但不受Internet速度/带宽和您愿意启动的TwitterScraper实例数量的限制。

  • 然后,您正在使用的函数,query_tweets_from_user()具有一个limit参数,您可以将其设置为整数。您可以尝试做的一件事就是更改该参数,然后查看您是否获得了想要的东西。

  • 最后,如果上述方法不起作用,则可以根据需要将时间范围分为两个,三个或更多子集,然后分别收集数据,然后将它们合并在一起。


您提到的第二个问题可能是由于许多不同的原因,所以在这里我仅作一个广泛的猜测。对我而言,要么设置pages=100太高,要么以某种方式使程序或API无法检索数据,或者当您要查看的页面少于一百页时,您正在尝试查看一百页寻找现实,这导致程序尝试解析一个空文档。

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