python爬虫bs4库_04 Python爬虫之Beautiful Soup库

本文介绍了Python爬虫库Beautiful Soup的安装、基本使用、元素类型、遍历方法及格式输出。通过实例展示了如何获取网页源码、解析HTML、遍历标签树,并探讨了不同解析器的使用。
摘要由CSDN通过智能技术生成

Beautiful Soup库的安装

Win平台: 以管理员身份运行

cmd 执行 pip install beautifulsoup4

Beautiful Soup库的安装小测

首先,获取网页源码保存至变量中

import requests

r = requests.get("https://python123.io/ws/demo.html")

demo = r.text

其次,引入Beautiful Soup库。from bs4 import BeautifulSoup

使用Beautiful Soup库的html解析器对网页源码进行解析。得到结果

通过prettify()方法进行显示

from bs4 import BeautifulSoup

soup = BeautifulSoup(demo, "html.parser")# 使用html解析器进行解析

print(soup.prettify())# 打印解析后的结果

Beautiful Soup库使用格式

from bs4 import BeautifulSoup

soup = BeautifulSoup('

data','html.parser')

Beautiful Soup库的基本元素

Beautiful Soup库的理解

Beautiful Soup库是解析、遍历、维护“标签树”的功能库

Beautiful Soup库的引用

Beautiful Soup库,也叫beautifulsoup4 或bs4 约定引用方式如下,即主要是用BeautifulSoup类

from bs4 import BeautifulSoup importbs4

BeautifulSoup类

BeautifulSoup对应一个HTML/XML文档的全部内容

Beautiful Soup库解析器

soup=BeautifulSoup('data','html.parser')

解析器

使用方法

条件

bs4的HTML解析器

BeautifulSoup(mk,'html.parser')

安装bs4库

lxml的HTML解析

BeautifulSoup(mk,'lxml')

pip install lxml

lxml的XML解析

BeautifulSoup(mk,'xml')

pip install lxml

html5lib的解析

BeautifulSoup(mk,'html5lib')

pip install html5lib

BeautifulSoup类的基本元素

基本元素

说明

Tag

标签,最基本的信息组织单元,分别用<>和>标明开头和结尾

Name

标签的名字,

…的名字是'p',格式:.name

Attributes

标签的属性,字典形式组织,格式:.attrs

NavigableString

标签内非属性字符串,<>…>中字符串,格式:.string

Comment

标签内字符串的注释部分,一种特殊的Comment类型

Tag标签

任何存在于HTML语法中的标签都可以用soup.访问获得 当HTML文档中存在多个相同对应内容时,soup.返回第一个

Tag的name(名字)

每个都有自己的名字,通过.name获取,字符串类型

Tag的attrs(属性)

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

Tag的NavigableString

NavigableString可以跨越多个层次

Tag的Comment

Comment是一种特殊类型

基于bs4库的HTML内容遍历方法

HTML基本格式

064dd10a7a1147a90d49ab19b1132abb.png

标签树的下行遍历

BeautifulSoup类型是标签树的根节点

属性

说明

.contents

子节点的列表,将所有儿子节点存入列表

.children

子节点的迭代类型,与.contents类似,用于循环遍历儿子节点

.descendants

子孙节点的迭代类型,包含所有子孙节点,用于循环遍历

for child in soup.body.children: # 遍历儿子节点

print(child)

for child in soup.body.descendants: # 遍历子孙节点

print(child)

标签树的上行遍历

属性

说明

.parent

节点的父亲标签

.parents

节点先辈标签的迭代类型,用于循环遍历先辈节点

标签树的平行遍历

属性

说明

.next_sibling

返回按照HTML文本顺序的下一个平行节点标签

.previous_sibling

返回按照HTML文本顺序的上一个平行节点标签

.next_siblings

迭代类型,返回按照HTML文本顺序的后续所有平行节点标签

.previous_siblings

迭代类型,返回按照HTML文本顺序的前续所有平行节点标签

3af84eca23e0031768aeed6e58e96b63.png

for sibling in soup.a.next_sibling:# 遍历后续节点

print(sibling)

for sibling in soup.a.previous_sibling: # 遍历前续节点

print(sibling)

基于bs4库的HTML格式输出

能否让HTML内容更加“友好”的显示?

bs4库的prettify()方法

.prettify()为HTML文本<>及其内容增加更加'\n'

.prettify()可用于标签,方法:.prettify()

bs4库的编码

bs4库将任何HTML输入都变成utf‐8编码 Python 3.x默认支持编码是utf‐8,解析无障碍

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值