跳到主要内容

🛩️ 获取元素信息


SessionPage对象获取的元素是SessionElement,本节介绍其属性。

假设ele为以下div元素的对象,本节示例均使用该元素:

<div id="div1" class="divs">Hello World!
<p>行元素</p>
<!--这是注释-->
</div>

✅️️ html

此属性返回元素的outerHTML文本。

返回类型:str

print(ele.html)

输出:

<div id="div1" class="divs">Hello World!
<p>行元素</p>
<!--这是注释-->
</div>

✅️️ inner_html

此属性返回元素的innerHTML文本。

返回类型:str

print(ele.inner_html)

输出:

Hello World!
<p>行元素</p>
<!--这是注释-->

✅️️ tag

此属性返回元素的标签名。

返回类型:str

print(ele.tag)

输出:

div

✅️️ text

此属性返回元素内所有文本组合成的字符串。
该字符串已格式化,即已转码,已去除多余换行符,符合人读取习惯,便于直接使用。

返回类型:str

print(ele.text)

输出:

Hello World!
行元素

✅️️ raw_text

此属性返回元素内原始文本。

返回类型:str

print(ele.raw_text)

输出(注意保留了元素间的空格和换行):

Hello World!
行元素
 
 

✅️️ texts()

此方法返回元素内所有直接子节点的文本,包括元素和文本节点。 它有一个参数text_node_only,为True时则只获取只返回不被包裹的文本节点。这个方法适用于获取文本节点和元素节点混排的情况。

参数名称类型默认值说明
text_node_onlyboolFalse是否只返回文本节点
返回类型说明
List[str]文本列表

示例:

print(e.texts())  
print(e.texts(text_node_only=True))

输出:

['Hello World!', '行元素']
['Hello World!']

✅️️ comments

此属性以列表形式返回元素内的注释。

返回类型:List[str]

print(ele.comments)

输出:

[<!--这是注释-->]

✅️️ attrs

此属性以字典形式返回元素所有属性及值。

返回类型:dict

print(ele.attrs)

输出:

{'id': 'div1', 'class': 'divs'}

✅️️ attr()

此方法返回元素某个 attribute 属性值。它接收一个字符串参数,返回该属性值文本,无该属性时返回None
此属性返回的srchref属性为已补充完整的路径。text属性为已格式化文本。

参数名称类型默认值说明
namestr必填属性名称
返回类型说明
str属性值文本
None没有该属性返回None

示例:

print(ele.attr('id'))

输出:

div1

此方法返回元素的 href 属性或 src 属性,没有这两个属性则返回None

返回类型:str

<a href='http://www.baidu.com'>百度</a>

假设a_ele为以上元素的对象:

print(a_ele.link)

输出:

http://www.baidu.com

✅️️ page

此属性返回元素所在的页面对象。由 html 文本直接生成的SessionElementpage属性为None

返回类型:SessionPageWebPage

page = ele.page

✅️️ xpath

此属性返回当前元素在页面中 xpath 的绝对路径。

返回类型:str

print(ele.xpath)

输出:

/html/body/div

✅️️ css_path

此属性返回当前元素在页面中 css selector 的绝对路径。

返回类型:str

print(ele.css_path)

输出:

:nth-child(1)>:nth-child(1)>:nth-child(1)

✅️️ 元素列表中批量获取信息

eles()等返回的元素列表,自带get属性,可用于获取指定信息。

📌 示例

from DrissionPage import SessionPage

page = SessionPage()
page.get('https://www.baidu.com')
eles = page('#s-top-left').eles('t:a')
print(eles.get.texts()) # 获取所有元素的文本

输出:

['新闻', 'hao123', '地图', '贴吧', '视频', '图片', '网盘', '文库', '更多', '翻译', '学术', '百科', '知道', '健康', '营销推广', '直播', '音乐', '橙篇', '查看全部百度产品 >']

📌 get.attrs()

此方法用于返回所有元素指定的 attribute 属性组成的列表。

参数名称类型默认值说明
namestr必填属性名称
返回类型说明
List[str]属性文本组成的列表

此方法用于返回所有元素的link属性组成的列表。

参数:

返回类型说明
List[str]链接文本组成的列表

📌 get.texts()

此方法用于返回所有元素的text属性组成的列表。

参数:

返回类型说明
List[str]元素文本组成的列表

✅️️ 实际示例

以下示例可直接运行查看结果:

from DrissionPage import SessionPage

page = SessionPage()
page.get('https://gitee.com/explore')

# 获取推荐目录下所有 a 元素
li_eles = page('tag:ul@text():全部推荐项目').eles('t:a')

# 遍历列表
for i in li_eles:
# 获取并打印标签名、文本、href 属性
print(i.tag, i.text, i.attribute('href'))

输出:

a 全部推荐项目 https://gitee.com/explore/all
a 前沿技术 https://gitee.com/explore/new-tech
a 智能硬件 https://gitee.com/explore/hardware
a IOT/物联网/边缘计算 https://gitee.com/explore/iot
a 车载应用 https://gitee.com/explore/vehicle
以下省略……