简单python爬取微博并写入excel

​ 写了一个简单的Python爬取指定用户微博的内容和图片,目前比较简陋,之前有在github上参考别人写的爬虫,发现现在微博好像使用的是Ajax的方式来渲染数据,这也太方便了,直接请求接口,然后解析数据不就能得到我们想要的数据了吗????

​ ok,开始操作

首先,我们进入微博,打开检查,观察数据,这里我用的方法比较蠢,是一个个看返回内容是什么。。。等后面学习到了更高深的技术了在和大家分享吧,

image-20211212182751204

经过手动查看,发现mymblog接口是获取内容的接口,然后操作,我们使用请求数据的第三方库是requests,先将请求头和获取内容的地址还有获取信息的地址定义好

    def __init__(self):
        self.headers = {
   
            'cookie': '',
            'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Safari/537.36',
            'referer': 'https://weibo.com/u/3214393887'
        }
        self.user_info_url = 'https://weibo.com/ajax/profile/info?uid=3214393887'
        self.content_url = 'https://weibo.com/ajax/statuses/mymblog?uid=5541182601&page={}&feature=0'
        self.session = requests.session()
        self.user = User()
        self.contents = []

这里的请求头可以在浏览器中cv,不再赘述,

这里是我保存微博内容的对象,

class Weibo:
    def __init__(self):
        self.id = ''
        self.user_id = ''
        self.screen_name = ''

        self.content = ''
        self.article_url = ''

        self.original_pictures = []
        self.retweet_pictures = None
        self.original = None
        self.video_url = ''

        self.publish_place = ''
        self.publish_time = ''
        self.publish_tool = ''

        self.up_num = 0
        self.retweet_num = 0
        self.comment_num = 0

    def __str__(self):
        """打印一条微博"""
        result = self.content + '\n'
        result += u'微博发布位置:%s\n' % self.publish_place
        result += u'发布时间:%s\n' % self.publish_time
        result += u'发布工具:%s\n' % self.publish_tool
        result += u'点赞数:%d\n' % self.up_num
        result += u'转发数:%d\n' % self.retweet_num
        result += u'评论数:%d\n' % self.comment_num
        # result += u'url:https://weibo.cn/comment/%s\n' % self.id
        return result

解析数据的接口没啥好讲的,就是对症下药。。。

    def get_data(self, since_id,page):
        contentInfo = self.session.get(url=(self.content_url + '&since_id=' + since_id).format(page), headers=self.headers).content.decode()
        resultDict = json.loads(contentInfo)
        dataDict = resultDict['data']
        dataList = dataDict['list']
        index = 0
        for data in dataList:
            index += 1
            wb = Weibo()
            wb.id = dat
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值