python爬虫网站 词云_Python爬虫之爬取情话网站并绘制词云

一、爬取网站

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.comwordcloud​github.comjieba最好的 Python 中文分词组件​github.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值