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

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 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)

在这里插入图片描述

目录
相关文章
|
20天前
|
数据采集 JSON API
深入解析:使用 Python 爬虫获取淘宝店铺所有商品接口
本文介绍如何使用Python结合淘宝开放平台API获取指定店铺所有商品数据。首先需注册淘宝开放平台账号、创建应用并获取API密钥,申请接口权限。接着,通过构建请求、生成签名、调用接口(如`taobao.items.search`和`taobao.item.get`)及处理响应,实现数据抓取。代码示例展示了分页处理和错误处理方法,并强调了调用频率限制、数据安全等注意事项。此技能对开发者和数据分析师极具价值。
|
2天前
|
数据采集 JavaScript Python
如何根据目标网站调整Python爬虫的延迟时间?
如何根据目标网站调整Python爬虫的延迟时间?
|
1天前
|
数据采集 监控 Python
Python爬虫异常处理:自动跳过无效URL
Python爬虫异常处理:自动跳过无效URL
Python爬虫异常处理:自动跳过无效URL
|
14天前
|
数据采集 XML JavaScript
Python爬虫:从人民网提取视频链接的完整指南
Python爬虫:从人民网提取视频链接的完整指南
|
20天前
|
数据采集 XML 存储
Python爬虫实战:一键采集电商数据,掌握市场动态!
这个爬虫还挺实用,不光能爬电商数据,改改解析规则,啥数据都能爬。写爬虫最重要的是要有耐心,遇到问题别着急,慢慢调试就成。代码写好了,运行起来那叫一个爽,分分钟几千条数据到手。
|
19天前
|
数据采集 Web App开发 API
B站高清视频爬取:Python爬虫技术详解
B站高清视频爬取:Python爬虫技术详解
|
4月前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
240 6
|
7月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
374 4
|
8月前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
【7月更文挑战第31天】在网络数据的海洋中,使用Python的`requests`库构建网络爬虫就像探索未知的航船。HTTP协议指导爬虫与服务器交流,收集信息。HTTP请求包括请求行、头和体,响应则含状态行、头和体。`requests`简化了发送各种HTTP请求的过程。
137 4
|
7月前
|
数据采集 存储 搜索推荐
打造个性化网页爬虫:从零开始的Python教程
【8月更文挑战第31天】在数字信息的海洋中,网页爬虫是一艘能够自动搜集网络数据的神奇船只。本文将引导你启航,用Python语言建造属于你自己的网页爬虫。我们将一起探索如何从无到有,一步步构建一个能够抓取、解析并存储网页数据的基础爬虫。文章不仅分享代码,更带你理解背后的逻辑,让你能在遇到问题时自行找到解决方案。无论你是编程新手还是有一定基础的开发者,这篇文章都会为你打开一扇通往数据世界的新窗。