V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
HanSonJ
V2EX  ›  分享创造

分享微博爬虫的开源项目以及开发微博爬虫的心得

  •  
  •   HanSonJ ·
    HanSon · 2019-11-22 10:54:40 +08:00 · 4464 次点击
    这是一个创建于 1847 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Weibot

    项目名称:weibot

    详细文章: https://learnku.com/articles/36980

    项目地址: https://github.com/hanson/weibot

    心得

    • 微博部分页面是基于页面渲染的模式
    • 微博的渲染并不按套路出牌,而是使用了 FM.view 的内部框架
    • 抓取内容需要先在 script 里正则匹配出来相关的 HTML。 例如:preg_match_all('/Pl_Official_MyProfileFeed__20.*html\":\"(.*)\"}/', $html, $matches);
    • 有部分地方是异步接口的,例如下滑滚动分页

    使用该项目开发更多 API

    基于 weibot,开发微博的抓包工作会更加简单

    一、登录

    微博很多操作都需要登录,所以写脚本的时候先登录,让 cookie 存储起来 $weibo->login()

    二、抓包

    根据浏览器看到的请求,我们可以尝试模拟一下

    <?php
    
    include_once __DIR__.'/../vendor/autoload.php';
    
    $weibo = new \Hanson\Weibot\Weibot([
        'username' => '',
        'password' => '',
        'cookie_path' => __DIR__.'/cookie', // cookie 存储路径
        'debug' => []
    ]);
    
    // $client 已经是一个带 cookie 的“浏览器”客户端了,根据实际情况进行 get 或者 post
    $client = \Hanson\Weibot\Api\Api::getClient();
    
    $response = $client->post('http://weibo.com', [
        'header' => [
            // 如果有特殊 header 需求    
        ],
        'form_params' => [
            // 各种请求参数
        ]
    ]);
    
    // 得到的 response 有可能是页面,也有可能是接口,自行处理
    $data = json_decode($response->getBody()->getContents(), true);
    

    最后

    分享个交流群

    11 条回复    2019-11-23 10:26:00 +08:00
    hhhfffhhh
        1
    hhhfffhhh  
       2019-11-22 11:29:56 +08:00 via iPhone
    看不到交流群的图
    HanSonJ
        2
    HanSonJ  
    OP
       2019-11-22 11:33:11 +08:00
    @hhhfffhhh #1 这是微博的图床哦,如果看不到可以去文章里面看看,也有 https://learnku.com/articles/36980
    abinnz
        3
    abinnz  
       2019-11-22 13:00:05 +08:00 via iPhone
    之前爬过微博,可以直接爬微博手机端的 api,爬的频率太快也是会触发反爬
    HanSonJ
        4
    HanSonJ  
    OP
       2019-11-22 13:22:55 +08:00
    @abinnz #3 手机端有证书校验就爬不了了
    wujunze
        5
    wujunze  
       2019-11-22 13:45:55 +08:00 via iPhone
    🐮🍺
    Lunatic1
        6
    Lunatic1  
       2019-11-22 14:55:57 +08:00
    上个月刚好接了一个爬微博的项目,扒的手机端的接口。微博反爬做的还可以,就算登录还是会有几率识别为爬虫。
    因为手上可用 IP 少所以速度不敢太快....被封就 15 分钟的小黑屋是真的烦....
    HanSonJ
        7
    HanSonJ  
    OP
       2019-11-22 15:06:35 +08:00
    @Lunatic1 #6 方便加微信一起研究讨论吗? aGFuc29uMTk5NA==
    Lunatic1
        8
    Lunatic1  
       2019-11-22 15:11:46 +08:00
    @HanSonJ 好呀一起讨论,我加微信群了
    Lunatic1
        9
    Lunatic1  
       2019-11-22 15:15:02 +08:00
    @HanSonJ 微信我也加了
    dosmlp
        10
    dosmlp  
       2019-11-22 18:19:51 +08:00
    直接逆向 Android 客户端拿 api 爬不香么,分得去搞 web
    qbhy
        11
    qbhy  
       2019-11-23 10:26:00 +08:00
    666
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2337 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:43 · PVG 23:43 · LAX 07:43 · JFK 10:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.