问题描述
我正在尝试通过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
。