python爬虫BeautifulSoup模块解析数据入门

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介: python爬虫BeautifulSoup模块解析数据入门

python爬虫使用BeautifulSoup模块解析数据入门

1.准备

首先进行模块安装:

pip install BeautifulSoup4

因为BeautifulSoup4依赖于lxml库,所以也要安装lxml库才能正常使用。

代码示例

from bs4 import BeautifulSoup
html_doc = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>

<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
"""

2.基本方法

首先需要用BeautifulSoup() 方法传递一个解析器

soup = BeautifulSoup(html_doc, 'lxml')
print(soup) # 查看

在这里插入图片描述
prettify() 方法 格式化输出:

print(soup.prettify())  # 代码的格式化

在这里插入图片描述

获取指定标签(只获取第一个匹配的)

print(soup.title)

在这里插入图片描述

获取指定标签的标签名

print(soup.title.name)  

在这里插入图片描述

获取指定标签的文本字符串

print(soup.title.string)

在这里插入图片描述

使用**find()**方法,获取指定标签(只获取第一个与之匹配的)

print(soup.find('p')) 

在这里插入图片描述

使用 find_all() 方法,获取全部与之匹配的标签,结果放在一个列表中

print(soup.find_all('a'))

在这里插入图片描述

找多个标签,给find_all()传入一个标签列表

print(soup.find_all(['a', 'p']))

在这里插入图片描述

get() 方法 获取标签的属性

links = soup.find_all('a')  # 'a'通过字符串传递字符串过滤器
for link in links:
    print(link.get('href'))

在这里插入图片描述
attrs 属性 获取标签的全部属性

links = soup.find_all('a')
a = links[0]
print(a.attrs)

在这里插入图片描述

3.对象种类

soup = BeautifulSoup(html_doc, 'lxml')
print(type(soup.title)) 
print(type(soup.p))  
print(type(soup.a))  
print(type(soup.find('a')))

在这里插入图片描述
得到的都是Tag标签类型,不是字符串。


title_head = soup.head
print(type(title_head.string))

在这里插入图片描述
可导航的字符串(可操纵的字符串)


print(type(soup))  # bs对象

在这里插入图片描述
bs对象。


此外,还有注释类型,指的是html文件的注释标签部分,形如

<b><!–xxxxxxxxx–><b>

这里不再具体展示,了解即可。

3.遍历文档树

● string获取标签里面的内容
● strings 返回是一个生成器对象用过来获取多个标签内容
● stripped_strings 和strings基本一致 但是它可以把多余的空格去掉

title_tag = soup.title
print(title_tag.string)
head_tag = soup.head
print(title_tag.string)  
html_tag = soup.html
print(html_tag.string)

在这里插入图片描述
如图,使用同级标签,可以找到同级数据,使用上级标签也可以,使用再上一级标签,因为这里边可以匹配的字符串有多个,所以不能再匹配到数据。
这个时候可以将string属性换为strings属性再尝试:

texts = soup.html.strings
print(texts)

在这里插入图片描述
如图输出结果是一个生成器。可遍历。

for i in texts:
    print(i)

在这里插入图片描述

但是如图,其中空行较多,不美观。于是可以切换使用stripped_strings属性,stripped_strings 和strings基本一致 但是它可以把多余的空格去掉。

texts = soup.html.stripped_strings
print(texts)

for i in texts:
    print(i)

在这里插入图片描述

目录
相关文章
|
1天前
|
存储 索引 Python
Python入门:6.深入解析Python中的序列
在 Python 中,**序列**是一种有序的数据结构,广泛应用于数据存储、操作和处理。序列的一个显著特点是支持通过**索引**访问数据。常见的序列类型包括字符串(`str`)、列表(`list`)和元组(`tuple`)。这些序列各有特点,既可以存储简单的字符,也可以存储复杂的对象。 为了帮助初学者掌握 Python 中的序列操作,本文将围绕**字符串**、**列表**和**元组**这三种序列类型,详细介绍其定义、常用方法和具体示例。
Python入门:6.深入解析Python中的序列
|
1天前
|
存储 Linux iOS开发
Python入门:2.注释与变量的全面解析
在学习Python编程的过程中,注释和变量是必须掌握的两个基础概念。注释帮助我们理解代码的意图,而变量则是用于存储和操作数据的核心工具。熟练掌握这两者,不仅能提高代码的可读性和维护性,还能为后续学习复杂编程概念打下坚实的基础。
Python入门:2.注释与变量的全面解析
|
8天前
|
数据采集 Web App开发 监控
深度解析:使用ChromeDriver和webdriver_manager实现无头浏览器爬虫
在现代网络爬虫实践中,动态网页加载和反爬虫机制增加了数据采集的难度。采用无头浏览器技术(如Selenium与ChromeDriver)可有效模拟用户行为、执行JavaScript,获取动态内容。通过设置代理IP、伪装User-Agent和处理Cookies,提升爬虫隐蔽性和稳定性。该方案适用于电商价格监控、社交媒体数据采集和招聘信息抓取等场景,实现更高效的数据获取。
深度解析:使用ChromeDriver和webdriver_manager实现无头浏览器爬虫
|
7天前
|
监控 算法 安全
内网桌面监控软件深度解析:基于 Python 实现的 K-Means 算法研究
内网桌面监控软件通过实时监测员工操作,保障企业信息安全并提升效率。本文深入探讨K-Means聚类算法在该软件中的应用,解析其原理与实现。K-Means通过迭代更新簇中心,将数据划分为K个簇类,适用于行为分析、异常检测、资源优化及安全威胁识别等场景。文中提供了Python代码示例,展示如何实现K-Means算法,并模拟内网监控数据进行聚类分析。
28 10
|
8天前
|
数据采集 前端开发 API
SurfGen爬虫:解析HTML与提取关键数据
SurfGen爬虫:解析HTML与提取关键数据
|
25天前
|
存储 算法 安全
控制局域网上网软件之 Python 字典树算法解析
控制局域网上网软件在现代网络管理中至关重要,用于控制设备的上网行为和访问权限。本文聚焦于字典树(Trie Tree)算法的应用,详细阐述其原理、优势及实现。通过字典树,软件能高效进行关键词匹配和过滤,提升系统性能。文中还提供了Python代码示例,展示了字典树在网址过滤和关键词屏蔽中的具体应用,为局域网的安全和管理提供有力支持。
50 17
|
28天前
|
运维 Shell 数据库
Python执行Shell命令并获取结果:深入解析与实战
通过以上内容,开发者可以在实际项目中灵活应用Python执行Shell命令,实现各种自动化任务,提高开发和运维效率。
56 20
|
1月前
|
数据采集 XML API
深入解析BeautifulSoup:从sohu.com视频页面提取关键信息的实战技巧
深入解析BeautifulSoup:从sohu.com视频页面提取关键信息的实战技巧
|
1月前
|
数据采集 供应链 API
Python爬虫与1688图片搜索API接口:深度解析与显著收益
在电子商务领域,数据是驱动业务决策的核心。阿里巴巴旗下的1688平台作为全球领先的B2B市场,提供了丰富的API接口,特别是图片搜索API(`item_search_img`),允许开发者通过上传图片搜索相似商品。本文介绍如何结合Python爬虫技术高效利用该接口,提升搜索效率和用户体验,助力企业实现自动化商品搜索、库存管理优化、竞品监控与定价策略调整等,显著提高运营效率和市场竞争力。
89 3
|
2月前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控