通过xpath在lxml树中搜索元素将返回空列表

问题描述

我正在尝试通过xpath查找元素,然后打印该信息,但不幸的是,这段代码返回了一个空列表:

response = requests.get('https://justjoin.it/offers/ulam-labs-frontend-developer')
tree = html.fromstring(response.content)
result = tree.xpath('//div[contains(@class,"css-eytwkb") and text() = "EXP. lvl"]/preceding-sibling::div[1]')
print(result)

以上Xpath在selenium和firefox检查器中都很好用,所以我真的不知道这段代码有什么问题。这是HTML:

<div class="css-1uvpahd">
   <div class="css-1e6hsr3">
      <svg class="MuiSvgIcon-root" focusable="false" viewBox="0 0 24 24" aria-hidden="true">
         <path d="M3.5 18.49l6-6.01 4 4L22 6.92l-1.41-1.41-7.09 7.97-4-4L2 16.99z"></path>
      </svg>
   </div>
   <div class="css-1ji7bvd">senior</div>
   <div class="css-eytwkb">EXP. lvl</div>
</div>

我想在senior类中提取css-1ji7bvd

解决方法

这仅仅是因为页面内容是由JS动态呈现的。如果将其关闭,则不会看到太多内容。这就是为什么您的Xpath无法工作的原因,因为在源代码中没有这样的元素。

但是,网站提供了可以查询的API。这是获取所需字段的方法。

要获取API请求URL,只需检查开发人员工具控制台中的XHR标签并尝试执行以下操作:

import requests
url = "https://justjoin.it/api/offers/ulam-labs-frontend-developer"
requests.get(url).json()['experience_level']

这将输出senior

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...