Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。
Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。
Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。
1. soup.prettify() : 按html标签层级格式打印,看起来很舒服
from bs4 import BeautifulSoup
import requests
soup = BeautifulSoup(open('test.html'))
print(soup.prettify())
2. 获取tag
print(type(soup.title))
print(soup.title.name)
<class 'bs4.element.Tag'>
title
3. 获取tag中的string
print(type(soup.title.string))
print(soup.title.string)
<class 'bs4.element.NavigableString'>
The Dormouse's story
4. 获取注释
print(type(soup.a.string))
print(soup.a.string)
<class 'bs4.element.Comment'>
Elsie
for item in soup.body.contents: # 遍历body中每个标签的内容
print(item)
print(item.name) # 只找子元素的name
5. css查询
a_s = soup.a #.点选择第一个a
for a in a_s:
print(a)
Elsie
a_s = soup.select('a') # select()选中所有a
for a in a_s:
print(a)