python爬虫之微博评论爬取

作者: 罗罗攀 | 来源:发表于2017-01-11 10:11 被阅读5241次

    最近喜欢看《火星情报局》,搞笑中也不缺内涵。记得2016年的最后一期,里面说到,年终总结只需一个字,而沈梦辰给自己的是一个黑字,2016的她如此招黑,那今天我爬取她2017年的一篇微博评论,看看2017有什么变化呢?

    提交Cookie信息模拟微博登录

    需要爬取登录之后的信息,大家都是望而止步,不要担心,今天呢,给大家提供一个超级简单的方法,就是提交Cookie信息登录微博,首先,我们找到沈梦辰的微博网址:http://m.weibo.cn/u/1732927460 这里是登录的移动端,你会发现,你点击网址会自动跳转到登录微博的界面(没有跳转的注销掉自己的账号),如下图所示:


    然后登录自己的账号密码,这时记得打开Fiddler进行抓包,如图所示,提取Cookie做为请求沈梦辰微博网址的请求头即可。

    异步加载数据如何爬取

    我在网上看过移动端的微博数据很好爬,没有异步加载,可是不知道为什么,我的评论数据就是异步加载的,其实异步加载不可怕,找到相应js包即可,如下图为沈梦辰的一条微博和评论的js包。我们只需请求这个js数据,然后利用json库即可提取我们所需的评论数据。



    代码

    import requests
    import json
    import time
    import pymongo
    
    client = pymongo.MongoClient('localhost', 27017)
    weibo = client['weibo']
    comment_shengmengc = weibo['comment_shengmengc']
    
    headers = {
        "Cookies":'xxxxxxxxxxx',
        "User-Agent":'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1'
    }
    
    url_comment = ['http://m.weibo.cn/api/comments/show?id=4060977869675098&page={}'.format(str(i)) for i in range(0,1000)]
    def get_comment(url):
        wb_data = requests.get(url,headers=headers).text
        data_comment = json.loads(wb_data)
        try:
            datas = data_comment['data']
            for data in datas:
                comment = {"comment":data.get("text")}
                comment_shengmengc.insert_one(comment)
        except KeyError:
            pass
    for url in url_comment:
        get_comment(url)
        time.sleep(2)
    

    爬取的数据导入数据库后又导出为csv格式进行分析

    词云制作及分析

    可以说支持的评论更多一些:例如爱你,喜欢,坚强等等;不过也有不少的恶意评论:黑,恶心,讨厌等。 希望你在新的一年好好努力,让喷子远离你吧。

    总结

    1Cookie提交是一个简单不错的选择,但Cookie信息隐藏着隐私,大家千万别暴露在外面,以防外人所利用。
    2异步加载不可怕,找包有技巧,有id,vid等字段的嫌疑最大,多练习就行。

    相关文章

      网友评论

      • f47a802b35d4:运行亲的这个代码时老是会出现“'str' object has no attribute 'get'”,这是怎么回事啊亲?
      • 断了的弦_f2a8:我试了一下这个只能获取到100页吧,请问如果想获取全部的应该怎么解决呢?
      • 2ca8523e79f3:中文显示要怎么调整?
        罗罗攀:@没事就爱瞎看 我是用的pycharm,做了编码的设置,嘿嘿
      • 2ca8523e79f3::smile:
        罗罗攀:@没事就爱瞎看 你开心就好,哈哈
      • 阿叻阿叻:试试
        罗罗攀:@阿叻阿叻 好嘞

      本文标题:python爬虫之微博评论爬取

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