爬取哈哈笑话
一、爬取哈哈笑话
目标:
- 实现文档爬取
- 实现词云
- 实现词频分析
import re
import requests
import wordcloud
from imageio import imread
import jieba
"""
@author RansySun
@create 2019-07-22-15:07
"""
def haha_reptile():
"""爬取哈哈笑话,获取文档"""
data_res = ""
for i in range(1, 16):
# http://www.haha56.net/main/lx_joke/list_2_1.html
response = requests.get(f'http://www.haha56.net/main/lx_joke/list_2_{i}.html')
response.encoding = 'gb2312'
data = response.text
data_title = re.findall('<dt><a href=".*?" target="_blank">(.*?)</a></dt>', data)
"""
<dd class="preview">一打开朋友圈 一打开朋友圈, 就像误入了高帅富、白富美的私人会所, 满目是天天念经的商务精英, 顿悟人生的上流人士。 瞬间觉得不配跟人家做朋友。 喜欢你的人一定很少吧 喜欢你的人一定很少吧? 才不是呢 很多? 是根本没有。 你丫看...</dd>
"""
data_content = re.findall('<dd class="preview">(.*?)</dd>', data)
title_content_dic = {}
title = ""
content = ""
for j in range(len(data_title)):
title += data_title[j]
content += data_content[j]
data_res = data_res + title + content
return data_res
def haha_wordcloud():
"""生成词云"""
data = haha_reptile()
mask = imread(r"E:\python实训\python预科班\day07\testciyun.png")
w = wordcloud.WordCloud(font_path=r"C:\Windows\Fonts\STFANGSO.TTF", background_color="white", mask=mask)
w.generate(data)
w.to_file("哈哈笑话词云.png")
print("词云生成成功")
def haha_jieba():
"""词频分析"""
data_dic = {}
data = haha_reptile()
data_jieba = jieba.lcut(data)
for res in data_jieba:
if len(res) == 1 or res.startswith("."):
continue
if res in data_dic:
data_dic[res] += 1
else:
data_dic[res] = 1
# 排序
def func(i):
return i[1]
data_list = list(data_dic.items())
data_list.sort(key=func, reverse=True)
data_list = data_list[:10]
for result in data_list:
print(f"{result[0]: <10}|{result[1]: <8}")
haha_wordcloud()
haha_jieba()
结果:
词频统计
一个 |52
老婆 |51
笑话 |37
什么 |36
老公 |35
今天 |30
怎么 |28
冷笑 |24
因为 |22
爆笑 |21
在当下的阶段,必将由程序员来主导,甚至比以往更甚。