繁体   English   中英

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

[英]Search for element in lxml tree by xpath returns empty list

我正在尝试通过 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>

我想提取css-1ji7bvd class中的senior

这很简单,因为页面的内容是由 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM