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('(.*?)', 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")