当前位置: 首页 > news >正文

`beautifulsoup4`(简称 BeautifulSoup)是 Python 中最常用、最强大的 HTML 和 XML 解析库之一

beautifulsoup4(简称 BeautifulSoup)是 Python 中最常用、最强大的 HTML 和 XML 解析库之一,专为从网页中提取结构化数据而设计。它不直接发起网络请求,通常与requests库配合使用:requests获取网页源码,BeautifulSoup解析并导航 DOM 树。

✅ 基本用法示例:

importrequestsfrombs4importBeautifulSoup url="https://example.com"response=requests.get(url)response.raise_for_status()# 检查请求是否成功soup=BeautifulSoup(response.text,'html.parser')# 推荐使用 'html.parser'(内置,无需额外安装)# 提取标题title=soup.title.stringifsoup.titleelseNone# 查找所有链接links=[a.get('href')forainsoup.find_all('a',href=True)]# 使用 CSS 选择器(更简洁)headings=soup.select('h1, h2, h3')# 查找带特定 class 的 divcontent=soup.find('div',class_='main-content')

⚠️ 注意事项:

  • 解析器选择:'html.parser'(轻量、稳定)、'lxml'(更快更容错,需pip install lxml)、'html5lib'(最接近浏览器解析,需pip install html5lib)。
  • 中文乱码问题:若网页编码非 UTF-8,需显式指定response.content+soup = BeautifulSoup(response.content, 'html.parser', from_encoding='gbk')或使用response.encoding自动识别。
  • 动态渲染内容(如 JS 生成的 DOM)无法被 BeautifulSoup 直接解析,需配合SeleniumPlaywright

✅ 安装命令:

pipinstallbeautifulsoup4 requests

使用 BeautifulSoup 提取网页中所有图片的src属性并去重,可按以下步骤实现:

✅ 正确做法(含健壮性处理):

importrequestsfrombs4importBeautifulSoupdefextract_unique_img_srcs(url):try:response=requests.get(url,timeout=10)response.raise_for_status()response.encoding=response.apparent_encoding# 自动识别编码,避免乱码soup=BeautifulSoup(response.text,'html.parser')# 查找所有 <img> 标签,并提取 src 属性(过滤空值和无效值)srcs=[]forimginsoup.find_all('img',src=True):# 只匹配有 src 属性的 img 标签src=img.get('src','').strip()ifsrcandnotsrc.startswith('data:'):# 可选:跳过 base64 内联图片# 处理相对 URL(转换为绝对 URL)fromurllib.parseimporturljoin absolute_src=urljoin(url,src)srcs.append(absolute_src)# 去重(保持出现顺序)→ 使用 dict.fromkeys() 是 Python 3.7+ 保持插入顺序的最简方式unique_srcs=list(dict.fromkeys(srcs))returnunique_srcsexceptExceptionase:print(f"解析失败:{e}")return[]# 示例调用urls=extract_unique_img_srcs("https://example.com")print(f"共提取{len(urls)}个唯一图片链接:")fori,srcinenumerate(urls[:5],1):# 打印前5个示例print(f"{i}.{src}")

💡 补充说明:

  • img.get('src', '')比直接访问img['src']更安全(避免 KeyError);
  • urljoin(url, src)自动处理相对路径(如/images/logo.png../assets/icon.jpg),生成完整 URL;
  • 过滤data:开头的 base64 图片可根据需求保留或剔除;
  • 若需进一步去重(忽略查询参数差异,如?v=1.2),可用urllib.parse.urlparse标准化后再去重。
http://www.jsqmd.com/news/1185029/

相关文章:

  • AI学术写作工具核心功能与实操指南
  • 从洛谷P2234看平衡树实战:STL set与手写Treap解决动态查询
  • C++信号与槽机制:从原理到原生实现,构建松耦合对象通信系统
  • UU远程多屏协助测评,好不好看这个就够了、
  • Sol2:现代C++与Lua交互的零开销绑定库实战指南
  • ICM-42605与PIC18F2682实现高精度运动追踪方案
  • 2026实力之选:复合阻尼隔音板专业品牌机构,深耕声学领域的硬核实力派 - 甄选服务推荐
  • DEGConv革新YOLOv11裂缝检测:方向感知与边缘门控技术解析
  • 亨得利官方钟表服务中心|官方地址及联系电话权威信息通知(2026年7月更新) - 亨得利官方
  • Web 渗透测试:企业信息收集
  • 2026年7月最新嘉兴欧米茄官方售后维修服务网点地址与客服电话 - 欧米茄服务中心
  • Python版TensorRT构建YOLOv5 Engine:从ONNX解析到序列化引擎的实战解析
  • Claude Code Agent任务系统架构与多智能体协作实践
  • UnityGLTF Exporter全攻略:从场景导出到交互式3D内容发布
  • 轻盈美学产品怎么选?机构与代理商需要看这几点
  • 2026年7月最新长沙江诗丹顿官方售后维修服务网点地址与客服电话 - 江诗丹顿服务中心
  • Julia单元测试实战:从数值验证到数学证明的工程化路径
  • Appium移动端自动化测试——环境搭建、元素定位、手势操作与真机调试全攻略
  • Python办公自动化:调用Word实现批量DOC转PDF,保留原格式,一键搞定!
  • 2026年录音棚阻尼隔音板供应厂家:声学净化与专业隔音黑科技深度剖析 - 甄选服务推荐
  • Havenlon|安全讲人话(一):门锁和门闩不是一回事
  • BGP综合试验
  • Midjourney风格代码库:50组风格参数一键套用
  • Python类型注解实战:从函数签名到FastAPI协同的工程化落地
  • 云原生部署:Docker+Kubernetes 快速部署Python Web 应用,节省 90%运维时间
  • C++大模型部署优化:8大底层黑科技与实战指南
  • 2026年7月最新成都江诗丹顿官方售后热线及客户服务网点地址 - 江诗丹顿官方服务中心
  • 福州闽侯县亨得利官方名表服务中心电话公示(2026年7月最新) - 亨得利官方博客
  • Claude Fable 5 API 调用完整指南:官方、AWS、OpenRouter 与中转平台对比(2026 最新)
  • Java程序员转型大模型开发:核心知识与实战指南