使用python中的pyquery用attr方法获取到的是None
使用python中的pyquery用attr方法获取到的是None,示例如下:from pyquery import PyQuery
html = '''
<div class="wrap">
<div id="container">
<ul class="list">
<li class="item-0">first item</li>
<li class="item-1"><a href="link2.html">second item</a></li>
<li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>
<li class="item-1 active"><a href="link4.html">fourth item</a></li>
<li class="item-0"><a href="link5.html">fifth item</a></li>
</ul>
</div>
</div>
'''
doc = PyQuery(html)
a = doc('.list .item-0.active')
print(a)
print(a.attr('href'))
问题分析:
观察代码和HTML结构,发现两个核心问题:
1. 选择器 .item-0.active 需要同时匹配 item-0 和 active 类,但示例HTML中所有 <li> 都没有 active 类
2. 尝试获取的 href 属性不存在于 <li> 元素上,这是 <a> 标签的属性
解决方案:
[*]修改选择器匹配实际存在的元素:
python
# 匹配最后一个<li>(PyQuery索引从0开始)
a = doc('.list li:eq(0)')
# 或者匹配所有.item-0类
a = doc('.item-0')
[*]如果要获取href属性,HTML需要包含<a>标签:
html
<li class="item-0 active">
<a href="https://fishc.com.cn">带链接的条目</a>
</li>
[*]正确获取子元素的属性:
python
# 先选择<li>,再找子元素<a>
link = doc('.item-0 a').attr('href')
print(link)# 输出:https://fishc.com.cn
验证示例:
python
from pyquery import PyQuery
html = '''
<div class="container">
<ul class="list">
<li class="item-0 active">
<a href="https://fishc.com.cn">带链接的条目</a>
</li>
<li class="item-1">普通条目</li>
</ul>
</div>
'''
doc = PyQuery(html)
# 正确获取href属性
link = doc('.item-0 a').attr('href')
print(link)# 输出:https://fishc.com.cn
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 当然是none啊,有item-0和active这两个class的是a 外面的li,你要获取a的href就要改成
.list .item-0.active a
页:
[1]