bs4的Beautiful对象的生成
from bs4 import BeautifulSoup
"""
初始化步骤:构建soup对象,可以使用prettify()进行html代码格式规范化输出
"""
html = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title" name="dromouse"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters;
and their names were
<a href="http://example.com/elsie" class="sister" id="link1"><!-- E
lsie --></a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie<
/a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tilli
e</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>
"""
soup = BeautifulSoup(html,"lxml") #lxml解析方式
soup1 = BeautifulSoup(html,"html.parser") #常规网页解析
soup2 = BeautifulSoup(html,"html5lib") #html5解析方式
print(soup.prettify())
print("--"*40)
print(soup1.prettify())
print("--"*40)
print(soup2.prettify())
数据展示如下
<html>
<head>
<title>
The Dormouse's story
</title>
</head>
<body>
<p class="title" name="dromouse">
<b>
The Dormouse's story
</b>
</p>
<p class="story">
Once upon a time there were three little sisters;
and their names were
<a class="sister" href="http://example.com/elsie" id="link1">
<!-- E
lsie -->
</a>
,
<a class="sister" href="http://example.com/lacie" id="link2">
Lacie<
/a> and
</a>
<a class="sister" href="http://example.com/tillie" id="link3">
Tilli
e
</a>
;
and they lived at the bottom of a well.
</p>
<p class="story">
...
</p>
</body>
</html>
bs4的标签,属性,文本的提取
- 极其常见:
- 标签
- name,attrs
- string
from bs4 import BeautifulSoup
html = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title" name="dromouse"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters;
and their names were
<a href="http://example.com/elsie" class="sister" id="link1"><!-- E
lsie --></a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie<
/a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tilli
e</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>
"""
soup=BeautifulSoup(html,"lxml") #"lxml解析方式"
# 提取标签的类型为Tag类型
print soup.title #提取标签
"""
<title>The Dormouse's story</title>
"""
# print soup.head #提取标签全部内容
# print soup.body
print soup.a #多个标签提取第一个
"""
<a class="sister" href="http://example.com/elsie" id="link1"><!-- E
lsie --></a>
"""
# print soup.p
print soup.name
"""
[document]
"""
print soup.title.name #name就是标签的名字
"""
title
"""
# print soup.head.name
print soup.title.attrs
"""
{}
"""
print soup.p.attrs #标签内部的属性
"""
{'class': ['title'], 'name': 'dromouse'}
"""
print soup.p["class"] #取出标签的内部属性
"""
['title']
"""
print soup.p["name"]
"""
dromouse
"""
"""
属性不存在的时候,就会报错
"""
print(soup.title.string) #取出标签之间的内容
"""
The Dormouse's story
"""