爬虫实战四:微博个人主页、微博列表、微博评论接口分析与实现

本次以"李子柒"的微博账号为例,进行微博网页版(https://weibo.com/)相关接口分析与实战。

1. 个人主页基本信息接口分析

  • 个人信息抓取示例
原网页抓取数据示例
在这里插入图片描述在这里插入图片描述

接口分析

网页地址:https://weibo.com/u/2970452952
接口1:https://weibo.com/ajax/profile/info?uid=2970452952
接口2:https://weibo.com/ajax/profile/detail?uid=2970452952

在这里插入图片描述

代码示例

在进行个人主页信息抓取的时候,headers需要登录的cookie,但只需要其中SUB=即可。
在这里插入图片描述

2. 个人主页微博列表接口分析

第一页:https://weibo.com/ajax/statuses/mymblog?uid=2970452952&page=1&feature=0
第二页:https://weibo.com/ajax/statuses/mymblog?uid=2970452952&page=2&feature=0&since_id=4542986702291664kp2

由接口返回数据分析,翻页涉及的参数since_id存在于上一页返回的结果
最后一页的since_id = "",因此,可以借助这个条件进行判断是否是最后一页
在这里插入图片描述

代码示例

import requests

headers = {
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0',
    'cookie':your_cookie
}

def parse_mblog(response):
    data = response.json()['data']
    mblog_list = data['list']
    for mblog in mblog_list:
        mblog_info = {
            'mid': mblog['mid'],
            'mblogid': mblog['mblogid'],
            'text': mblog['text'],                      # 文本的HTML样式
            'text_raw': mblog['text_raw'],              # 文本
            'created_at': mblog['created_at'],          # 创建时间
            'comments_count':mblog['comments_count'],   # 评论数
            'attitudes_count':mblog['attitudes_count'], # 点赞数
            'reposts_count':mblog['reposts_count'],     # 转发数
        }
        print(mblog_info)

def main():
    url = 'https://weibo.com/ajax/statuses/mymblog?uid=2970452952&feature=0'
    response = requests.get(url, headers=headers)
    since_id = response.json()['data']['since_id']
    while since_id != "":
        parse_mblog(response)
        next_url = url + '&since_id=' + since_id
        response = requests.get(next_url, headers=headers)
        since_id = response.json()['data']['since_id']

main()

3. 某条微博评论接口分析

第一页:https://weibo.com/ajax/statuses/buildComments?is_reload=1&id=3957247706865941&is_show_bulletin=0&is_mix=0&count=10&uid=2970452952&fetch_level=0&locale=zh-CN
第二页:https://weibo.com/ajax/statuses/buildComments?is_reload=1&id=3957247706865941&is_show_bulletin=0&is_mix=0&max_id=4751637492798575&count=20&uid=2970452952&fetch_level=0&locale=zh-CN

由接口返回数据分析,翻页涉及的参数max_id存在于上一页返回的结果

  • 需要注意的是,评论最后一页即max_id = 0data中依旧有部分评论数据,需要与微博列表区分开
    在这里插入图片描述

代码示例

def parse_comment(response):
    comment_list = response.json()['data']
    for comment in comment_list:
        data = {
            'id': comment['id'],
            'user_id': comment['user']['id'],
            'user_name': comment['user']['screen_name'],
            'rootid': comment['rootid'],
            'text': comment['text'],
            'text_raw': comment['text_raw'],
            # 评论的类型,comment评论/comment_reply回复他人评论
            'readtimetype':comment['readtimetype'],     
            'created_at': comment['created_at'],
        }
        # 如果是回复他人的评论,则会产生reply_comment字段,用于记录被评论的信息:评论文本信息、被评论人的用户信息等
        if data['readtimetype'] == 'comment_reply':
            data.update(
                {
                    'reply_user_id': comment['reply_comment']['user']['id'],
                    'reply_user_name': comment['reply_comment']['user']['screen_name'],
                }
            )
        print(data)

def main():
    url = 'https://weibo.com/ajax/statuses/buildComments?is_reload=1&id=3957247706865941&is_show_bulletin=0&is_mix=0&count=10&uid=2970452952&fetch_level=0&locale=zh-CN'
    response = requests.get(url,headers=headers)
    max_id = response.json()['max_id']
    parse_comment(response)
    while max_id != 0:
        print(max_id)
        next_url = url + '&max_id=' + str(max_id)
        response = requests.get(next_url,headers=headers)
        parse_comment(response)
        max_id = response.json()['max_id']

main()
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值