python爬取新浪微博评论

1.先要去www.weibo.com登录,然后获取cookie来进行爬取

2.按F12,将浏览器切换为手机,选择一篇微博

链接后面的数字为该条微博的mid

https://m.weibo.cn/api/comments/show?id=此处填微博的mid&page=3

因为从第三页开始就需要cookie,所以page填3

python爬取新浪微博评论_第1张图片

这样我们就得到了cookie,有了cookie就好办了

import requests
import json
import re
from time import sleep
mid = input('输入微博正文mid:')
file_name = input('给你爬下来的东西起个名:')
def get_comment(num):
    url = 'https://m.weibo.cn/api/comments/show?id=' + str(mid) + '&page=' + str(num)
    headers = {
        # cookie的获取:登录微博后到request headers内找到cookie复制粘贴
        "cookie": '',
        "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'
    }
    response = requests.get(url,headers=headers)

    content = json.loads(response.text)  # 把获得数据转换成字典格式

    for i in content['data']['data']:
        text = i['text']
        label_filter = re.compile(r'.*?', re.S)

        comment = re.sub(label_filter, '', text)  # 把一些链接去掉,保留纯文本内容。
        rm_url = re.compile(r"回复:", re.S)  # 去掉回复的链接内容。
        rm = re.sub(rm_url, '', comment)
        rmherf = re.compile(r'',re.S)#去除链接内容
        rm1 = re.sub(rmherf, '' ,rm)

        with open('%s.txt'%file_name, "a", encoding="utf8") as f:
            f.write(rm1 + '\n')
if __name__ == '__main__':
    page = int(input('说,你想搞几页:'))
    page_num = page + 1
    for i in range(1, page_num):
        get_comment(i)
        print('第%s页已爬取结束'%i)
        sleep(3)  # 让爬虫飞一会,别让微博以为你在搞事情。

没有requests库的 pip install requests

 

你可能感兴趣的:(python,微博,数据挖掘)