【Python爬虫】一键获取微博评论,轻松实现舆情分析!_微博爬虫
难点:
1)受到请求频率的限制,需要采用一些方法来避免限制,例如:time.sleep等
2)通常来说,需要设置cookie,通过设置url,模拟网页发送请求,获得网页内容。缺点:需要对数据进行预处理,并且需要找到网页url的逻辑,cookie。
3)经过测试,当前微博的评论,不能全部提取。本文通过实验得到结果,微博评论通常只能抓到200条数据后,就会被限制。
基于上述问题,为了爬取到微博的评论,本文爬取的思路采取通过微博API进行调用相关接口,具体实现步骤如下:
三、🌍微博API爬取步骤🌍
1.🌕基础信息配置 🌕
1.1注册微博开放平台
登录微博开放平台,如下链接。注册一个账号。
1.2.创建一个应用
在顶部【微连接】中,创建一个微链接。

1.3获取token
查看创建应用的App Key,App Secret
【我的应用】->【应用信息.基本信息】
配置【高级信息】,两项都设置为
https://api.weibo.com/oauth2/default.html

经过上面的配置后,我们将获得的App Key,App Secret发送给客户端,返回给用户特定的token值,拿到这个token之后,我们才能调用API拿到数据。
导入包,可以去github上下载sinaweibopy3:https://github.com/olwolf/sinaweibopy3
import webbrowser
from sinaweibopy3.sinaweibopy3 import APIClient
其中XXXXX替换为创建应用的App Key,App Secret;
APP_KEY = 'XXXXX'
APP_SECRET = 'XXXXX'
CALLBACK_URL = 'https://api.weibo.com/oauth2/default.html'#回调授权页面
client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)
url = client.get_authorize_url()
webbrowser.open_new(url)
code = input('输入 code:')
r = client.request_access_token(code)
print(r)
这时会自动打开浏览器,需要登录你创建应用的微博账号进行扫码登录,登录后,会返回一串code码,注意看浏览器中的网址。将网址中code后面的部分复制下来,返回到python的输出窗口进行粘贴。
https://api.weibo.com/oauth2/default.html?code=edd808049ac941c8dccd76a071b95a88

这时,程序返回数据,我们将access_token这部分数据保存下来
‘access_token’: ‘2.00XXXXXXXXXXXXXXXXXXXXXX’ #这里要自己进行替换具体得到的token

2.🌕调用API接口获取数据 🌕
参数说明:
access_token是在第二部分你获得的;
suffix是你调用的API,具体还有哪些API接口,可以参考官方的接口文档:
https://open.weibo.com/wiki/微博api
params中的参数,id是每条微博对应的号码,举个例子,打开一条微博
注意观察浏览器的网址变化,不难发现detail/后面的数字就是这条微博对应的ID
https://m.weibo.cn/detail/496044833636XXXX
from weibopy import WeiboOauth2, WeiboClient
import json
# access_token , params中的id需要替换
access_token = '2.00XXXXXXXXXXXXXXXXXXXXXX'
client = WeiboClient(access_token)
#调用API
result = client.get(suffix='comments/show.json', params={'id': 496044833636XXXX, 'count': 50, 'page': 1})
json_result = json.dumps(result)
print(json_result)
执行上述程序,我们即可获得微博(page=1)对应的评论数据,得到的数据是JSON格式,复制得到的数据,可以通过JSON可视化网站进行可视化。
3.🌕获取“所有”评论数据 🌕
很显然,我们知道如果采用思路一,即在网页下爬取评论数据,我们做过这样的测试,发现在思路一下每条微博最多能获取200条左右的数据(即在拿到200条数据后,返回的数据为空,受到限制)。故此,通过思路二的方式我们可以爬取微博下的全部评论,这里的全部其实是一个引号,当然API能爬到的评论受到的限制远小于在网页上获取数据。
接下来,我们设计获取尽可能多的评论,通过第三部分知道,我们是通过变量page来获得数据。
import re
import time
import pandas as pd
from weibopy import WeiboClient
import csv
# 下面两行的解释在第三部分有详细说明
access_token = '2.00XXXXXXXXXXXXXXXXXXXXXX' #替换为自己应用的token,获取方法见本文第二部分
client = WeiboClient(access_token)
comment_list = [] # 保存所有评论正文
# 共获取 10 页 * 每页最多 50 条评论
for i in range(1, 11):
result = client.get(suffix='comments/show.json', params={'id': 4966558150951081, 'count': 50, 'page': i})
comments = result['comments']
if not len(comments):
break
for comment in comments:
# 获取微博文本
original_text = comment['status']['text']
# 获取评论文本
text = re.sub('回复.*?:', '', str(comment['text']))
created_at = comment['created_at']
# 获取评论时间
created_time = str(pd.Timestamp(created_at).tz_convert(tz=None))
# 获取评论地区
location = comment['user']['location']
# 拼接数据
comment_concat = [original_text, created_time, text, location]
comment_list.append(comment_concat)
print('已抓取评论 {} 条'.format(len(comment_list)))
time.sleep(1)
# 将数据写入csv文件中
with open("result.csv", 'w', newline='', encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerows(comment_list)
结果:
已抓取评论 45 条
已抓取评论 84 条
已抓取评论 121 条
已抓取评论 165 条
已抓取评论 207 条
已抓取评论 240 条
已抓取评论 283 条
已抓取评论 321 条
已抓取评论 336 条Process finished with exit code 0

四、🌍总结 🌍
3.🌕代码汇总🌕
只需要配置自己的token,修改你想要爬取的微博ID,不用任何修改!!!
童叟无欺,直接上手,话不多说,代码附上!
# -----------------------------------------------------------------#
# Step1:先创建一个py文件,写入以下内容,用于获取你的token
'''
import webbrowser #python内置的包
from sinaweibopy3.sinaweibopy3 import APIClient
APP_KEY = '857XXXXXX'#注意替换这里为自己申请的App信息
APP_SECRET = '110f8c95d7d371964e08XXXXXXXXXXXX'
CALLBACK_URL = 'https://api.weibo.com/oauth2/default.html'#回调授权页面
#利用官方微博SDK
client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)
#得到授权页面的url,利用webbrowser打开这个url
url = client.get_authorize_url()
print(url)
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
**因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**






**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)**
.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)**

更多推荐
所有评论(0)