前言:
爬取新浪微博 “战疫情” 版块微博信息,并将信息内容存储为文本格式,且生成相应的词云图。该爬虫使用的一些技术:
- requests,对网页请求
- json,解析网页返回的数据
- jieba,对中文文本进行分词
- wordcloud,生成词云图
环境:
Python3(Anaconda3)
PyCharm
Chrome浏览器
1.分析爬取对象
前人栽树,后人乘凉。有前辈指出移动端要比PC端好爬取,所以我们爬取移动端微博。如下是两个网址的区别。
PC端微博,https://weibo.com/
移动端微博,https://m.weibo.cn/
2.分析网页结构
打开开发者工具(F12),分析移动端微博的网页结构。
没有分页条,通过滑动侧边进度条加载数据,很明显是通过异步加载实现的。我们前去查看开发者工具中Network板块的XHR文件,记得刷新一下网页。
我们发现箭头所指的文件返回了json格式的微博内容。
至此,我们需要获取如下两个信息
1.请求该信息的URL。
2.json数据中,微博内容的路径,点击Preview可以更好的查看json内容。
获取json数据的代码写成了一个 get_info() 的函数,如下
# 创建TXT文件
f = open('./weibo.txt', 'a+', encoding='utf-8')
# 定义获取信息的函数
def get_info(url):
rs = requests.get(url=url, headers=headers, timeout=3,cookies=cookies)
print(url, rs)
json_data = json.loads(rs.text)
results = json_data['data']['statuses']
for result in results:
text = re.sub('<.*?>', '', str(result