BeautifulSoup库的深入探究

本文介绍了如何使用Python的requests和BeautifulSoup库进行网页内容抓取。通过示例代码展示了如何获取指定URL的HTML内容,解析标签属性,如class和id,以及如何提取特定标签内的字符串。同时,讲解了find_all()函数和CSS筛选器在筛选网页元素中的应用,帮助读者掌握网页数据提取的关键技巧。
摘要由CSDN通过智能技术生成

使用python123的页面作为例子分析:

import requests
from bs4 import BeautifulSoup
url = 'https://python123.io/ws/demo.html'
r = requests.get(url)
soup = BeautifulSoup(r.text, 'html.parser')
print(soup.prettify)

下面是这个网页标签的输出结果
在这里插入图片描述
下面的soup是前面代码使用BeautifulSoup库解析之后的结果

soup.tagname

soup后面接的是标签的名字

这是表示输出这个页面的第一个title标签的内容,但是这个在一般的网页解析中比较少用,因为往往第一个也不是我们想要的,但是我们可以用在提取到了部分我们需要的标签之后再用这个方式提取我们需要的信息

tag.attrs[‘class’]

这是标签下面的方法,soup.p.attrs[‘class’],表示所有P标签里面属性名字是class的p标签,对应的class属性内容是什么
在这里插入图片描述
可能有多个p标签的属于都有class,但是这个函数默认是输出第一个

一个标签可以有0或多个属性,字典类型

提取标签里面的字符串:soup.a.string

目的很明确,提取a标签里面的文字获得英文的字符串,这些字符串不属于标签类型,默认也是返回第一个同名标签的内容
在这里插入图片描述
在一个标签里面,除了有标签,非标签字符串,还有一种标签的注释部分
在这里插入图片描述

Beautiful Soup库的信息提取

为了将我们得到的网页文件可读性更加强,可以调用函数:

soup.prettify()

(1)使用tag对象获得需要的内容

使用soup.a.string等属性方法等到内容数据,就是上面的一些方法

(2)使用过滤器过滤得到内容

这其实是一个find_all()函数,通过调用这个函数,得到符合条件的内容:
在这里插入图片描述
例子:
在这里插入图片描述
这样就会找多所有的p标签,返回一个由标签组成的列表
除此之外,还可以传入列表,找到多个符合要求的标签
在这里插入图片描述

(2)利用CSS筛选器

通过标签的属性内容来找到匹配到标签
这里id用#代表
这里的class使用.(点) 表示
在这里插入图片描述
除此之外,还可以输入属性的全部信息获取
在这里插入图片描述
组合查找:
在这里插入图片描述
这里的意思是找到body标签里面的所有p标签,然后输出内容
在这里插入图片描述
除了找到相邻的两个标签,还可以找非相邻标签的内容
在这里插入图片描述
这种加了大于号的写法只能查找相邻的标签
通过标签属性的内容查找对应标签内容:
在这里插入图片描述
在这里插入图片描述
但是这种方法能找到id属性名字的标签,class属性的标签找不到

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
BeautifulSoup是一个Python,用于从HTML和XML文件中提取数据。它可以解析出HTML和XML文件的结构,并提供了一些方便的方法来提取和操作数据。 BeautifulSoup的主要功能: 1. 从HTML和XML文件中提取数据 2. 解析出HTML和XML文件的结构 3. 提供方便的方法来提取和操作数据 4. 可以处理不规范的HTML和XML代码 5. 可以处理不同编码的HTML和XML文件 BeautifulSoup的使用: 1. 安装BeautifulSoup:使用pip install beautifulsoup4安装BeautifulSoup。 2. 导入BeautifulSoup:使用from bs4 import BeautifulSoup导入BeautifulSoup。 3. 创建BeautifulSoup对象:使用BeautifulSoup()函数创建一个BeautifulSoup对象,并传入需要解析的HTML或XML文件。 4. 解析HTML或XML文件:使用BeautifulSoup对象的方法,如find()、find_all()等来解析HTML或XML文件,并提取需要的数据。 以下是使用BeautifulSoup解析HTML文件的示例代码: ``` from bs4 import BeautifulSoup # 读取HTML文件 with open('example.html') as f: html = f.read() # 创建BeautifulSoup对象 soup = BeautifulSoup(html, 'html.parser') # 查找所有的<a>标签 links = soup.find_all('a') # 输出所有链接的文本和URL for link in links: print(link.text, link['href']) ``` 以上代码首先打开一个名为“example.html”的HTML文件,并将其读取到一个字符串变量中。然后,使用BeautifulSoup()函数创建一个BeautifulSoup对象,传入需要解析的HTML字符串和解析器类型。接着,使用find_all()方法查找所有的<a>标签,并使用循环输出所有链接的文本和URL。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行秋即离

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值