Python beautifulsoup4解析 数据提取 基本使用

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 文章目录Python beautifulsoup4解析 数据提取 使用介绍&常用示例前言二、from bs4 import BeautifulSoup1.pip install beautifulsoup42.Beautiful用法介绍2.1 解析html源码创建创建Beautifulsoup对象2.2 beautiful对象的常用属性和方法2.3 find、find_all、CSS选择器 根据条件提取元素3.常用代码4.对象类型介绍总结

Python beautifulsoup4解析 数据提取 使用介绍&常用示例

文章目录

前言

二、from bs4 import BeautifulSoup

1.pip install beautifulsoup4

2.Beautiful用法介绍

2.1 解析html源码创建创建Beautifulsoup对象

2.2 beautiful对象的常用属性和方法

2.3 find、find_all、CSS选择器 根据条件提取元素

3.常用代码

4.对象类型介绍

总结

前言

Beautiful Soup是Python的一个网页解析库,处理快捷; 支持多种解析器,功能强大。教程细致讲解Beautiful Soup的深入使用、节点选择器、CSS选择器、Beautiful Soup4的方法选择器等重要知识点,是学好爬虫的基础课程。


提示:以下是本篇文章正文内容,下面案例可供参考
建议把代码复制到编译工具中运行跑几次,认真看一下输出结果方便更好的理解, beautifulsoup4=4.11.1

二、from bs4 import BeautifulSoup

1.pip install beautifulsoup4

pip install beautifulsoup4 -i https://pypi.tuna.tsinghua.edu.cn/simple

2.Beautiful用法介绍

2.1 解析html源码创建创建Beautifulsoup对象

from bs4 import BeautifulSoup
web_html = """
<html>
<head>
    <title id="title">The Dormouse's story1</title>
</head>
<body>
    <p class="story">
        <a href="http://example.com/elsie1" class="link11" id="link1">EXI-XZ</a>,
        <a href="http://example.com/elsie2" class="link11" id="link2">Elsie</a>,
        <a href="http://example.com/lacie" class="link22" id="link3">Lacie</a> and
        <a href="http://example.com/tillie" class="link33" id="link4">Tillie</a>;
    </p>
    <ul class="ul_test", id="abc">
        <li class="li_test" href="http://example.com/li">AA</li>
        <li class="li_test" href="http://example.com/li">BB</li>
        <li class="li_test" href="http://example.com/li">CC</li>
    </ul>
    <div class="div_test">
        <p>div模块-p标签</p>
    </div>
</body>
</html>
"""
soup = BeautifulSoup(web_html, 'lxml')  # 解析网页源码创建Beautifulsoup对象 

2.2 beautiful对象的常用属性和方法

web_html = soup.prettify()  # 返回格式化后的源码,str类型
title_tag = soup.title  # 返回源码中第一个title标签(源码),element.Tag类型
print('title_tag:', title_tag, type(title_tag))
title_content = soup.title.string  # 提取title标签的文本, element.NavigableString,下面有多个标签内容则返回None
print('title_content:', title_content, type(title_content))
all_p_content = soup.body.get_text()  # 提取body下面的所有p标签,str类型
print('all_p_content:', all_p_content, type(all_p_content))
a_href = soup.a['href']  # 提取第一个a标签的href属性,str类型
print("a_href:", a_href, type(a_href))

2.3 find、find_all、CSS选择器 根据条件提取元素

# find -- 返回符合查询条件的第一个标签
# 组合条件一
find_group_result = soup.find(name='a', string='EXI-XZ')  # name(标签名),string(标签的文本),element.Tag类型
print('find_group_result:', find_group_result, type(find_group_result))
# 组合条件二,推荐第二种方式,字典方式key,value
find_attrs_result = soup.find(attrs={'class': 'link11', 'id': 'link1'})  # 指定属性,element.Tag类型,
print('find_attrs_result:', find_attrs_result, type(find_attrs_result))
find_attrs_result.get('href')  # 获取该对象的属性href
find_attrs_result.text  # 获取该对象标签的文本,不同于find_attrs_result.string,下面有多个标签会全部返回而不是None
find_ul_result = soup.find(attrs={'class': "ul_test", 'id': 'abc'})
print('ul_tag_result:', find_ul_result.text, type(find_ul_result))  # element.Tag

# find_all -- 返回符合查询条件的所有标签, list类型
find_li_list = soup.find_all(name='li', attrs={'class': "li_test"}, limit=2)  # limit(返回前两个标签)
find_li_list[0].attrs  # 提取标签的所有属性

# CSS选择器 -- list类型
div_tag = soup.select('div,.div_test')  # 取class为"div_test"的div标签,list类型,  #=id   .=class
print('div_tag:', div_tag, type(div_tag))
div_tag = soup.select('div[class="div_test"]')  # 等同于soup.select('div,.div_test')
print('div_tag:', div_tag, type(div_tag))
print("div下p标签的文本:", div_tag[0].select("p")[0].text)  # 取div中的第一个p标签的文本

3.常用代码

import requests
from bs4 import BeautifulSoup
url = "xxxxxxxxxxxxxxxxx"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'}
response = requests.get(url=url, headers=headers)
web_html = response.text
soup = BeautifulSoup(web_html, 'lxml')  # 解析网页源码创建Beautifulsoup对象

4.对象类型介绍

BeautifulSoup4四大对象种类
bs4.element.Tag 通俗点讲就是HTML中的一个个标签,有很多属性和方法可以更加详细的提取内容
NavigableString 得到了标签源码,通过对象的属性和方法可以提取标签内部文字(.string)和属性(xx['class'])
BeautifulSoup 表示一个文档的全部内容.
Comment 一个特殊类型的NavigableString对象,其输出的内容不包括注释符号。

总结

小洲提示:建议把代码复制到编译工具中运行跑几次,认真看一下输出结果方便更好的理解, beautifulsoup4=4.11.1

以上就是今天要讲的内容,本文仅仅简单介绍了beautifulsoup4解析web源码的使用,而beautifulsoup4提供了大量能使我们快速便捷地处理数据的函数和方法,后续有关于beautifulsoup4的常用代码会在这篇博客中持续更新。
Beautifulsoup4官方文档:https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/

目录
相关文章
|
9天前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
|
21天前
|
数据采集 自然语言处理 搜索推荐
基于qwen2.5的长文本解析、数据预测与趋势分析、代码生成能力赋能esg报告分析
Qwen2.5是一款强大的生成式预训练语言模型,擅长自然语言理解和生成,支持长文本解析、数据预测、代码生成等复杂任务。Qwen-Long作为其变体,专为长上下文场景优化,适用于大型文档处理、知识图谱构建等。Qwen2.5在ESG报告解析、多Agent协作、数学模型生成等方面表现出色,提供灵活且高效的解决方案。
114 49
|
6天前
|
存储 缓存 Python
Python中的装饰器深度解析与实践
在Python的世界里,装饰器如同一位神秘的魔法师,它拥有改变函数行为的能力。本文将揭开装饰器的神秘面纱,通过直观的代码示例,引导你理解其工作原理,并掌握如何在实际项目中灵活运用这一强大的工具。从基础到进阶,我们将一起探索装饰器的魅力所在。
|
7天前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
10天前
|
Android开发 开发者 Python
通过标签清理微信好友:Python自动化脚本解析
微信已成为日常生活中的重要社交工具,但随着使用时间增长,好友列表可能变得臃肿。本文介绍了一个基于 Python 的自动化脚本,利用 `uiautomator2` 库,通过模拟用户操作实现根据标签批量清理微信好友的功能。脚本包括环境准备、类定义、方法实现等部分,详细解析了如何通过标签筛选并删除好友,适合需要批量管理微信好友的用户。
21 7
|
12天前
|
测试技术 开发者 Python
使用Python解析和分析源代码
本文介绍了如何使用Python的`ast`模块解析和分析Python源代码,包括安装准备、解析源代码、分析抽象语法树(AST)等步骤,展示了通过自定义`NodeVisitor`类遍历AST并提取信息的方法,为代码质量提升和自动化工具开发提供基础。
26 8
|
12天前
|
XML 数据采集 数据格式
Python 爬虫必备杀器,xpath 解析 HTML
【11月更文挑战第17天】XPath 是一种用于在 XML 和 HTML 文档中定位节点的语言,通过路径表达式选取节点或节点集。它不仅适用于 XML,也广泛应用于 HTML 解析。基本语法包括标签名、属性、层级关系等的选择,如 `//p` 选择所有段落标签,`//a[@href=&#39;example.com&#39;]` 选择特定链接。在 Python 中,常用 lxml 库结合 XPath 进行网页数据抓取,支持高效解析与复杂信息提取。高级技巧涵盖轴的使用和函数应用,如 `contains()` 用于模糊匹配。
|
19天前
|
数据可视化 图形学 Python
在圆的外面画一个正方形:Python实现与技术解析
本文介绍了如何使用Python的`matplotlib`库绘制一个圆,并在其外部绘制一个正方形。通过计算正方形的边长和顶点坐标,实现了圆和正方形的精确对齐。代码示例详细展示了绘制过程,适合初学者学习和实践。
34 9
|
20天前
|
存储 缓存 开发者
Python编程中的装饰器深度解析
本文将深入探讨Python语言的装饰器概念,通过实际代码示例展示如何创建和应用装饰器,并分析其背后的原理和作用。我们将从基础定义出发,逐步引导读者理解装饰器的高级用法,包括带参数的装饰器、多层装饰器以及装饰器与类方法的结合使用。文章旨在帮助初学者掌握这一强大工具,同时为有经验的开发者提供更深层次的理解和应用。
30 7
|
20天前
|
传感器 物联网 开发者
使用Python读取串行设备的温度数据
本文介绍了如何使用Python通过串行接口(如UART、RS-232或RS-485)读取温度传感器的数据。详细步骤包括硬件连接、安装`pyserial`库、配置串行端口、发送请求及解析响应等。适合嵌入式系统和物联网应用开发者参考。
35 3