基于Requests和Ajax分析法的新浪微博关键词采集
1 项目介绍
本项目介绍使用requests模块和Ajax分析法采集微博关键词的方法。
本项目仅以“杨幂”、郑爽 、“赵丽颖”这三个关键词挖掘举例说明,如果有挖掘微博其他关键词的需求,可以更换关键词进行采集。
目标:
- 搜索关键词,如#赵丽颖#,采集底下的微博
- 采集微博用户的性别、地点、院校、标签、行业、公司、简介等信息
- 采集关键词的搜索结果微博内容(以电影举例),可分析电影的舆情评价、观影人群画像制作等
2 技术要点
-
文本循环
-
Ajax点击
3 实现步骤
3.1 搜索微博内容爬取
import requests
def get_hot_info(kw, page):
"""
获取热搜文章信息
:param kw: 搜索关键字
:return: 搜索的文章
"""
# 使用在线URL解码器进行解码, 如下:
# https://m.weibo.cn/api/container/getIndex?containerid=100103type%3D1%26q%3D%E4%BA%92%E8%81%94%E7%BD%91&page_type=searchall
# 微博的url基本地址
url = "https://m.weibo.cn/api/container/getIndex"
# url访问需要添加的参数
params = {
'containerid': '100103type=1&q=%s' % (kw),
'page': page
}
# 获取页面内容,并通过ijson解析返回一个字典;
hot_infos = requests.get(url, params).json()
# 提取需要的微博热搜正文内容
hot_cards = hot_infos['data']['cards']
infos = []
for card in hot_cards:
for text in card['card_group']:
if text.get('mblog'):
infos.append(text['mblog']['text'])
return infos
3.2 数据清洗
def data_cleaning(text):
"""
微博数据的清洗
:param text: 需要清洗的内容, 提取需要的中文
:return:
"""
import re
pattern = '([\u4e00-\u9fa5])'
cleanData = "".join(re.findall(pattern, text)