首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

向娱乐圈靠拢,Python爬取微博评论并制作酷炫的词云!

2019年伊始,祝愿各位多吃不胖,身体倍儿棒!

回顾刚刚过去的2018,还有哪些新闻在你心底留有印象?

怎奈年纪增长,记忆减退,逝去的爆炸新闻也逐渐褪色变得索然无味,毕竟一直以来我的心里只有学习。

学习Python中有不明白推荐加入交流群

群里有志同道合的小伙伴,互帮互助,

群里有不错的视频学习教程和PDF!

本期主题就是:用python爬取2018年度热门话题微博评论,并生成酷炫的词云,帮助青春年少已经开始脱发掉发的我们花式装B重回热点一线。

废话不多说,先上效果图!

小白的第一次尝试(爬取了东哥致歉微博下的500页,大约5000条评论)

第二次尝试(爬取了杨幂离婚热搜下约1500页,15000条评论)

工具:

Anaconda3(Python3)版本不同,模块的使用方式可能有差异,以下代码针对py3;

另外需要大神一枚,救你于bug的水火之中,此处手动感谢@joey大大。

时间:

本帖代码编写时间为2019年1月,由于各大平台反扒技术日益增进,请注意参考的时效性,如遇爬取上的困难欢迎在评论区交流学习。

01

爬取微博评论数据

这一步是从网上爬取自己想要生成词云的文本,如果你只是想生成简单的词云请直接跳至02。

现在的大厂对于爬虫爱好者来说可以说是一点都不客气,反爬措施日益完善。虽然微博出了API供爬虫爱好者们使用,但是据说只能爬取500个评论......

我想了一下,谢谢网易爸爸,我还是自己爬吧。

在呕心沥血查看了微博网页端(http://weibo.com),微博手机端(http://m.weibo.cn)以及微博移动端(http://weibo.cn)的源代码和相当多的技术贴之后,我终于发现了如下规律:最难看的微博端就是最好爬的微博端!(划重点!!!)

难度程度排序如下:网页端>手机端>移动端

因此我恬不知耻毫无犹豫地选择了最容易上手的移动端。

它长这样:

睁大你的小眼睛,仔细看看可以发现url的规律:

注意到每页评论的url最后有page= ,第一页是1,第二页会变为2。

找到了这个突破口后面的就简!单!啦,附上源代码,可以直接食用:

源代码-爬取评论

import requests

import re

import time

def get_one_page(url):#请求函数:获取某一网页上的所有内容

headers = {

'User-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',

'Host' : 'weibo.cn',

'Accept' : 'application/json, text/plain, */*',

'Accept-Language' : 'zh-CN,zh;q=0.9',

'Accept-Encoding' : 'gzip, deflate, br',

'Cookie' : '你的浏览器cookie'

'DNT' : '1',

'Connection' : 'keep-alive',

}#请求头的书写,包括User-agent,Cookie等

response = requests.get(url,headers = headers)#利用requests.get命令获取网页html

if response.status_code == 200:#状态为200即为爬取成功

return response.text#返回值为html文档,传入到解析函数当中

return None

def parse_one_page(html):#解析html并存入到文档result.txt中

pattern = re.compile('.*?', re.S)

items = re.findall(pattern,html)

result = str(items)

with open('result.txt','a',encoding='utf-8') as fp:

fp.write(result)

for i in range(2248):

url = "https://weibo.cn/comment/H8rl86nN6?uid=1618051664&rl=1&page"+str(i)

html = get_one_page(url)

print('正在爬取第 %d 页评论' % (i+1))

parse_one_page(html)

time.sleep(2)

运行完成后可以在result.txt中查看结果。

02

利用结巴分词进行分词

安装包

在Anaconda promote中输入pip install jieba,等待程序自动安装即可。

源代码-分词

import jieba.analyse

path = 'E:/python/python_test/result.txt' #第一步爬虫结果存储的路径

file_in = open(path,'r',encoding='utf-8')

content = file_in.read()

try:

tags = jieba.analyse.extract_tags(content, topK=100, withWeight=True)

for v, n in tags:#权重是小数,为了凑整,乘了一万

print(v + '' + str(int(n * 10000)))

finally:

file_in.close()

03

利用wordart绘制图云

如果已经顺利完成前面两步,那最后这步就十分简单啦!

create now

打开https://wordart.com/,点击create now即可生成词云。

添加字体

由于wordart本身不支持中文,,因此如果你的词云是由中文词语构成的,需要自己添加下字体。

点击add front添加字体。

这里有两个中文字体链接,大家有需要请自取:

1. https://noto-website.storage.googleapis.com/pkgs/NotoSansCJKsc-hinted.zip

2. https://noto-website.storage.googleapis.com/pkgs/NotoSerifCJKsc-hinted.zip

添加word

将第二步程序输出的结果粘贴到这里:

欣赏自己的佳作

小指一点红色按钮Visualize就可以看到自自自己己己做的词云啦!恭喜!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190108A0NM6E00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券