python爬虫之一百单八将,《水浒传》108将好汉词云

诗曰:
万姓熙熙育化中,三登之世乐无穷。岂知礼乐笙镛治,变作兵戈剑戟丛。
水浒寨中屯节侠,梁山泊内聚英雄。细推治乱兴亡数,尽数阴阳造化功。

开发环境

  • python3.7
  • requests模块 -lxml模块 -PIL模块
  • -jieba模块 -wordcloud模块 -numpy模块

获取分析

既然是108将,那就从最简单的108将百度百科里获取好汉的名字。通过源代码发现该页面为静态页面,直接请求就能获取。

#百度百科108将好汉
url = "https://baike.baidu.com/item/%E4%B8%80%E7%99%BE%E5%8D%95%E5%85%AB%E5%B0%86/19408?fromtitle=108%E5%B0%86&fromid=164941&fr=aladdin"
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}

response = requests.get(url,headers = headers).content.decode('utf-8')
html = etree.HTML(response)
persons = html.xpath('//body/div[3]/div[2]/div/div[2]/table//tr/td[4]/div/a//text()')

获取到108位好汉的名字后,将这108位好汉的名字添加到jieba模块里的字典里,以便准确分词。

#词频统计
a = ''.join(lines)
fenci = jieba.cut(a,cut_all=True)
for one in persons:
    wordict[one] = 0
for word in fenci:
    if word in persons:
        wordict[word] = wordict[word] + 1
    else:
        pass
x = dict(wordict.items())   #词频{宋江:4000,林冲:2000}

上述分词得到词频,运用PIL模块以及wordcloud模块来制作生成词云。

#绘制图云
img = PIL.Image.open('timg1.jpg') #打开模板图片   
img_array = np.array(img) 
wc = wordcloud.WordCloud(
    background_color='black',
    mask=img_array,
    font_path="C:\\Windows\\Fonts\\simsun.ttc" 
)
wc.generate_from_frequencies(x)#词频生成词云  
wc.to_file('小形状词云.jpg')  #保存图片

结果展示:

小形状词云
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容