Tweepy全归档搜索,Twitter高级搜索和GetOldTweets3返回不同数量的Tweets

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

[使用以下参数使用Tweepy,GetOldTweets3和Twitter高级搜索时:

  • 查询:“事故”
  • 地点:“德克萨斯州达拉斯”
  • 自:“ 2018/1/1”
  • 直到:“ 2018/1/2”

每种搜索方法的推文数量都不同。 Tweepy使用完全存档搜索返回12条Tweets。 GetOldTweets3返回22个Tweets。并使用Twitter高级搜索返回3条推文。发出不同数量的推文是否有原因?

python twitter tweepy
1个回答
0
投票

Twitter通过其网站进行的搜索与其API使用不同的运算符。

Searching "Accident near:Dallas,TX since:2018-01-01 until:2018-01-02" on Twitter itself,产生22条推文。如果只查看排名靠前的,则只有3个,是的,但是您可以通过单击“最新”选项卡查看所有这些。该查询使用的near运算符似乎在任何地方都没有明确记录,因此尚不清楚它的工作原理。实际上,位置/地点似乎不再是Advanced Search UI的一部分。从历史上看,这似乎是通过在指定位置的半径(如果未设置within运算符的情况下默认为15英里)内搜索来实现的。

当前分支/ PR for Tweepy adding API.search_full_archive,这是我假设您正在使用的,使用API.search_full_archive的完整归档端点。实际上,Twitter's premium search APIs之类的东西确实会返回12条推文。但是,这是使用文档api.search_full_archive("Environment_Name", "Accident place:Dallas,TX", fromDate=201801010000, toDate=201801020000) place,它具有特定的定义行为:

匹配标记有指定位置或Twitter场所ID的推文

这意味着它将仅返回专门标记有该位置的推文,而不是包含特定半径范围内的其他位置。奇怪的是,这些结果实际上包含2条Tweet,这些Tweets会使网站的搜索丢失,并且似乎不会因位置搜索而返回。这可能是由于premium search operator造成的,但是由于Twitter的网站搜索没有记录在案,而且有点像黑匣子,因此很难确定确切原因。

[如果您想使用高级搜索API为搜索指定一组坐标和半径,则可以使用Twitter's search policies高级搜索运算符。使用Tweepy的point_radius(使用Twitter API的API.geo_search method)和对“ Dallas,TX”的查询,返回的API.geo_search代表德克萨斯州的达拉斯,指定了一个重心GET geo/search endpoint。不能保证这些是Twitter网站搜索所使用的坐标,但是经过一些测试,将这些坐标与Place object一起使用时,将返回与网站搜索结果匹配的精确结果的半径似乎在17到18英里之间。半径为17.5英里,普莱诺(Plano)只有3条额外的推文。

GetOldTweets3不使用Twitter的API,而是直接抓取该网站。这不应被认为是可靠的,并且违反了[-96.7301749064317, 32.819858499999995]

明确禁止未经Twitter事先同意而刮擦服务

如果要获得最准确和定义明确的结果,则应使用Twitter的API。如果您想以编程方式检索这些结果而不违反Twitter的TOS,则这是唯一有效的方法。您可以按位置搜索的选项分别是按名称或Twitter场所ID,坐标和半径或边界框,分别使用point_radiusTwitter's Terms of Serviceplace高级搜索运算符。请注意,由于某些原因,正如其他2条Tweet所示,某些Tweets可能只能通过特定位置而非区域找到。

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