使用BeautifulSoup解析网页
使用方法
创建BeautifulSoup对象
import bs4
import lxml # 使用lxml解析
soup = bs4.BeautifulSoup(html_content, 'lxml')
对象常用方法(待补全)
soup.find_all()
函数声明如下:
find_all(self, name=None, attrs={}, recursive=True, string=None, limit=None, **kwargs):
"""
查找页面中所有符合条件的元素
:param name: 标签名
:param attrs: 属性值字典,例如{'class': 'example'}
:param recursive: 是否递归查找, 默认为True, 如果True, 则会查找所有子孙元素
:param limit: 返回结果的数量限制, 默认为None, 表示返回所有匹配的元素
:kwargs: 其他关键字参数, 例如{'id': 'example'}
:return: 一个element.ResultSet对象, 包含所有匹配的元素
:rtype: bs4.element.ResultSet
"""
例如,查找页面中所有class为example的元素:
example_elements = soup.find_all(class_='example')
soup.find()
函数声明如下:
find(self, name=None, attrs={}, recursive=True, string=None, limit=None, **kwargs):
"""
查找页面中符合条件的第一个元素
:param name: 标签名
:param attrs: 属性值字典,例如{'class': 'example'}
:param recursive: 是否递归查找, 默认为True, 如果True, 则会查找所有子孙元素
:param limit: 返回结果的数量限制, 默认为None, 表示返回所有匹配的元素
:kwargs: 其他关键字参数, 例如{'id': 'example'}
:return: 一个element对象, 包含第一个匹配的元素
:rtype: bs4.element.Tag
"""
例如,查找页面中第一个class为example的元素:
example_element = soup.find(class_='example')
soup.select()
函数声明如下:
select(self, selector, recursive=True, limit=None):
"""
使用CSS选择器查找页面中所有符合条件的元素
:param selector: CSS选择器
:param recursive: 是否递归查找, 默认为True, 如果True, 则会查找所有子孙元素
:param limit: 返回结果的数量限制, 默认为None, 表示返回所有匹配的元素
:return: 一个element.ResultSet对象, 包含所有匹配的元素
:rtype: bs4.element.ResultSet
"""
例如,查找页面中所有class为example的元素:
example_elements = soup.select('.example')
soup.select_one()
函数声明如下:
select_one(self, selector, recursive=True):
"""
使用CSS选择器查找页面中第一个符合条件的元素
:param selector: CSS选择器
:param recursive: 是否递归查找, 默认为True, 如果True, 则会查找所有子孙元素
:return: 一个element对象, 包含第一个匹配的元素
:rtype: bs4.element.Tag
"""
例如,查找页面中第一个class为example的元素:
example_element = soup.select_one('.example')
element对象常用属性(待补全)
element.name
元素的标签名
element.attrs
元素的属性值字典
element.string
元素的文本内容
element.children
元素的子元素列表
element.parent
元素的父元素
element['attr_name']
获取元素的属性值
其他常用方法(待补全)
prettify()
格式化输出HTML代码
encode()
编码输出HTML代码
decode()
解码输出HTML代码
get_text()
获取元素的文本内容
stripped_strings()
获取元素的文本内容列表,并去除空白字符