使用以下参数使用Tweepy、GetOldTweets3和Twitter搜索时:
对于每一种搜索方法,Tweets的数量是不同的。Tweepy,使用全存档搜索,返回12条微博。GetOldTweets3返回22条微博。并使用Twitter高级搜索返回3条微博。有什么原因造成不同数量的推特吗?
发布于 2019-12-27 03:19:55
Twitter通过其网站进行搜索的运营商与其API不同。
在Twitter上搜索“事故: TX达拉斯,自2018-01-01到:2018-01-02”,结果为22条微博。如果你只看最上面的,只有3,是的,但你可以看到他们所有的点击最新的标签。这个查询使用的near操作符似乎在任何地方都没有显式记录,因此不清楚它到底是如何工作的。事实上,位置/位置似乎不再是高级搜索UI的一部分了。从历史上看,这似乎是通过搜索指定位置的半径(如果没有设置within操作符,搜索半径为15英里)来实现的。
当前的分支/API.search_full_archive(我假设您使用的是这个分支/ Twitter优质搜索API )使用的是Twitter优质搜索API的完整存档端点。实际上,像api.search_full_archive("Environment_Name", "Accident place:Dallas,TX", fromDate=201801010000, toDate=201801020000)这样的东西会返回12条微博。但是,这使用的是文档化的place 高级搜索算子,它具有特定的定义行为:
匹配标记为指定位置或Twitter位置ID的Tweets
这意味着它将只返回被标记为特定位置的Tweets,而不是包含在某个半径范围内的其他位置。奇怪的是,这些结果实际上包括了两个推特,网站的搜索错过了,似乎没有返回的位置搜索。这可能是由于Twitter的搜索策略,但也很难确定确切原因,因为Twitter的网站搜索没有文档化,而且有点像黑匣子。
如果要使用为搜索指定一组坐标和半径,可以使用point_radius高级搜索操作符。使用Tweepy的方法 (使用Twitter的获取geo/搜索端点 )和对“达拉斯,TX”的查询(代表达拉斯的放置对象 ),TX指定了[-96.7301749064317, 32.819858499999995]的质心。不能保证这些是Twitter的网站搜索使用的坐标,但通过一些测试,使用这些坐标与point_radius一起使用,返回与网站搜索结果匹配的准确结果的半径似乎在17到18英里之间。半径为17.5英里,离普莱诺只有3条额外的推特。
GetOldTweets3不使用Twitter的API,而是直接擦拭站点。这不应该被认为是可靠的,并且是反对Twitter的服务条款的。
未经Twitter事先同意,明确禁止刮除服务
如果您希望获得最准确和定义的结果,则应该使用Twitter的API。如果您想以编程方式检索这些结果而不违反Twitter的TOS,这是唯一有效的方法。您的按位置搜索的选项要么是根据名称或Twitter位置ID、坐标和半径,要么是使用place、point_radius或bounding_box高级搜索运算符的边界框进行的。请注意,由于某些原因,正如这2条推文所展示的,某些Tweets可能只能通过特定的位置而不是区域找到。
https://stackoverflow.com/questions/59493856
复制相似问题