网站空间太小,南昌网站系统,免费视频素材,上海企业网上公示目录
#x1f4da;链接爬取
#x1f407;流程梳理
#x1f407;代码实现
#x1f407;结果
#x1f4da;词云生成
#x1f407;代码实现
#x1f407;结果 #x1f4da;链接爬取
#x1f407;流程梳理 总体流程是#xff1a;构建搜索链接 - 发送HTTP请求…目录
链接爬取
流程梳理
代码实现
结果
词云生成
代码实现
结果 链接爬取
流程梳理 总体流程是构建搜索链接 - 发送HTTP请求 - 解析网页内容 - 提取标题和链接 - 判断重复 - 写入csv工作表 - 保存csv工作簿。 循环遍历100页暂定实现翻页的搜索结果完成全部数据的提取和保存。 key在百度搜索结果页面中通常每个搜索结果都包含在一个h3标签内并具有一个特定的CSS类名为t。
代码实现
# 发送HTTP请求并处理URL
import urllib
from urllib import request, parse
# 管理和处理HTTP请求和响应中的Cookie信息
import http.cookiejar
# 解析和提取HTML/XML数据
from bs4 import BeautifulSoup
# 读取和编辑数据
import openpyxl
import random
import time# 随机等待时间的函数
# 避免以高频率向服务器发送请求造成宕机
def random_wait():# 生成一个随机的等待时间范围为1到5秒wait_time random.uniform(1, 5)time.sleep(wait_time)# 创建一个新的Excel工作簿对象
workbook openpyxl.Workbook()
# 返回工作簿中的活动工作表对象表明之后的代码对这个工作表进行操作
worksheet workbook.active
# 添加标题
worksheet.append([Titles, Links])
# 标题集合用于之后重复标题的处理
titles_set set()word input(请输入搜索的关键词)
for page in range(1, 101):print(现在是第 str(page) 页)# quote()函数用于将字符串进行URL编码link http://www.baidu.com/s?wdurllib.parse.quote(word)url f{link}?page{page}headers {Accept: text/html, application/xhtmlxml, image/jxr, */*,Accept - Encoding: gzip, deflate, br,Accept - Language: zh - CN,Connection: Keep - Alive,User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0,# 请求的来源页面referer: baidu.com}# 创建一个CookieJar对象用于保存网站返回的Cookie信息。Cookie http.cookiejar.CookieJar()# 创建一个opener对象使用CookieJar处理器来处理Cookie实现Cookie的自动管理。opener urllib.request.build_opener(urllib.request.HTTPCookieProcessor(Cookie))# 将headers字典中的键值对转化为元组并添加到headall列表中。pairs []for key, value in headers.items():item (key, value)pairs.append(item)# 将pairs列表设置为opener的请求头opener.addheaders pairs# 将opener安装为全局默认的urlopen()函数的opener。urllib.request.install_opener(opener)# 发送请求并获取网页内容。data urllib.request.urlopen(url).read().decode(utf-8)# 解析网页内容生成BeautifulSoup对象。soup BeautifulSoup(data, html.parser)# 查找名为h3class属性为t的HTML元素# 在百度搜索结果页面中通常每个搜索结果都包含在一个h3标签内并具有一个特定的CSS类名为t。for result_table in soup.find_all(h3, class_t):# 调用等待时间函数防止宕机random_wait()a_click result_table.find(a)# 获取标题title a_click.get_text()# 获取链接link str(a_click.get(href))# 如果标题已经存在于集合中跳过此条记录而且不要视频大全if title in titles_set or 视频大全 in title:continue# 将标题添加到集合中titles_set.add(title)print(标题: title) # 标题print(链接: link) # 链接worksheet.append([title, link])workbook.save(AI换脸_法律_案件.csv)
结果
关键词设置为AI换脸 法律 案件 词云生成
代码实现
用爬取的全部标题来构建词云
# coding:utf-8
import jieba # 导入分词库
import collections # 导入collections库用于词频统计
import wordcloud # 导入生成词云图的库
import matplotlib.pyplot as plt # 导入绘图库# 打开文件
with open(rAI换脸_法律_案件.txt, encodingutf-8) as f:data f.read()# 使用jieba库进行分词默认精确模式
w_cut jieba.cut(data, cut_allFalse)# 存储分词结果的列表
word_list []
# 设置排除词
word_remove [u, u , u。, u、, u\n, u, u(, u), u“, u”, u,, u!, u?, u【, u】, u..., u_, u:, |, -, u的, u是, u了, u我, u我们, u腾讯, u哔哩, u百度, u新浪, u你, u又, u被, u他, u谁, u人]
# 遍历分词结果过滤掉排除词将有效词添加到word_list中
for x in w_cut:if x not in word_remove:word_list.append(x) # 使用Counter进行词频统计
word_counts collections.Counter(word_list)
# 取出词频最高的前50个词
word_counts_top50 word_counts.most_common(50)
# 打印出前50个词云及对应数量
print(word_counts_top50)
# 将词频结果转换为字符串形式
word_counts_top50 str(word_counts_top50) w wordcloud.WordCloud(# 设置词云生成时的中文字体font_pathC:\Windows\Fonts\STKAITI.TTF, # 设置词云的背景颜色为白色background_colorwhite, # 设置词云图片的宽度width700, # 设置词云图片的高度height600, # 设置词云中显示的最大字体大小max_font_size180
)
# 根据词频生成词云图
w.generate_from_frequencies(word_counts)
# 创建一个绘图窗口
plt.figure(1, figsize(10, 8))
# 显示词云图
plt.imshow(w)
# 不显示坐标轴
plt.axis(off)
# 展示图表
plt.show()
# 将词云图保存为图片文件
w.to_file(wordcloud_input.png) 关于jieba.cut除了 cut_all Falsejieba库还支持以下模式 cut_all True全模式将文本中的所有可能是词的部分都进行分词可能会产生冗余和不常见的词。cut_for_search True搜索引擎模式将文本中可能是词的部分进行分词同时使用了较多的细粒度切分适用于搜索引擎构建索引或相关场景。HMM True开启隐式马尔可夫模型Hidden Markov Model用于在未登录词out-of-vocabularyOOV的情况下进行中文分词适用于处理未登录词较多的场景。关于字体设置font_pathC:\Windows\Fonts\STKAITI.TTF在控制面板 - 外观与个性化 - 字体处可以找到心仪字体。 结果 补报错杂货铺