以 JSON 格式获取 Twitter 订阅源,无需身份验证

     2023-02-25     255

关键词:

【中文标题】以 JSON 格式获取 Twitter 订阅源,无需身份验证【英文标题】:Get Twitter Feed as JSON without authentication 【发布时间】:2012-11-07 09:41:12 【问题描述】:

几年前我写了一个小的 JavaScript,它抓取了用户(我的)最近的一条推文,然后将其解析出来以显示,包括链接、日期等。

它使用这个 json 调用来检索推文,但它不再起作用了。

http://twitter.com/statuses/user_timeline/radfan.json

它现在返回错误:

"errors":["message":"Sorry, that page does not exist","code":34]

我已经研究过使用 api 版本(代码如下),但这需要身份验证,我宁愿避免这样做,因为它只是在我的网站上显示我的最新推文,无论如何在我的个人资料页面上都是公开的:

http://api.twitter.com/1/statuses/radfan.json

我没有跟上 Twitter 的 API 更改,因为我不再真正使用它,有没有办法解决这个问题,还是不再可能?

【问题讨论】:

不能再这样做了。以下是现在的操作方法:***.com/questions/17049821/… @SimonBarker 可以使用 json 调用来检索推文。我刚刚发布了一个关于它的答案 【参考方案1】:

以前,Search API 是唯一不需要某种形式的 OAuth 的 Twitter API。现在它确实需要身份验证。

Twitter 的 Search API 是通过第三方收购获得的 - 他们很少支持它,而且似乎对它的存在不感兴趣。最重要的是,有效载荷有许多限制,包括但不限于 JSONXMLkey:value 对的严重减少/strong> 文件返回。

当我听到这句话时,我感到很震惊。我花了很长时间弄清楚如何使用最少的代码来执行一个简单的 GET 请求(例如显示时间线)。

我决定采用 OAuth 路线来确保相关的有效负载。您需要一种服务器端语言来执行此操作。 JavaScript 对最终用户可见,因此在 .js 文件中包含必要的 keyssecrets 是个坏主意。

我不想使用大型库,所以我的答案是 PHP 和 @Rivers 的答案 here 的帮助。 @lackovic10 下面的答案描述了如何在您的身份验证中包含查询。

我希望这可以帮助其他人节省思考如何使用 Twitter 的 API 和新的 OAuth 要求的时间。

【讨论】:

根据this page,现在连搜索方法都需要认证。 是的,没错。现在所有 Twitter API 都需要 OAuth。我的印象是,在 Ruby 上完成 OAuth 比在 PHP 上要容易得多,如果有人试图决定如何最好地处理它。【参考方案2】:

您无需登录即可通过高级搜索访问和抓取 Twitter:

https://twitter.com/search-advanced

GET 请求

执行基本搜索请求时,您会得到:

https://twitter.com/search?q=Babylon%205&src=typd
q(我们的查询编码) src(假设是查询的来源,即输入)

默认情况下,Twitter 返回前 25 个结果,但如果您点击 all你可以获得实时推文:

https://twitter.com/search?f=realtime&q=Babylon%205&src=typd

JSON 内容

更多推文通过 AJAX 加载到页面上:

https://twitter.com/i/search/timeline?f=realtime&q=Babylon%205&src=typd&include_available_features=1&include_entities=1&last_note_ts=85&max_position=TWEET-553069642609344512-553159310448918528-BD1UO2FFu9QAAAAAAAAETAAAAAcAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

使用max_position 请求下一条推文

下面的 json 数组返回所有你需要抓取的内容:

https://twitter.com/i/search/timeline?f=realtime&q=Babylon%205&src=typd
has_more_items (bool) items_html (html) max_position(键) refresh_cursor(键)

DOM 元素

这里有一个DOM elements 列表,您可以使用它来提取

作者推特句柄

div.original-tweet[data-tweet-id]   

作者姓名

div.original-tweet[data-name]

作者的用户ID

div.original-tweet[data-user-id]    

帖子的时间戳

span._timestamp[data-time]  

帖子的时间戳,以毫秒为单位

span._timestamp[data-time-ms]

推文文本

p.tweet-text
 

转发次数

span.ProfileTweet-action–retweet > span.ProfileTweet-actionCount[data-tweet-stat-count] 

收藏数量

span.ProfileTweet-action–favorite > span.ProfileTweet-actionCount[data-tweet-stat-count]    

资源

https://code.recuweb.com/2015/scraping-tweets-directly-from-twitter-without-authentication/

【讨论】:

当我尝试“twitter.com/i/search/…”时。它没有给出scroll_cursor。如何获取下一页内容。 @KishoreKumarSuthar 检查帖子底部链接的博客。它现在使用 max_position 而不是 scroll_cursor。我已经相应地更新了答案。 应该注意的是,由于 CORS 强制,这个解决方案对于任何基于 JS 的东西都没有用。 确实是一个服务器端的解决方案,例如与file_get_contents()一起使用 如何按最近日期排序推文?【参考方案3】:

如果您仍在寻找 JSON 中未经身份验证的推文,这应该可以: https://github.com/cosmocatalano/tweet-2-json

【讨论】:

【参考方案4】:

正如您在 the documentation 中看到的,使用 REST API 您需要 OAuth Tokens 才能执行此操作。幸运的是,我们可以使用 the Search(不使用 OAuth)并使用 from:[USERNAME] 运算符

示例: http://search.twitter.com/search.json?q=from:marcofolio 将为您提供一个 JSON 对象,其中包含来自该用户的推文,其中

object.results[0]

会给你最后一条推文。

【讨论】:

所有 API 方法现在都需要身份验证。 @PaulSchreiber 我只是发布了一个已弃用的替代方案:http://search.twitter.com/search.json?q= 看起来像这样,因为 1.1 对 api 的请求必须被识别。 dev.twitter.com/rest/public/search: "请注意,现在 API v1.1 要求请求必须经过身份验证" 这对我来说效果很好,希望对某人有所帮助! github.com/jasonmayes/Twitter-Post-Fetcher "errors":["code":215,"message":"Bad Authentication data."]【参考方案5】:

您可以使用 twitter api v1 获取推文,而无需使用 OAuth。例如:this 链接变成了 @jack 的最后 100 条推文。

时间线文档是here。

【讨论】:

"Twitter REST API v1 不再有效。请迁移到 API v1.1。dev.twitter.com/docs/api/1.1/overview。"【参考方案6】:

这是一个快速的 hack(真的是一个 hack,应该谨慎使用,因为它不是未来的证明),它使用 http://anyorigin.com 来抓取 Twitter 网站以获取最新的推文。

http://codepen.io/JonOlick/pen/XJaXBd

它的工作原理是使用 anyorigin(您必须付费才能使用它)来获取 HTML。然后它使用 jquery 解析 HTML 以提取相关的推文。

移动网站上的推文使用 .tweet-text 类的 div,所以这很容易。

相关代码如下:

$.getJSON('http://anyorigin.com/get?url=mobile.twitter.com/JonOlick&callback=?', function(data)

  // Remap ... utf8 encoding to ascii. 
  var bar = data.contents;
  bar = bar.replace(/…/g, '...');

  var el = $( '<div></div>' );
  el.html(bar);

  // Change all links to point back at twitter
  $('.twitter-atreply', el).each(function(i)
    $(this).attr('href', "https://twitter.com" + $(this).attr('href'))
  );

  // For all tweets
  $('.tweet-text', el).each(function(i)
    // We only care about the first 4 tweets
    if(i < 4) 
      var foo = $(this).html();
      $('#test').html($('#test').html() + "<div class=ProfileTweet><div class=ProfileTweet-contents>" + foo + "</div></div><br>");
    
  );

);

【讨论】:

【参考方案7】:

您可以使用 Twitter API 包装器,例如 TweetJS.com,它提供一组有限的 Twitter API 功能,但不需要身份验证。是这样称呼的;

TweetJs.ListTweetsOnUserTimeline("PetrucciMusic",
function (data) 
    console.log(data);
);

【讨论】:

【参考方案8】:

方法“GET statuses/user_timeline”需要一个用户认证,你可以在官方文档上看到:

您可以使用不需要身份验证的搜索方法“GET 搜索”。

您有一个从这里开始的代码:http://jsfiddle.net/73L4c/6/

function searchTwitter(query) 
    $.ajax(
        url: 'http://search.twitter.com/search.json?' + jQuery.param(query),
        dataType: 'jsonp',
        success: function(data) 
            var tweets = $('#tweets');
            tweets.html('');
            for (res in data['results']) 
                tweets.append('<div>' + data['results'][res]['from_user'] + ' wrote: <p>' + data['results'][res]['text'] + '</p></div><br />');
            
        
    );


$(document).ready(function() 
    $('#submit').click(function() 
        var params = 
            q: $('#query').val(),
            rpp: 5
        ;
        // alert(jQuery.param(params));
        searchTwitter(params);
    );
)

【讨论】:

盗自***.com/questions/8890257/…

来自 mysql/JSON 的 twitter bootstrap typeahead 源

】来自mysql/JSON的twitterbootstraptypeahead源【英文标题】:twitterbootstraptypeaheadsourcefrommysql/JSON【发布时间】:2013-07-1312:41:50【问题描述】:所以基本上,我希望我的预输入能够从mysql表中获取源代码。下面是我的代码:<scriptsrc="../..... 查看详情

iPhone 上 Twitter 的 JSON 源

】iPhone上Twitter的JSON源【英文标题】:JSONFeedforTwitteroniphone【发布时间】:2011-07-2017:39:11【问题描述】:我正在尝试使用SBJSON框架处理iPhone的JSON提要。我最初确实尝试了一个示例,并且效果很好。但是当我使用我的URLJSON进行更改... 查看详情

如何从 JSON 获取数据以在 PrimeNG 折线图中使用?

...务。我认为我可以做的是从我的组件中订阅该数据,重新格式化并将其推送到局部变量数组。我遇到的问题 查看详情

从 twitter api 获取数据

】从twitterapi获取数据【英文标题】:fetchingdatafromtwitterapi【发布时间】:2012-10-0912:15:27【问题描述】:我正在尝试获取Twitter提要。我正在使用这个网址https://twitter.com/status/user_timeline/wwwkrcgenkbe.json?count=25&from=wwwkrcgenkbe此网址提... 查看详情

如何以 JSON 格式获取元素的样式?

】如何以JSON格式获取元素的样式?【英文标题】:HowtogetthestyleofanelementinaJSONformat?【发布时间】:2019-06-2720:31:34【问题描述】:我正在寻找一个函数,它为我提供JSON中应用于jquery中给定元素的所有样式我尝试过this,但似乎不适... 查看详情

如何以易于阅读的格式查看此内容? (JSON)

...【发布时间】:2011-02-0407:09:19【问题描述】:https://search.twitter.com/search.json?q=doug如何像查看源代码一样阅读此内容,以便知道我在看什么?有没有可以美化它的网站?顺便说一句,我用python【问题讨论】:见***.com/ques 查看详情

获取 google 图片搜索页面的 JSON 版本

...orkinginiOS,那个人指示我们使用一个指向以JSON格式显示的twitter页面的链接。现在,我想知道从给定的网页获取JSON是多么容易。例如,thisgoogleimagese 查看详情

JSON格式:以正确的顺序获取输出[重复]

】JSON格式:以正确的顺序获取输出[重复]【英文标题】:JSONformat:gettingoutputinthecorrectorder[duplicate]【发布时间】:2014-02-2319:35:02【问题描述】:常见任务,将字符串转换为JSON格式。是的,很简单,***上有很多关于这个的答案。对... 查看详情

Django Rest Framework 以 json 格式获取表单

】DjangoRestFramework以json格式获取表单【英文标题】:DjangoRestFrameworkGetFormsasjson【发布时间】:2017-06-2206:56:03【问题描述】:DjangoRestFramework正在填充HTML表单。LikeThis是否有可能获得json格式的html表单以及默认行为。如果是此附加图... 查看详情

如何以列标题为键获取json格式的handson表数据

】如何以列标题为键获取json格式的handson表数据【英文标题】:Howtogethandsontabledatainjsonformatwithcolumnheaderaskey【发布时间】:2015-07-0208:56:15【问题描述】:我有handsontable,我想将handsontable单元上的数据输入服务器端。我试图在代码... 查看详情

使用用户名/用户 ID 获取 Instagram 订阅源

】使用用户名/用户ID获取Instagram订阅源【英文标题】:GetInstagramFeedsusingusername/userid【发布时间】:2018-04-2510:29:59【问题描述】:我之前用过https://www.instagram.com/graphql/query/?query_id=17888483320059182&variables=$result现在从这个月开始,... 查看详情

Codeigniter,如何获取以json格式显示的数据库表数据?

】Codeigniter,如何获取以json格式显示的数据库表数据?【英文标题】:Codeigniter,Howtogetdatabasetabledatadisplayedinjsonformat?【发布时间】:2017-01-0300:17:34【问题描述】:我必须以json格式显示结果。我的代码如下:$this->db->select("*");$... 查看详情

无法获取 Django 模板以打印格式化的 JSON

】无法获取Django模板以打印格式化的JSON【英文标题】:CannotGetDjangoTemplatetoPrintFormattedJSON【发布时间】:2017-11-0420:37:35【问题描述】:我正在努力打印来自Watson的NLUAPI的格式化JSON响应。我正在使用Python2.7和Django1.11。我的views.py看... 查看详情

htmljquery,js,json:获取twitter推文(代码片段)

查看详情

获取附加到特定订阅中 VM 的 Azure OS 磁盘列表

...Azure中VM的操作系统磁盘列表。我找到了AZutility来获取json格式的列表。使用下面的序列,我可以得到json格式的列表,有没有类似的方法可以使用任 查看详情

将表格数据从 redshift 转换为 json - 选择查询以获取 json 格式的记录

】将表格数据从redshift转换为json-选择查询以获取json格式的记录【英文标题】:Converttabulardatatojsonfromredshift-Selectquerytofetchtherecordsinjsonformat【发布时间】:2019-05-1713:04:18【问题描述】:例如,表格示例idname1abc2def我知道在sqlserver中... 查看详情

使用 BigQuery REST 或 Java API 运行查询以获取 JSON 输出格式

】使用BigQueryREST或JavaAPI运行查询以获取JSON输出格式【英文标题】:UseBigQueryRESTorJavaAPItorunquerytogetJSONoutputformat【发布时间】:2017-12-2318:48:34【问题描述】:我正在尝试使用google-cloudAPI对表运行查询并以JSON格式获取结果。到目前... 查看详情

使用 CORS 从 TeamCity API 获取 JSON

...4-04-0723:19:24【问题描述】:我正在尝试使用TeamCityAPI以JSON格式检索构建数据以实时显示。显示是一个简单的JavaScript应用程序,作为与TeamCity服务器不同域的网页提供。因此,这必须作为跨源请求(CORS)处理。我的问题是我找不到配... 查看详情