简介
网页解析器 HTML/XML
BeautifulSoup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码
文档地址
中文 https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/
英文 https://www.crummy.com/software/BeautifulSoup/bs4/doc/
安装
pip install bs4
参数列表
tag | |
find(name, attrs, recursive, string, **kwargs) | 根据标签名、属性、内容等查找符合条件的第一个子孙节点,并返回一个Tag对象 |
find_all(name, attrs, recursive, string, limit, **kwargs) | 根据标签名、属性、内容等查找所有符合条件的子孙节点,并以列表形式返回多个Tag对象 |
select(css_selector) | 根据CSS选择器选择匹配的标签,并以列表形式返回多个Tag对象 |
get_text() | 获取当前标签下所有文本信息 |
string | 获取当前标签内部的字符串信息 |
text | 标签内部文本 |
attrs | 以字典形式返回当前标签的所有属性和属性值 |
name | 获取当前标签的名称 |
parent | 获取某个元素的父节点. |
next_sibling | 获取当前标签的下一个兄弟标签 |
previous_sibling | 获取当前标签的前一个兄弟标签 |
has_attr(key) | 判断当前标签是否存在指定的属性 |
replace_with(new_tag) | 将当前标签替换为新标签 |
参考代码
from bs4 import BeautifulSoup
htmlText = """\
'<html>\n\
<head>\n\
\t<title>这是一个标题</title>\n\
</head>\n\
<body>\n\
\t<p class=\'txt\'><b>文本内容1...</b></p>\n\
\t<p class=\'txt\'><b>文本内容2...</b></p>\n\
\t<p class=\'content\'>文本内容3\n\
\t\t<a href=\'https://www.python.com\' class=\'adr\' id=\'ad1\'>function<u>123</u></a>\n\
\t\t<a href=\'https://www.python.com\' class=\'adr\' id=\'ad2\'>array</a>\n\
\t\t<a href=\'https://www.python.com\' class=\'adr\' id=\'ad3\'>list</a>\n\
\t</p>\n\
\t<p class=\'content\'>...waiting update</p>\n\
</body>\n\
</html>'\n\
"""
soup = BeautifulSoup(htmlText, "html.parser") # html.parser HTML解析器
# soup = BeautifulSoup(open("./index.html")) # 通过文件方式获取HTML
print(soup.get_text()) # 获取该html下包含text内容
""" 方法1-默认获取 """
print(soup.find_all(name="p", class_="txt")) # 多种类型获取
print(soup.find_all("a")) # 标签类型获取
print(soup.find(id="ad1")) # 指定属性获取
print(soup.find(id="ad1").text)
""" 方法2-Css选择获取 """
print(soup.select("p")) # 所有p标签包括内容
print(soup.select("p")[0].text) # 第1个p标签内容
print(soup.select(".title")) # 通过class获取包括内容
link = soup.select("a")
print(link[0]["href"]) # 通过属性获取内容
print(soup.select(".adr>u"))
""" 方法3-标签获取 """
print(soup.title) # 获取title标签整个内容
print(soup.title.name) # 获取标签名
print(soup.title.string) # 获取标签内容
print(soup.p) # 获取所有p标签
拓展
HTML节点的增删改操作,更多方法参考文档。