python爬虫基础——BeautifulSoup解析网页

it2023-05-05  71

BeautifulSoup 库的安装

BeautifulSoup 和 lxml 一样,BeautifulSoup 也是一个 HTML/XML 的解析器,主要的功能也是解析和提取 HTML/XML 数据。

如果本地 Python 环境没有安装 BeautifulSoup,可以在命令提示符窗口输入命令pip install bs4,安装 BeautifulSoup 模块,如下图所示。

BeautifulSoup 库的使用

要使用 BeautifulSoup 库,首先需要进行导包,代码如下:

from bs4 import BeautifulSoup

然后需要创建 BeautifulSoup 对象,现在有包含 HTML 代码的字符串变量 text 如下所示:

text=''' <?xml version="1.0" encoding="ISO-8859-1"?> <bookstore> <book> <title lang="eng">Harry Potter</title> <price>29.99</price> </book> <book> <title lang="eng">Learning XML</title> <price>39.95</price> </book> </bookstore> '''

创建 BeautifulSoup 对象的代码如下所示:

soup=BeautifulSoup(text, 'lxml')

BeautifulSoup 对象包含很多有用的属性和方法,比如我们想要将 HTML 代码按照标准缩进格式输出,可以使用.prettify()方法,如下图所示。

BeautifulSoup 对象更多有用的属性和方法演示代码如下所示,自己可以在本地进行体验操作:

print(soup.get_text()) # 会将 HTML 文档中的所有标签清除,返回一个只包含文字的字符串 tag=soup.title # 获取title标签 print(tag) print(type(tag)) # tag类型 print(tag.name) # 标签名称 print(tag.attrs) # 标签属性 print(tag.attrs["lang"]) # 单独获取某个属性 print(soup.title["lang"]) # 单独获取某个属性 # find_all() 返回所有的title元素 print(soup.find_all('title')) # find() 返回第一个title元素 print(soup.find("title")) print(soup.find_all("title",lang="eng")) # 查找title标签 属性lang=eng print(soup.find_all("title",{"lang":"eng"})) # 结果同上 print(soup.find_all(["title","price"])) # 获取多个标签 print(soup.find_all("title",lang="eng")[0].get_text()) # 获取文本 print(soup.book) # 获取book节点信息 print(soup.book.contents) # 获取book下的所有子节点 print(soup.book.contents[1]) # 获取book下的所有子节点中的第一个节点 print(soup.title.next_sibling) # 获取该节点的下一个兄弟节点 print(soup.title.previous_sibling) # 获取该节点的上一个兄弟节点 print(soup.title.next_siblings) # 获取该节点的全部兄弟节点

 

最新回复(0)