脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - Python爬虫神器:Beautiful Soup指南,轻松解析网页数据!

Python爬虫神器:Beautiful Soup指南,轻松解析网页数据!

2023-11-28 16:31涛哥聊Python Python

Beautiful Soup是一个强大的HTML和XML解析库,为Python爬虫和数据采集提供了强大的工具。这篇文章介绍 Beautiful Soup的功能和用法,并提供示例代码,帮助你更好地理解和应用这个优秀的库。

Python爬虫神器:Beautiful Soup指南,轻松解析网页数据!

Beautiful Soup(简称BS4)是一种强大而灵活的HTML和XML解析库,广泛用于Python爬虫和数据采集中。

这篇文章介绍 Beautiful Soup的功能和用法,并提供示例代码,帮助你更好地理解和应用这个优秀的库。

一、Beautiful Soup简介

1、什么是Beautiful Soup?

Beautiful Soup是一个Python库,用于解析HTML和XML文档,并提供了简单而直观的方式来遍历文档树、搜索特定标签和提取数据。它的名字取自路易斯·卡洛斯·蒙特斯·库比斯(Luis Carlos Monteiro Cabral de Melo)的诗歌《Alice》中的一句话:“Beautiful Soup so rich and green, Waiting in a hot tureen!”,寓意着它用来“捞取”美味的数据。

2、安装Beautiful Soup

使用pip来安装Beautiful Soup库:

pip install beautifulsoup4

同时,为了能够解析HTML和XML文档,还需要安装一个解析器,如lxml或html5lib:

pip install lxml
# 或
pip install html5lib

3、导入Beautiful Soup

导入Beautiful Soup库:

from bs4 import BeautifulSoup

二、Beautiful Soup的基本用法

1、解析HTML文档

Beautiful Soup可以解析HTML或XML文档,并将其转换成文档树的形式,以便于遍历和操作。

示例代码:


  1. from bs4 import BeautifulSoup 
  2.  
  3. # HTML文档示例 
  4. html_doc = ""
  5. <html> 
  6.     <head> 
  7.         <title>我的第一个网页</title> 
  8.     </head> 
  9.     <body> 
  10.         <h1>欢迎来到我的网页</h1> 
  11.         <p>这是一个段落。</p> 
  12.     </body> 
  13. </html> 
  14. ""
  15.  
  16. # 创建Beautiful Soup对象 
  17. soup = BeautifulSoup(html_doc, 'html.parser'

在这个示例中,创建了一个Beautiful Soup对象,并使用html.parser解析器解析了HTML文档。

2、遍历文档树

一旦有了Beautiful Soup对象,就可以遍历文档树,查找特定的标签和数据。

以下是一些基本的遍历方法:

(1)查找标签

使用find()方法来查找特定的标签:


  1. # 查找第一个<h1>标签 
  2. h1_tag = soup.find('h1'
  3.  
  4. # 打印标签文本 
  5. print(h1_tag.text) 

 

(2)遍历子节点

使用children属性来遍历一个标签的子节点:


  1. # 遍历<body>标签的子节点 
  2. body_tag = soup.find('body'
  3. for child in body_tag.children: 
  4.     print(child) 

(3)遍历所有标签

使用find_all()方法来查找所有特定类型的标签:


  1. # 查找所有<p>标签 
  2. p_tags = soup.find_all('p'
  3.  
  4. # 遍历所有<p>标签 
  5. for p_tag in p_tags: 
  6.     print(p_tag.text) 

 

3、提取数据

找到目标标签,就可以提取其中的数据。

以下是一些提取数据的示例:

(1)获取标签文本

使用.text属性获取标签的文本内容:


  1. # 获取<h1>标签的文本内容 
  2. h1_text = h1_tag.text 
  3. print(h1_text) 

 

(2)获取标签属性

如果标签有属性,可以使用字典的方式获取:


  1. # 获取<head>标签的lang属性值 
  2. head_tag = soup.find('head'
  3. lang_value = head_tag['lang'
  4. print(lang_value) 

(3)提取链接

如果要提取链接,可以使用.get()方法:

  1. # 获取<a>标签的链接 
  2. a_tag = soup.find('a'
  3. link = a_tag.get('href'
  4. print(link) 

 

三、高级用法

1、使用CSS选择器

Beautiful Soup支持使用CSS选择器来查找标签,这使得查找更灵活和方便:


  1. # 使用CSS选择器查找所有<p>标签 
  2. p_tags = soup.select('p'

2、嵌套查找

在查找方法中嵌套使用,以查找更深层次的标签:


  1. # 查找<body>标签下的所有<p>标签 
  2. p_tags = soup.find('body').find_all('p'

3、处理不规范的HTML

Beautiful Soup可以处理不规范的HTML文档,自动修复标签嵌套和缺失的情况:


  1. # 处理不规范的HTML文档 
  2. dirty_html = "<p>这是一个段落</p>" 
  3. soup = BeautifulSoup(dirty_html, 'html.parser'
  4. print(soup.prettify()) 

四、示例代码

以下是一个完整的示例,演示了如何使用Beautiful Soup解析HTML文档、遍历文档树、查找标签和提取数据:

  1. from bs4 import BeautifulSoup 
  2.  
  3. # HTML文档示例 
  4. html_doc = ""
  5. <html> 
  6.     <head> 
  7.         <title>我的第一个网页</title> 
  8.     </head> 
  9.     <body> 
  10.         <h1>欢迎来到我的网页</h1> 
  11.         <p>这是一个段落。</p> 
  12.     </body> 
  13. </html> 
  14. ""
  15.  
  16. # 创建Beautiful Soup对象 
  17. soup = BeautifulSoup(html_doc, 'html.parser'
  18.  
  19. # 查找<h1>标签 
  20. h1_tag = soup.find('h1'
  21.  
  22. # 获取<h1>标签的文本内容 
  23. h1_text = h1_tag.text 
  24.  
  25. # 查找所有<p>标签 
  26. p_tags = soup.find_all('p'
  27.  
  28. # 提取第一个<p>标签的文本内容 
  29. p_text = p_tags[0].text 
  30.  
  31. # 打印结果 
  32. print("标题:", h1_text) 
  33. print("段落:", p_text) 

这个示例演示了如何解析HTML文档、查找标签和提取数据,以及如何处理不规范的HTML文档。

总结

Beautiful Soup是一个强大的HTML和XML解析库,为Python爬虫和数据采集提供了强大的工具。

原文地址:https://www.toutiao.com/article/7290810379469406720/

延伸 · 阅读

精彩推荐