Python 学习之路------0723(python爬虫实现爬取网页文本并做词频词云)

python爬虫

 

1.爬取识货篮球鞋首页并对球鞋品牌做词频统计生成词云

          思路:

一、爬网页

1.导包  2.爬取对象的链接  3.获取网页信息  4.通过正则清洗数据 5.创建一个字符串变量接收 爬取出来的信息并变成一个完整的字符串(拼接字符串) 

二、词频统计

1.创建一个字典用于保存整理后的字符串 2.jieba库进行分割 3.剔除掉异常数据并对词频数据进行统计 4.定义一个函数用于保存数字数据 5.把字典类型转换成列表类型并对第二列进行排序、逆序 

三、词云制作

1.构造字符串变量保存统计后的列表类型的词语  2.设置一个变量用于保存呈现图片路径 3.导入中文字体,创建词云面板 4.获取字符串变量 5.生成一个新的词语图片

 

##### 爬取阶段
# 导入模块包
import requests
import re
import jieba
import wordcloud
from imageio import imread
# 对象链接
url = "http://www.shihuo.cn/basketball"
# 获取网页信息
response = requests.get(url)
text = response.text
# print(text)
# 正则 拿到自己的需求数据
shoe_name = re.findall('<div class="title">(.*?)</div>', text)
print(shoe_name)
# 创建字符串并连接已爬的信息列表
shoe_name_str = ""
for name in shoe_name:
    shoe_name_str += name
# print(shoe_name_str)

##### 词频统计
# import jieba
# 创建一个字典用来统计词语
shoe_name_dict = {}
# 对词语首次进行分割
shoe_name_jieba = jieba.lcut(shoe_name_str)
# print(shoe_name_jieba)
# 分割之后加循环,去除一些无用的数据,同时对词语数量进行统计
for data in shoe_name_jieba:
    if len(data) == 1 or data == "蓝黑" or data == "篮球鞋" or data == "黑色" or data == "11":
        continue
    if data not in shoe_name_dict:
        shoe_name_dict[data] = 1
    else:
        shoe_name_dict[data] += 1
# 定义函数,保存字典中的数字数据
def num(i):
    return i[1]
# 把统计好后的字典数据转换成列表
shoe_name_list = list(shoe_name_dict.items())
# 对列表中的数据进行排序
shoe_name_list.sort(key=num, reverse=True)
# 取出列表中出现最多的二十个词
for i in shoe_name_list[:20]:
    print(i)
    # print(f'{i[0]: <20} {i[1]}')
##### 词云制作阶段
# 定义一个变量用来存放要做词云的字符
cloud_data = ''
# 把爬出来的字符放到该变量中
for word in shoe_name_list:
    cloud_data += word[0] + ' '
# 创建一个词云的面板
# 设置词语图片
mask = imread(r'C:\Users\Administrator\Desktop\timg_副本.png')
w = wordcloud.WordCloud(font_path="C:\Windows\Fonts\simsun.ttc",  mask=mask, width=1000, height=700, background_color="black")
# 将字符写入到词云面板里面
# w.generate(shoe_name_jieba)
w.generate(cloud_data)
# 输出制作好的词云
w.to_file("识货.png")
  • 2
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值