You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python Playwright提取a标签href属性值遇问题,求解决

问题:提取a标签href属性值失败,始终获取文本

我尝试提取a标签href中的链接,但始终获取到的是元素内的文本。

网页代码如下:

<div class="item-info-container ">
   <a href="/imovel/32600863/" role="heading" aria-level="2" class="item-link xh-highlight" 
   title="Apartamento T3 na avenida da Liberdade, São José de São Lázaro e São João do Souto, Braga">
   Apartamento T3 na avenida da Liberdade, São José de São Lázaro e São João do Souto, Braga
   </a>
</div>

我使用的代码为:

element_handle = page.locator('//div[@class="item-info-container "]//a').all_inner_texts()

无论是否指定//a[@href],输出始终是标题文本:

Apartamento T3 na avenida da Liberdade, São José de São Lázaro e São João do Souto, Braga

而我实际想要获取的是:

/imovel/32600863/

请问我的逻辑哪里出错了?


原因与解决办法

  • 核心问题:你调用的all_inner_texts()方法本身就是用来提取元素内部文本的,和元素的属性完全不相关,所以不管怎么调整定位器,返回的都是a标签里的标题内容,这是方法用错了。

  • 正确实现方式:要获取href属性值,得用专门获取属性的方法,以Playwright为例:

    1. 获取单个元素的href:
    href_value = page.locator('//div[@class="item-info-container "]//a').get_attribute('href')
    
    1. 批量获取多个元素的href:
    # 方式一:遍历元素列表
    href_list = []
    elements = page.locator('//div[@class="item-info-container "]//a').all()
    for elem in elements:
        href_list.append(elem.get_attribute('href'))
    
    # 方式二:用evaluate_all批量处理
    href_list = page.locator('//div[@class="item-info-container "]//a').evaluate_all('els => els.map(el => el.getAttribute("href"))')
    

如果需要完整的绝对路径URL,把el.getAttribute("href")换成el.href即可,它会自动拼接当前页面的域名。


内容的提问来源于stack exchange,提问作者gustavo matteo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 08:35:33