公主岭网站建设,网页页面布局,百度快照在哪里找,高中作文网站最近上海好像有举行个什么维吾尔族的秘密时装秀#xff0c;很好看的样子#xff0c;不过我还没时间看。但是微博上已经吵翻了天#xff0c;原因是好吧#xff0c;这不是我们关心的#xff0c;我的心里只有学习我爱学习
Python 爬虫
本次爬取的是这条微博这条微博
微博的移…最近上海好像有举行个什么维吾尔族的秘密时装秀很好看的样子不过我还没时间看。但是微博上已经吵翻了天原因是好吧这不是我们关心的我的心里只有学习我爱学习
Python 爬虫
本次爬取的是这条微博这条微博
微博的移动版网页还是比较好爬的首先打开这条 微博的页面 然后按下 F12打开开发者工具选择 network 面板
然后鼠标滚轮向下滑可以看到 network 面板产生新的请求我们选择按 Type 排序找到 xhr 类型寻找评论接口
可以看到出现了两个奇怪的请求它们的尾部都跟着 page * 我们选择其中一个双击来到了一个新的页面评论的 json 数据
这就是评论的 json 格式数据这样我们就找到了微博评论的 API 接口。
接下来就是 python 爬虫代码有了 API 接口爬虫也就不难写了
scrap_ximengyao_weibo.py
import requests
import json
import re
# source_wei_wo_url https://m.weibo.cn/status/4176281144304232
def get_comment(head_url, count):
i 1
fp open(奚梦瑶.txt, a, encodingutf8)
while i count:
try:
url head_url str(i)
resp requests.get(url)
resp.encoding resp.apparent_encoding
comment_json json.loads(resp.text)
comments_list comment_json[data]
for commment_item in comments_list:
username commment_item[user][screen_name]
comment commment_item[text]
label_filter re.compile(r?\w[^]*, re.S)
comment re.sub(label_filter, , comment)
fp.write(comment)
print(i)
except Exception as e:
print(str(i) 遇到异常)
continue
i 1
fp.close()
if __name__ __main__:
head_url https://m.weibo.cn/api/comments/show?id4176281144304232page
get_comment(head_url, 40000)
本来每请求一次接口就会返回来 10 条评论目前她微博有 36 万评论所以我把 while 循环设为了请求 40000 次但是要全部爬完花的时间太长了我可没那闲工夫一直等着它跑完。所以爬到 1 万多次的时候我就手动停止爬虫了
爬虫运行停止之后我们在爬虫的同名目录下得到了一个 “奚梦瑶.txt”大约包含了10万条网友评论。有的小伙伴就要开始问了既然我们拿到了评论文本现在是不是就可以进行分词了Too Young!
由于评论里包含了太多的 emoji 表情直接分词的话会导致解码错误所以我们还要再对评论进行一次过滤过滤掉非中文字符准确来说是过滤掉非 GBK 编码字符
评论过滤
过滤的原理很简单就是用 python 把“奚梦瑶.txt”这个文件读取进来换个编码然后再写入一个新文件“ximengyao.txt”
filter_ximengyao_weibo.py
fp open(奚梦瑶.txt, encodingutf-8, errorsignore)
new_fp open(ximengyao.txt, w, encodinggbk, errorsignore)
try:
all_text fp.read()
new_fp.write(all_text)
finally:
fp.close()
new_fp.close()
分词
分词的解决方案有很多本来我是想直接用 图悦 在线分词生成词云的但是文本太多了图悦已经奔溃后来我选择了 结巴分词 来手动分词
首先安装结巴分词
pip install jieba
我们的目的是选取评论中词频最高的 100 个词组以降序将他们排列然后做成词云。我在简书找到了一位网友写的博客正好满足我们的需求
用jieba分词提取关键词做漂亮的词云
其实接下来你就可以去看他的博客了
这里贴一下我的分词代码毕竟我是一个有始有终的人
jieba_ximengyao_weibo.py
import jieba.analyse
path ximengyao.txt
file_in open(path, r)
content file_in.read()
try:
# jieba.analyse.set_stop_words(你的停用词表路径)
tags jieba.analyse.extract_tags(content, topK100, withWeightTrue)
for v, n in tags:
#权重是小数为了凑整乘了一万
print(v \t str(int(n * 10000)))
finally:
file_in.close()
有一点需要注意这个 词云制作 网站是不支持中文字体的所以你需要从网上下载一款中文字体然后添加进去。
生成词云图词频最高的词居然是“回复”我这暴脾气
不过这也是情理之中原创的评论有限许多都是吵架盖楼的。这里把我们把“回复”这个词删掉用剩下的词重新制作一个词云删掉“回复”
最终结果词云图
郑重声明最终结果不代表本人观点
再见