主机知识库
分享服务器知识

利用API抓取微博动态

微博动态api

最开始的需求就是提取微博某条动态里的图片,然后发现的api地址如下

https://weibo.com/ajax/statuses/show?id=该条动态的id

动态的ID

因为微博现在动态没有展开详情页的按钮了,那么怎么知道动态的id参数是什么呢,其实很简单,随便点开个图片如下图,其中layerid后面的数字就是id了

获取

然后访问https://weibo.com/ajax/statuses/show?id=4796965147381914就可以获取了,里面包含了博主的一些信息,以及这条动态的文本内容图片内容。

不过在实际使用时最好自己用php中转下,避免跨域问题,导致不能直接请求。php代码如下:

<?php
header('Content-type:text/json'); 
    header('Access-Control-Allow-Origin:*'); // *代表允许任何网址请求
    header('Access-Control-Allow-Methods:POST,GET,OPTIONS,DELETE'); // 允许请求的类型
    header('Access-Control-Allow-Credentials: true'); // 设置是否允许发送 cookies
    header('Access-Control-Allow-Headers: Content-Type,Content-Length,Accept-Encoding,X-Requested-with, Origin');

if(isset($_GET['id'])){
$geturl = 'https://weibo.com/ajax/statuses/show?id='.$_GET['id'];

$headers =file_get_contents($geturl);

echo $headers;
}
?>

然后访问这个php文件,如https:xxxx.com/weibo.php?id=动态id即可,代码还有优化的空间,比如缓存每次请求的结果,下次请求时直接调用缓存等。

最后

我们获取到图片链接后,直接在网站上使用可能存在无法显示的问题,因为微博加了防盗链,可以将图片域名的前缀缓存tva2,比如https://wx4.sinaimg.cn/orj960/be9135aely1h4p0xbwp4gj2222333kjn.jpg换成https://tva2.sinaimg.cn/orj960/be9135aely1h4p0xbwp4gj2222333kjn.jpg就可以了。

或者极端点直接给网页加上<meta name="referrer" content="never">也可以,不过一般不建议这样做,可能会导致网站一些功能出现问题。

声明:本文由泽泽社投稿至cmy.cn,转载请注明出处,侵权必究!

赞(1)
文章名称:《利用API抓取微博动态》
文章链接:https://www.cmy.cn/host/9527.html
版权声明:茶猫云所有发布的内容,部分为原创文章,转载请注明来源!网络转载文章如有侵权请联系我们解决!
最新优惠:茶猫云VPS服务器