Python爬虫之微博评论爬取

最近《mojito》这首歌比较火,评论也比较多,好做测试。
用到的模块

import requests #请求
import time #时间
from fake_useragent import UserAgent #随机请求头
import re 正则模块

首先,找到要爬取的URL,查看一下具体情况,微博爬虫移动端相对容易一些。
Python爬虫之微博评论爬取_第1张图片
点击查看更多内容,需要登录才能爬取哟。。。。。

登录微博,f12打开浏览器抓包功能
Python爬虫之微博评论爬取_第2张图片
直接携带cookie+参数请求即可
Python爬虫之微博评论爬取_第3张图片
Python爬虫之微博评论爬取_第4张图片

这个方法很简单,但是只能爬取50页左右,如果要全部爬取下来,需要搞个代理池。
感兴趣的可以看看这个教程,代理池搭建方法

完整代码

import requests
import time
from fake_useragent import UserAgent
import random
import re
class weibo_comment(object):
    def __init__(self):
        self.ua = UserAgent()
        self.i = [i for i in range(1,50)]
        self.headers = {
            'cookie': '你的cookie'.format(random.choice(self.i)),
            'User-Agent': self.ua.random
        }
        print(self.headers)

    def get_comment(self,num):
        self.datas = {
            'type': 'comment',
            'page': num
        }
        for i in range(num):
            time.sleep(3)
            if i==1:
                continue
            else:
                print('-'*20 + '正在爬取第{}页'.format(i))
                url = 'https://weibo.cn/1850268574/J6cy11dqW?type=comment&rand=612130&page={}'.format(i)
                print(url)
                res = requests.get(url,headers=self.headers,data=self.datas)
                names = re.findall('(.*?)',res.text)
                comments = re.findall('(.*?)',res.text)
                for name,comment in zip(names,comments):
                    result = re.sub('<.*?>', '', comment)
                    print('{}:{}'.format(name,result))
                    with open('e:/数据/mojito微博评论.txt','a+',encoding='utf8')as f:
                        f.write('{}:{}'.format(name,result)+'\n')

if __name__ == '__main__':
    weibo = weibo_comment()
    weibo.get_comment(100)

Python爬虫之微博评论爬取_第5张图片

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