鱼C论坛

 找回密码
 立即注册
查看: 79|回复: 2

[已解决]使用python中的pyquery用attr方法获取到的是None

[复制链接]
发表于 5 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
使用python中的pyquery用attr方法获取到的是None,示例如下:


  1. from pyquery import PyQuery


  2. html = '''
  3. <div class="wrap">
  4.     <div id="container">
  5.         <ul class="list">
  6.              <li class="item-0">first item</li>
  7.              <li class="item-1"><a href="link2.html">second item</a></li>
  8.              <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>
  9.              <li class="item-1 active"><a href="link4.html">fourth item</a></li>
  10.              <li class="item-0"><a href="link5.html">fifth item</a></li>
  11.          </ul>
  12.      </div>
  13. </div>
  14. '''


  15. doc = PyQuery(html)
  16. a = doc('.list .item-0.active')
  17. print(a)
  18. print(a.attr('href'))
复制代码
最佳答案
5 天前
当然是none啊,有item-0和active这两个class的是a 外面的li,你要获取a的href就要改成
.list .item-0.active a
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 5 天前 | 显示全部楼层
问题分析:
观察代码和HTML结构,发现两个核心问题:

1. 选择器 .item-0.active 需要同时匹配 item-0active 类,但示例HTML中所有 <li> 都没有 active
2. 尝试获取的 href 属性不存在于 <li> 元素上,这是 <a> 标签的属性


解决方案:
  • 修改选择器匹配实际存在的元素:
    1. python
    2. # 匹配最后一个<li>(PyQuery索引从0开始)
    3. a = doc('.list li:eq(0)')
    4. # 或者匹配所有.item-0类
    5. a = doc('.item-0')
    复制代码

  • 如果要获取href属性,HTML需要包含<a>标签:
    1. html
    2. <li class="item-0 active">
    3.     <a href="[url=https://fishc.com.cn">带链接的条目</a>]https://fishc.com.cn">带链接的条目</a>[/url]
    4. </li>
    复制代码

  • 正确获取子元素的属性:
    1. python
    2. # 先选择<li>,再找子元素<a>
    3. link = doc('.item-0 a').attr('href')
    4. print(link)  # 输出:[url=https://fishc.com.cn]https://fishc.com.cn[/url]
    复制代码



验证示例:
  1. python
  2. from pyquery import PyQuery

  3. html = '''
  4. <div class="container">
  5.     <ul class="list">
  6.         <li class="item-0 active">
  7.             <a href="[url=https://fishc.com.cn">带链接的条目</a>]https://fishc.com.cn">带链接的条目</a>[/url]
  8.         </li>
  9.         <li class="item-1">普通条目</li>
  10.     </ul>
  11. </div>
  12. '''

  13. doc = PyQuery(html)
  14. # 正确获取href属性
  15. link = doc('.item-0 a').attr('href')
  16. print(link)  # 输出:[url=https://fishc.com.cn]https://fishc.com.cn[/url]
复制代码


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 5 天前 | 显示全部楼层    本楼为最佳答案   
当然是none啊,有item-0和active这两个class的是a 外面的li,你要获取a的href就要改成
.list .item-0.active a
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-19 14:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表