Python BeautifulSoup4

BeautifulSoup4

python 解析html, 用一次翻一次文档,无语了。距离上次用BeautifulSoup4已经差不多10个月了…./(ㄒoㄒ)/~~ 现在做个记录,方便下次用。

安装

pip install beautifulsoup4

引入

from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc, 'html.parser')

html.parser解析器是Python的内置标准库,还有另外的html解析器 lxml, html5lib 参考如下:

Python BeautifulSoup4_第1张图片

语法

html标签名字查找

# 通过html标签名获取
soup.title
# The Dormouse's story

# 获取标签名
soup.title.name
# u'title'

# 获取标签内容
soup.title.string
# u'The Dormouse's story'

# 获取父标签名
soup.title.parent.name
# u'head'

# 获取p标签(dom层第一个p标签)
soup.p
# 

The Dormouse's story

# 获取p标签的 class 属性值 soup.p['class'] # u'title' # 查看a标签(dom层第一个a标签) soup.a # Elsie # 获取所有a标签 soup.find_all('a') # [Elsie, # Lacie, # Tillie] # 获取指定ID的标签 soup.find(id="link3") # Tillie # 获取a标签的href属性值 a_link.get('href') 或 a_link['hreft'] # 获取标签内的所有文本 soup.get_text()

tag

# 获取标签名
tag.name

# 获取标签属性
tag.attrs

css搜索

注意 class_ 的下划线

soup.find_all("a", class_="sister")

text搜索

text 参数接受 字符串 , 正则表达式 , 列表, True

soup.find_all(text="Elsie")
# [u'Elsie']

soup.find_all(text=["Tillie", "Elsie", "Lacie"])
# [u'Elsie', u'Lacie', u'Tillie']

# 这个正则会比较实用吧
soup.find_all(text=re.compile("Dormouse"))
[u"The Dormouse's story", u"The Dormouse's story"]

参考文档

BeautifulSoup4 中文

BeautifulSoup4 英文

你可能感兴趣的:(python,python)