BeautifulSoup的使用(一)

202 阅读1分钟

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&lt;
/a&gt; 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
"""