本文使用py3中flask框架搭建了一个在线评论生成词云的网站。
- 面向人群:拥有python爬虫基础基础,不会使用flask框架也可以良好食用。
首先演示一下效果:
输入复仇者联盟
就可以得到由这部电影的豆瓣评论生成的词云。
看完效果,我们讲一下实现的流程。不贴代码。最后会放上代码的github链接。在这里主要讲一下实现步骤。
整体布局
- 服务器端
1.获得代理IP
我们知道通过爬虫获得一个网站的信息,如果被网站发现在极短时间内有同一IP发送多次请求。那么此网站就会屏蔽此IP。为此,我们需要大量的代理IP。我们在这个网址上获得代理IP:
通过爬虫获得IP
但是这个网址上的IP地址并不是所有的都可以用,因此我们需要进行检验,通过访问如下的网址,检验此IP是否可用。
于是我们需要写个名为myProxies的脚本,来获得代理IP。
2.获得豆瓣电影资源
获得电影名字之后,我们就要访问该网址,例如,我们想查看银魂这部电影,那么此时q=银魂。
获得电影资源
明显可以看出这是一个json类型的数据,传递到服务器端的时候,我们暂时只获取第一个电影的值。这里每个电影都有自己的id。例如第一个电影的id为26816086。我们需要用这个id来访问另外的网址。
这样我们就获得了评论,start=20是指低20条评论,limit=20是指显示20。我们只需每次改变start=n中n的值即可(n=0,20,40,.....)。
银魂电影大家的评论
然后我们解析网页,将每个人的评论都保存在字符串中,使用jieba库分词,将结果传递给wordcloud库,就可以生成又评论组成的词云。至此服务器端工作就已经全部完成。如果没有flask的基础,直接下载代码即可。其中Spider1和myProxies均可以单独运行。分别是生成词云以及获得代理IP。
- 客户端
使用flask框架,服务器端如下:
结构如下
主要流程就是客户端使用AJAX传递电影名,然后服务器接收,处理之获得词云,然后通过AJAX将图片地址传递给客户端。static/images下就是生成的图片。templatesPicture是一个模板图片,及生成词云的形状。具体实现见代码。
代码链接:
heucoder/Moive_wordCloudgithub.com
知乎:
https://www.zhihu.com/people/233333-4/posts
有问题欢迎来撩