python爬虫:快到情人节啦,做些爱心图片

本文介绍了一种使用Python爬虫抓取特定网站上的甜言蜜语,并利用jieba进行分词处理,最后生成词云的过程。具体步骤包括定义目标URL、发送请求获取网页内容、解析HTML提取所需数据、保存文本并进行分词处理,以及根据词频统计结果生成词云。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

爬虫代码:

#encoding=utf-8
import requests
from bs4 import BeautifulSoup
import time
import random

urls = ['https://www.duanwenxue.com/huayu/tianyanmiyu/list_{}.html'.format(str(i)) for i in range(1,50)]

def get_one_page(url):
    resp = requests.get(url)
    if resp.status_code == 200:
        soup = BeautifulSoup(resp.text,'lxml')
        phases = soup.select('body > div.row.inner-row > div.row-left > div.list-short-article > ul > li > p > a')
        with open(u'C:\\Users\Administrator\Desktop\sweet_words.txt', 'wb') as f:
            for phase in phases:
                data = phase.get_text()
                print(data)
                f.write(data.encode('utf-8'))
    else:
        print('not found')

if __name__ == '__main__':
    for url in urls:
        get_one_page(url)
        time.sleep(random.randint(2,10))
        print('ok')
分词及词云
import jieba 
import numpy as np
import codecs
import pandas
import matplotlib.pyplot as plt 
from scipy.misc import imread
from wordcloud import WordCloud,ImageColorGenerator
#分词
file=codecs.open(u"C:\\Users\Administrator\Desktop\sweet_words.txt",'r',encoding='UTF-8')
content=file.read()
file.close()
segment=[]
#jiaba调用了自己的分词算法,将切分好的文本按逗号分隔符分开
segs=jieba.cut(content)
for seg in segs:
    if len(seg)>1 and seg!='\r\n':
        segment.append(seg)
#统计分词结果
words_df=pandas.DataFrame({'segment':segment})#组建数据框pandas.DataFrame
words_df.head()
words_stat=words_df.groupby(by=['segment'])['segment'].agg({"计数":np.size})
words_stat=words_stat.reset_index()
words_stat
%matplotlib
#生成一个matplot对象,传入一个字体位置的路径和背景颜色即可
wordcloud=WordCloud(font_path="C:\simhei.ttf",background_color="white",max_words=200)
#WordCloud方法接受一个字典结构的输入,我们前面整理出来的词频统计结果是数据框的形式,因此需要转换,转换的方法,
#首先把分词设置为数据框的索引,然后在调用一个to_dict()的方法,就可以转换为字典的机构
words=words_stat.set_index('segment').to_dict()
#接着调用fit_words方法来调用我们的词频
wordcloud.fit_words(words['计数'])
#绘图
plt.imshow(wordcloud)
plt.show()

不同字体网上都能搜到,桃心图片是用ps裁剪的,一定要是桃心形状,而不是方形的图片




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值