美文网首页
爬m.weibo站

爬m.weibo站

作者: ddm2014 | 来源:发表于2018-08-26 09:12 被阅读0次

    最近需要一些拍照的指导,想爬取微博里的相册,m站比pc站好爬,先看看pc的network。
    顺利找到网址,不过pc的分页方式让我分方,感觉像是开始以为是时间戳,可能是图片的数据库自生成id,这样一来就只能一页24个图像来爬,很慢。


    还是看看m站,要访问m站,需要的工具,chrome。
    还是先在pc端用chrome开要下载的页面,比如这次的 黄二疑的相册
    https://weibo.com/p/1005052298961991/photos?from=page_100505&mod=TAB#place
    然后F12,左上角防移动端图标


    页面就会变成这样

    刷新就可以了。
    在XHR发现了数据网址。
    https://m.weibo.cn/api/container/getSecond?containerid=1078032298961991_-_photoall&page=2&count=24&title=%25E5%259B%25BE%25E7%2589%2587%25E5%25A2%2599&luicode=10000011&lfid=1078032298961991

    看了看网址的参数,page=2&count=24,应该是一次返回多少数据的参数,其他的containerid应该是博主的id,假如我想爬其他博主的,只要有了id就能构造url来访问了。

    试试先爬100个图。
    https://m.weibo.cn/api/container/getSecond?containerid=1078032298961991_-_photoall&page=1&count=100&title=%25E5%259B%25BE%25E7%2589%2587%25E5%25A2%2599&luicode=10000011&lfid=1078032298961991
    看看结果:果然回传100个图的数据。


    接下来的就很简单了
    import requests
    import json
    import re
    import shutil
    def mweibo():
        url ='https://m.weibo.cn/api/container/getSecond'
        headers ={
           'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'
        }
        params ={
            'containerid': '1078031353112775_-_photolike',
            'page': 1,
            'count': 100,
            'title': '%E8%B5%9E%E8%BF%87%E7%9A%84%E5%9B%BE%E7%89%87',
            'luicode': 10000011,
            'lfid': 1078031353112775,
            'type': 'uid',
            'value': 1353112775}
    
        res = requests.get(url,headers =headers,params=params)
        iurl = re.findall('"pic_middle":"(.*?)","pic_', res.text)
        
        for imgurl in iurl:
            name = imgurl.split('\\/')[-1]
            imgeurl = 'http://wx4.sinaimg.cn/mw1024/' + name
            res2 = requests.get(imgeurl, stream=True, headers=headers)
            f = open(name, 'wb')
            shutil.copyfileobj(res2.raw,f)
            f.close()
            del res2
    

    回传的是标准json,为啥没有用json来解析,因为微博弄得json及其复杂,dict先套了一层list又套一层dict再来一层list才到url。这个小伙伴用的json解析
    直接用re正则比较快。

    m站的另一个问题是经常刷不出数据,原以为是headers没构造好,但是我用手机上m站也是不行,搞不清楚为啥,好像带着登陆之后的cookies要好点,就直接导致数据时有时无,有点忧伤。

    相关文章

      网友评论

          本文标题:爬m.weibo站

          本文链接:https://www.haomeiwen.com/subject/pipwiftx.html