嗨喽~大家好呀,这里是魔王呐 ❤ ~!
python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取
环境使用:
-
Python 3.10
-
Pycharm
第三方模块使用:
-
import requests >>> pip install requests
-
import wordcloud >>> pip install wordcloud
-
import jieba >>> pip install jieba
爬虫基本流程:
一. 数据来源分析
1. 明确需求: 明确采集的网站以及数据内容
- 网址: https://weibo.com/2803301701/NxcPMvW2l
- 数据: 评论内容
2. 抓包分析: 通过开发者工具进行抓包
- 打开开发者工具: F12
- 刷新网页
- 通过关键字查找对应的数据
关键字: 评论的内容
数据包地址: https://weibo.com/ajax/statuses/buildComments?is_reload=1&id=4979141627611265&is_show_bulletin=2&is_mix=0&count=10&uid=2803301701&fetch_level=0&locale=zh-CN
二. 代码实现步骤
1. 发送请求 -> 模拟浏览器对于url地址发送请求
2. 获取数据 -> 获取服务器返回响应数据
3. 解析数据 -> 提取评论内容
4. 保存数据 -> 保存本地文件 (文本 csv Excel 数据库)
多页数据采集: 分析请求链接变化规律(主要看请求参数)
翻页: 点击下一页 / 滑动
flow: 0 多了这个参数
max_id: 第一页是没有 第二/三页一串数字
count: 第一页 10 第二/三页 20
代码展示
数据采集
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# 导入数据请求模块
import requests
import pandas as pd
# 创建空列表
lis = []
def get_content(max_id):
"""1. 发送请求 -> 模拟浏览器对于url地址发送请求"""
# 模拟浏览器
headers = {
# Referer 防盗链
'Referer':'https://weibo.com/2803301701/NxcPMvW2l',
# User-Agent 用户代理
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
}
"""
https://weibo.com/ajax/statuses/buildComments?is_reload=1&id=4979141627611265&is_show_bulletin=2&is_mix=0&count=10&uid=2803301701&fetch_level=0&locale=zh-CN
- 问号前面: 请求链接
- 问号后面: 查询参数
"""
# 请求网址
url = 'https://weibo.com/ajax/statuses/buildComments'
# 请求参数
data = {
'is_reload': '1',
'id': '4979141627611265',
'is_show_bulletin': '2',
'is_mix': '0',
'max_id': max_id,
'uid': '2803301701',
'fetch_level': '0',
'locale': 'zh-CN',
}
# 发送请求
response = requests.get(url=url, params=data, headers=headers)
"""2. 获取数据 -> 获取服务器返回响应数据"""
json_data = response.json()
"""3. 解析数据 -> 提取评论内容"""
# 提取评论所在列表
content_list = json_data['data']
# for循环遍历, 提取列表里面元素
for index in content_list:
content = index['text_raw']
dit = {
'内容': content
}
lis.append(dit)
"""保存数据"""
with open('data.txt', mode='a', encoding='utf-8') as f:
f.write(content)
f.write('\n')
print(content)
next_num = json_data['max_id']
return next_num
if __name__ == '__main__':
lis = []
max_id = ''
for page in range(1, 11):
max_id = get_content(max_id)
df = pd.DataFrame(lis)
df.to_excel('data.xlsx', index=False)
制作词云图
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# 导入结巴分词
import jieba
# 导入词云图模块
import wordcloud
"""词云分析"""
# 读取文件内容
f = open('data.txt', encoding='utf-8').read()
# 分词
txt = jieba.lcut(f)
# 把列表合并成字符串
string = ' '.join(txt)
# 制作词云图配置
wc = wordcloud.WordCloud(
font_path='msyh.ttc',
width=1000, # 宽
height=700, # 高
background_color='white', # 背景颜色 默认黑色
)
# 导入内容
wc.generate(string)
wc.to_file('词云_3.png')
print(txt)
尾语
最后感谢你观看我的文章呐~本次航班到这里就结束啦 🛬
希望本篇文章有对你带来帮助 🎉,有学习到一点知识~
躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。