用python结合jieba和wordcloud实现词云效果

 更新时间:2017年09月05日 08:48:11   作者:LSA  
词云,顾名思义就是很多个单词,然后通过出现的频率或者比重之类的标准汇聚成一个云朵的样子嘛,其实呢现在网上已经有很多能自动生成词云的工具了,比如Wordle,Tagxedo等等,Python也能实现这样的效果,我们通过jieba库和wordcloud库也能十分轻松的完成词云的构建

0x00 前言

突然想做一个漏洞词云,看看哪些漏洞比较高频,如果某些厂商有漏洞公开(比如ly),也好针对性挖掘。就选x云吧(镜像站 http://wy.hxsec.com/bugs.php )。用jieba和wordcloud两个强大的第三方库,就可以轻松打造出x云漏洞词云。

github地址: https://github.com/theLSA/wooyun_wordcloud

本站下载地址:wooyun_wordcloud

0x01 爬取标题

直接上代码:

#coding:utf-8
#Author:LSA
#Description:wordcloud for wooyun
#Date:20170904

import urllib
import urllib2
import re
import threading
import Queue

q0 = Queue.Queue()

threads = 20

threadList = []

def gettitle():
 while not q0.empty():

 i = q0.get()
 url = 'http://wy.hxsec.com/bugs.php?page=' + str(i)
 html = urllib.urlopen(url).read()
 reg = re.compile(r'<li style="width:60%;height:25px;background-color:#FFFFFF;float:left" ><a href=".*?" rel="external nofollow" >(.*?)</a>')
 titleList = re.findall(reg,html)
 fwy = open("wooyunBugTitle.txt","a")
 for title in titleList:
 fwy.write(title+'\n')
 fwy.flush()
 fwy.close()
 print 'Page ' + str(i) + ' over!'

def main():
 for page in range(1,2962):
 q0.put(page)
 for thread in range(threads):
 t = threading.Thread(target=gettitle)
 t.start()
 threadList.append(t)
 for th in threadList:
 th.join()

 print '***********************All pages over!**********************'

if __name__ == '__main__':
 main()

0x02 打造词云

还是直接上代码:

# coding: utf-8

import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt

data = open("wooyunBugTitle.txt","r").read()
cutData = jieba.cut(data, cut_all=True)
word = " ".join(cutData)

cloud = WordCloud(
 #设置字体,不指定可能会出现中文乱码
 font_path="msyh.ttf",
 #font_path=path.join(e,'xxx.ttc'),
 #设置背景色
 background_color='white',
 #词云形状
 #mask=color_mask,
 #允许最大词汇
 max_words=2000,
 #最大号字体
 max_font_size=40
 )

wc = cloud.generate(word)
wc.to_file("wooyunwordcloud.jpg") 
plt.imshow(wc)
plt.axis("off")
plt.show()

0x03 效果演示:

0x04 结语

由词云图可以看出,SQL注入依旧风光无限,其次是命令执行,继而是信息泄漏,整体看还是比较直观的。

相关文章

  • 在Django下创建项目以及设置settings.py教程

    在Django下创建项目以及设置settings.py教程

    今天小编就为大家分享一篇在Django下创建项目以及设置settings.py教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • pandas parse_dates参数的使用

    pandas parse_dates参数的使用

    在Pandas中,parse_dates参数用于将数据框中的某列转换为时间类型,而index_col参数则将某列设置为索引。通过这两个参数,可以有效地管理和操作时间序列数据。例如,将'Date'列转为时间类型并设置为索引,可以方便地进行时间序列分析和操作
    2024-09-09
  • Python实现批量将MP3音频转为WAV格式详解

    Python实现批量将MP3音频转为WAV格式详解

    这篇文章主要介绍了通过Python实现将MP3音频转为WAV格式的方法,文中的示例代码讲解详细,对我们学习Python有一定帮助,感兴趣的可以了解一下
    2021-12-12
  • python numpy库之如何使用matpotlib库绘图

    python numpy库之如何使用matpotlib库绘图

    Numpy的主要对象是同构多维数组,它是一个元素表,所有类型都相同,由非负整数元组索引,在Numpy维度中称为轴,这篇文章主要介绍了python numpy库 使用matpotlib库绘图,需要的朋友可以参考下
    2022-10-10
  • 神经网络相关之基础概念的讲解

    神经网络相关之基础概念的讲解

    今天小编就为大家分享一篇关于神经网络相关之基础概念的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • python基础之匿名函数详解

    python基础之匿名函数详解

    这篇文章主要介绍了python基础之匿名函数详解,文中有非常详细的代码示例,对正在学习python基础的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-04-04
  • 基于python的itchat库实现微信聊天机器人(推荐)

    基于python的itchat库实现微信聊天机器人(推荐)

    这篇文章主要介绍了基于python的itchat库实现微信聊天机器人,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • Python Pickling 和 Unpickling 的区别

    Python Pickling 和 Unpickling 的区别

    Python中的Pickling和Unpickling是与数据序列化和反序列化相关的重要概念,本文主要介绍了Python Pickling和Unpickling的区别,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • python 获取星期字符串的实例

    python 获取星期字符串的实例

    这篇文章主要介绍了python 获取星期字符串的实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • 详解Python执行py文件是否需要可执行权限

    详解Python执行py文件是否需要可执行权限

    这篇文章主要通过几个案例为大家详细介绍一下在Python中执行py文件是否需要可执行权限,文中的示例代码讲解详细,对我们学习Python有一定帮助,需要的可以了解一下
    2023-03-03

最新评论