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

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

开发环境

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

获取分析

python爬虫之一百单八将,《水浒传》108将好汉词云_第1张图片

既然是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')  #保存图片

结果展示:

python爬虫之一百单八将,《水浒传》108将好汉词云_第2张图片
python爬虫之一百单八将,《水浒传》108将好汉词云_第3张图片
小形状词云

你可能感兴趣的:(python爬虫之一百单八将,《水浒传》108将好汉词云)