一、爬取网站
1.分析目标网站
首先我们需要分析目标网站的源代码
分析html得知所有的情话都是在标签
标签对应着一句情话。
2.编写代码
import bs4
import requests
#摘要:根据传入的url,爬取网站,如果有错误,则返回空字符
#传入:爬取的网址 string
#返回:爬取的html string
def getHtml(url):
try:
r=requests.get(url,timeout=30)
r.raise_for_status()
r.encoding=r.apparent_encoding
return r.text
except:
print('爬取失败')
return ''
#摘要:分析html,找到需要的字符串
#传入:爬取的网站html string
#返回:情话列表 list
def getQinghuaList(html):
qList=[]
soup=bs4.BeautifulSoup(html,"html.parser")
for p in soup.find_all("p"):
s=p.string
s=str(s)
s=s.split('、',1)
finals=s[-1]
qList.append(finals)
return qList
url='http://www.1juzi.com/new/45856.html'
html=getHtml(url)
q=getQinghuaList(html)
q
以下是爬取的部分情话
['不是你爱我,我就要爱你,爱情不是交换,我也不想交换。',
'我想触动你的心,就像你触动了我的心那样。',
'只为和你感触那爱的射线,在你我眼中那一霎那的交融!',
'有幸陪你从一而终,便是我此生最大的幸运。',
'天涯供你选,我只负责陪你,东奔西走挡寒风。',
'我的所有心事,所有想法,过去,现在,将来,只归结为一个声音,一个语调,如果它响起来,只能是:我爱你!',
'在你抑郁的时候,我就是你的开心果。在你忧伤的时候,我愿作你的忘忧树!',
'你清风白露守我百岁无忧,我凤冠霞帔许你此生不渝。',
'你就是我最困难时的那位永远支持我的人。',
'一生算不算太久,有没有尽头,够不够带我走。',
……………………
……………………
……………………
'我没有勇气折断我的翅膀,却也飞不到任何地方。',
'依依脉脉两如何,细似柔丝渺似波。月不常圆花易落,一生惆怅为伊多。',
'我的眼睛必定有问题,由于我的视线始终无奈从你的身旁移开。',
'如果有一天,我无法继续呼吸,那只是说明,我的世界缺少了空气,或者,缺少了你。',
'总是想念着你,虽然我们无法共同拥有每分每秒。',
'在生活的激流里,我的船会永远追随你,伴你一程又一程,平安驶向目的地,到达目标后我会告诉你:一生不想离开你。',
'当我转身时,你已不在了路口,是我回应的太慢,还是你走的太快。',
'曾经有一份真挚得爱情摆在我面前,我没有去珍惜。',
'我学会了深夜把手机关机。然后塞到枕头下面,沉沉睡去。',
'爱之火,在我俩的心中燃起,从此我俩将被熔在一块。',
'你可不可以看着我的眼,就当是我的奢望。']
二、将爬取的情话绘制词云
1.什么是词云
“词云”就是通过形成“关键词云层”或“关键词渲染”,对网络文本中出现频率较高的“关键词”的视觉上的突出。
词云图过滤掉大量的文本信息,使浏览网页者只要一眼扫过文本就可以领略文本的主旨。
利用python第三方库wordcloud可以绘制词云图
3.编写代码
#摘要:利用jieba中文分词库将情话分割成一个个词汇
#传入:list情话列表
#返回:srting情话字符串文本
def splitList(l):
fList=str()
for s in l:
sList=jieba.cut(s,cut_all=False)
for i in sList:
if i in [',','。','?','!','*','‘','’','“','”','、',';']:
continue
fList+=i
fList+=' '
return fList
#词云背景颜色函数
def random_color_func(word=None, font_size=None, position=None, orientation=None, font_path=None, random_state=None):
h = random.randint(90,360)
s = int(100.0 * 255.0 / 255.0)
l = int(100.0 * float(random.randint(60, 120)) / 255.0)
return "hsl({}, {}%, {}%)".format(h, s, l)
word=splitList(q)
back_color = np.array(imageio.imread('./1923.png_860.png'))#传入爱心图片,背景需设为透明
#设置词云
wc = wordcloud.WordCloud(
background_color='white',#背景色为白色
mask=back_color,#用上面传入的图片绘制词云
random_state=10,#设置有多少生成状态,即多少种词的颜色
color_func=random_color_func,#上面的颜色控制函数
font_path="C:\\Windows\\Fonts\\simkai.ttf"#中文字体的路径
)
wc.generate(word)#生成词云
wc.to_file('1900pro2.png')#导出词云图片
plt.imshow(wc)#展示图片
plt.axis('off')#取消坐标轴
plt.show()
三、后记
技术是为人类服务的,因此数据可视化非常重要,词云就是一个非常好的展示高频关键词的工具,也希望我能多读一些文学书籍,这样就不需要爬情话来show了。
参考链接情话大全浪漫情话短句_句子大全www.1juzi.com情话大全浪漫情话短句_句子大全www.1juzi.comwordcloudgithub.comjieba最好的 Python 中文分词组件github.com