首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
1.1 HTTP基本原理
1.2 Web 网页基础
1.3 爬虫的基本原理
1.4 Session和Cookie
1.5 代理的基本原理
1.6 多线程和多进程的基本原理
2.1 urllib的使用
2.2 requests的使用
2.3 正则表达式
2.4 httpx的使用
2.5 基础爬虫案例实战
3.1 XPath的使用
3.2 Beautiful Soup的使用
3.3 pyquery的使用
3.4 parsel 的使用
4.1 TXT 文本文件存储
4.2 JSON 文件存储
4.3 CSV 文件存储
4.4 MySQL 存储
4.5 MongoDB 文档存储
4.6 Redis缓存存储
4.7 Elasticsearch 搜索引擎存储
4.8 RabbitMQ 的使用
5.1 什么是 Ajax
5.2 Ajax分析方法
5.3 Ajax 分析与爬取实战
6.1 协程的基本原理
6.2 aiohttp的使用
6.3 aiohttp 异步爬取实战
7.1 Selenium 的使用
7.2 Splash 的使用
7.3 Pyppeteer 的使用
7.4 Playwright 的使用
7.5 Selenium 爬取实战
7.6 Pyppeteer 爬取实战
7.7 CSS 位置偏移反爬案例分析与爬取实战
7.8 字体反爬案例分析与爬取实战
8.1 使用 OCR 技术识别图形验证码
8.2 使用 OpenCV 识别滑动验证码的缺口
8.3 使用深度学习识别图形验证码
8.4 使用深度学习识别滑动验证码的缺口
8.5 使用打码平台识别验证码
8.6 手机验证码的自动化处理
9.1 代理的设置
9.2 代理池的维护
9.3 付费代理的使用
9.4 ADSL 拨号代理的搭建方法
9.5 代理反爬案例爬取实战
10.1 模拟登录的基本原理
10.2 基于Session和Cookie的模拟登录爬取实战
10.3 基于JWT的模拟登录爬取实战
10.4 大规模账号池的搭建
11.1 网站加密和混淆技术简介
11.2 浏览器调试常用技巧
11.3 JavaScript Hook 的使用
11.4 无限 debugger 的原理与绕过
11.5 使用 Python 模拟执行 JavaScript
11.6 使用 Node.js 模拟执行 JavaScript
11.7 浏览器环境下 JavaScript 的模拟执行
11.8 AST 技术简介
11.9 使用 AST 技术还原混淆代码
11.10 特殊混淆案例的还原
11.11 WebAssembly 案例分析和爬取实战
11.12 JavaScript 逆向技巧总结
11.13 JavaScript 逆向爬取实战
当前位置:
首页>>
技术小册>>
Python3网络爬虫开发实战(上)
小册名称:Python3网络爬虫开发实战(上)
### 3.2 Beautiful Soup的使用 在Python网络爬虫的开发过程中,解析HTML或XML文档是不可或缺的一环。Beautiful Soup是一个强大的Python库,用于从HTML或XML文件中提取数据。它创建了一个解析树,用于方便地从文档中查找、修改或删除标签。Beautiful Soup不是解析器,它依赖于Python标准库中的html.parser或第三方解析器如lxml和html5lib来解析文档。由于其易用性和灵活性,Beautiful Soup成为了Python网络爬虫开发者的首选工具之一。 #### 3.2.1 Beautiful Soup的安装 在开始使用Beautiful Soup之前,首先需要确保它已经被安装在你的Python环境中。你可以通过pip命令来安装Beautiful Soup及其依赖的解析器。推荐使用lxml作为解析器,因为它速度快且功能强大。 ```bash pip install beautifulsoup4 pip install lxml ``` #### 3.2.2 Beautiful Soup的基本使用 ##### 导入库 在你的Python脚本中,首先需要导入Beautiful Soup库以及一个解析器。这里以lxml为例: ```python from bs4 import BeautifulSoup import requests # 假设我们有一个HTML文档内容存储在html_doc变量中 # 这里为了示例,我们使用requests库来获取一个网页的HTML内容 url = 'http://example.com' response = requests.get(url) html_doc = response.text # 使用lxml作为解析器 soup = BeautifulSoup(html_doc, 'lxml') ``` ##### 解析HTML 一旦你有了`BeautifulSoup`对象,就可以开始解析HTML文档了。Beautiful Soup提供了多种方式来查找文档中的标签。 - **find() 和 find_all()** `find()`方法用于查找文档中符合条件的第一个标签,而`find_all()`方法则查找所有符合条件的标签。这两个方法都可以接受多种参数来指定查找条件,如标签名、属性、字符串内容等。 ```python # 查找第一个<a>标签 first_link = soup.find('a') # 查找所有<a>标签 all_links = soup.find_all('a') # 查找class为'nav'的所有<div>标签 nav_divs = soup.find_all('div', class_='nav') # 查找包含特定文本的<p>标签 paragraphs = soup.find_all('p', string='特定文本') ``` 注意:在查找具有class属性的标签时,由于class是Python的关键字,因此需要使用`class_`作为参数名。 - **CSS选择器** Beautiful Soup还支持CSS选择器语法,这使得查找标签变得更加直观和灵活。 ```python # 使用CSS选择器查找class为'nav'的<div>标签 nav_divs = soup.select('div.nav') # 查找所有<a>标签,其href属性以'http'开头 links = soup.select('a[href^="http"]') # 查找id为'main-content'的元素内的所有<p>标签 paragraphs = soup.select('#main-content p') ``` ##### 修改HTML 虽然Beautiful Soup主要用于解析HTML,但它也允许你修改HTML结构。你可以添加、删除或修改标签及其属性。 ```python # 添加一个标签 new_tag = soup.new_tag('a', href='https://www.example.com') new_tag.string = '新链接' soup.body.append(new_tag) # 修改标签属性 first_link = soup.find('a') first_link['href'] = 'https://www.new-example.com' # 删除标签 for link in soup.find_all('a', class_='remove'): link.decompose() ``` #### 3.2.3 实战案例:爬取网页中的文章标题 假设我们需要从一个新闻网站中爬取所有文章的标题。以下是一个简单的实战案例,展示了如何使用Beautiful Soup来实现这一需求。 ```python from bs4 import BeautifulSoup import requests url = 'http://news.example.com' response = requests.get(url) soup = BeautifulSoup(response.text, 'lxml') # 假设文章标题都包含在class为'article-title'的<h2>标签内 titles = soup.find_all('h2', class_='article-title') for title in titles: print(title.get_text(strip=True)) # 使用get_text()方法获取标签内的文本,strip=True用于去除空白字符 ``` 在这个例子中,我们首先通过requests库获取了目标网页的HTML内容,然后使用Beautiful Soup对其进行解析。通过`find_all()`方法,我们查找了所有class为'article-title'的`<h2>`标签,这些标签通常用于表示文章标题。最后,我们遍历这些标签,并使用`get_text(strip=True)`方法获取并打印出每个标题的文本内容。 #### 3.2.4 注意事项 - **解析速度**:虽然Beautiful Soup功能强大且易于使用,但其解析速度可能不如一些底层的解析器如lxml。在性能敏感的应用中,考虑使用更高效的解析方法。 - **编码问题**:在处理来自不同源的HTML文档时,可能会遇到编码不一致的问题。确保在解析之前正确处理文档的编码。 - **遵守法律法规**:在编写网络爬虫时,务必遵守相关法律法规和网站的robots.txt文件规定,尊重网站的数据使用政策。 #### 结语 Beautiful Soup为Python网络爬虫开发者提供了一种强大而灵活的方式来解析HTML和XML文档。通过掌握其基本的查找、修改和删除标签的方法,你可以轻松地从网页中提取所需的数据。然而,也要注意遵守相关法律法规和网站的数据使用政策,确保你的爬虫行为是合法和道德的。
上一篇:
3.1 XPath的使用
下一篇:
3.3 pyquery的使用
该分类下的相关小册推荐:
Python合辑5-格式化字符串
剑指Python(万变不离其宗)
Python编程轻松进阶(一)
Python与办公-玩转PDF
Python合辑9-判断和循环
Python编程轻松进阶(五)
机器学习算法原理与实战
Python合辑2-字符串常用方法
Python合辑7-集合、列表与元组
Python合辑1-Python语言基础
Python3网络爬虫开发实战(下)
实战Python网络爬虫