爬虫 | 【实践】百度搜索链接爬取,生成标题词云 | 以“AI换脸”为例

目录

📚链接爬取

🐇流程梳理

🐇代码实现

🐇结果

📚词云生成

🐇代码实现

🐇结果


📚链接爬取

🐇流程梳理

  • 总体流程是:构建搜索链接 -> 发送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?wd="+urllib.parse.quote(word)url = f"{link}?page={page}"headers = {"Accept": "text/html, application/xhtml+xml, 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')# 查找名为'h3',class属性为'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(r"AI换脸_法律_案件.txt", encoding='utf-8') as f:data = f.read()# 使用jieba库进行分词,默认精确模式
w_cut = jieba.cut(data, cut_all=False)# 存储分词结果的列表
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_path='C:\Windows\Fonts\STKAITI.TTF',  # 设置词云的背景颜色为白色background_color='white',  # 设置词云图片的宽度width=700,  # 设置词云图片的高度height=600,  # 设置词云中显示的最大字体大小max_font_size=180  
)
# 根据词频生成词云图
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 = False​,jieba库还支持以下模式:
    • cut_all = True​:全模式,将文本中的所有可能是词的部分都进行分词,可能会产生冗余和不常见的词。
    • cut_for_search = True​:搜索引擎模式,将文本中可能是词的部分进行分词,同时使用了较多的细粒度切分,适用于搜索引擎构建索引或相关场景。
    • HMM =True​:开启隐式马尔可夫模型(Hidden Markov Model),用于在未登录词(out-of-vocabulary,OOV)的情况下进行中文分词,适用于处理未登录词较多的场景。
  • 关于字体设置font_path='C:\Windows\Fonts\STKAITI.TTF',在控制面板 -> 外观与个性化 -> 字体处,可以找到心仪字体。

 

🐇结果


 补报错杂货铺:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/157726.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日自动化提交git

目前这个功能&#xff0c;有个前提&#xff1a; 这个git代码仓库&#xff0c;是一个人负责&#xff0c;所以不存在冲突问题 我这个仓库地址下载后的本地路径是&#xff1a;D:\Projects\Tasks 然后我在另外一个地方新建了一个bat文件&#xff1a; bat文件所在目录为&#xff1a…

中心线提取的全卷积网络【IPMI 2019】

论文地址&#xff1a;Excellent-Paper-For-Daily-Reading/medicine at main 类别&#xff1a;医学 时间&#xff1a;2023/11/02 摘要 论文提出了一种将端到端可训练多任务全卷积网络(FCN)与最小路径提取器相结合的中心线提取框架。FCN同时计算中心线距离图和检测分支端点。…

mmcv安装失败

MMCV官网有教程 需要和你的cuda、torch版本相对应 不知道版本可以直接在你的vscode里查看 新建个py文件&#xff1a;import torch;print(torch.version);print(torch.version.cuda) 安装成功

Unity Shader Graph HDRP Reflections Cubemap

主贴图 与 反射 过渡 可调节 因为shader graph 版本原因&#xff0c;略微跟教程不太一样 教程链接&#xff1a; https://www.youtube.com/watch?v943P0dGR4rQ

uniapp循环列表单选框实现单选

目录 图片源码参考最后 图片 源码 参考 大佬 最后 感觉文章好的话记得点个心心和关注和收藏&#xff0c;有错的地方麻烦指正一下&#xff0c;如果需要转载,请标明出处&#xff0c;多谢&#xff01;&#xff01;&#xff01;

【Python基础】变量基本使用

变量 1.变量定义02. 变量的类型2.1 变量类型的演练 —— 个人信息2.2 变量的类型2.3转义字符 3.变量输入输出3.1变量格式化输出 4.变量命名 1.变量定义 变量定义 • 在 Python 中&#xff0c;每个变量 在使用前都必须赋值 在使用前都必须赋值&#xff0c;变量 赋值以后 该变量…

win10开机启动软件 ,开机启动文件夹介绍【详解】

文章目录 前言一、开机自启的文件夹&#xff08;方法一&#xff09;二、使用【Windows R 】 打开运行窗口&#xff08;方法二&#xff09;三、示例总结 前言 发布出来的程序&#xff0c;客户需要开机自启&#xff0c;so 查了一下 一、开机自启的文件夹&#xff08;方法一&…

TIME_WAIT相关知识

四次挥手 这是TCP四次握手的过程图。 TCP 连接终止时&#xff0c;主机 1 先发送 FIN 报文&#xff0c;主机 2 进入 CLOSE_WAIT 状态&#xff0c;并发送一个 ACK 应答&#xff0c;同时&#xff0c;主机 2 通过 read 调用获得 EOF&#xff0c;并将此结果通知应用程序进行主动关闭…

shell script 案例二

需求&#xff0c;运行程序&#xff0c;用户输入firstname&#xff0c;回车&#xff0c;再次提示输入lastname&#xff0c;然后回车&#xff0c;屏幕打印fullname信息 注意&#xff1a;前期写程序要注意规范&#xff0c;方便以后自己写多了回头看可以看的懂&#xff0c;程序代码…

轧钢厂安全生产方案:AI视频识别安全风险智能监管平台的设计

一、背景与需求 轧钢厂一般都使用打包机对线材进行打包作业&#xff0c;由于生产需要&#xff0c;人员需频繁进入打包机内作业&#xff0c;如&#xff1a;加护垫、整包、打包机检修、调试等作业。在轧钢厂生产过程中&#xff0c;每个班次生产线材超过300件&#xff0c;人员在一…

B端企业形象设计的正确姿势,你学会了吗?

如今&#xff0c;企业形象设计在B端市场中变得越来越重要。它是企业与客户之间建立联系的桥梁&#xff0c;也是吸引目标客户的重要方式。为了帮助您打造一个独特而专业的企业形象设计&#xff0c;我将为您提供十个步骤。 步骤1&#xff1a;了解企业定位和目标 在设计B端企业形…