gpt4 book ai didi

html - 使用 xpath 从格式不正确的页面解析 XML

转载 作者:行者123 更新时间:2023-12-04 04:07:55 28 4
gpt4 key购买 nike

注意:在写这个问题时,我注意到有一个 Github API 可以在没有 HTML 解析的情况下解决我的问题:https://api.github.com/repos/mozilla/geckodriver/releases/latest我决定无论如何都要问它,因为我正在测试如何解决所描述的解析格式错误的 HTML 本身的问题。所以请不要投反对票,因为它有一个 github API!我们可以用任何其他抛出验证错误的页面替换 github。

我要下载最新版geckodriver .通过获取最新标签的重定向目标,我在发布页面上

curl $(curl -s "https://github.com/mozilla/geckodriver/releases/latest" --head | grep -i location | awk '{print $2}' | sed 's/\r//g') > /tmp/geckodriver.html

带有 geckodriver-vx.xxx-linux64.tar.gz 的第一个 Assets 是必需的链接。由于 XML 是示意性的,因此应该对其进行正确解析。 Different tools like xmllint可以使用 xpaths 解析它.因为 xpath 对我来说是新的,所以我在标题上尝试了一个简单的查询。但是 xmllint 会抛出很多错误:

$ xmllint --xpath '//div[@class=Header]' /tmp/geckodriver.html
/tmp/geckodriver.html:51: parser error : Specification mandate value for attribute data-pjax-transient
<meta name="selected-link" value="repo_releases" data-pjax-transient>
^
/tmp/geckodriver.html:107: parser error : Opening and ending tag mismatch: link line 105 and head
</head>
^
/tmp/geckodriver.html:145: parser error : Entity 'nbsp' not defined
Sign&nbsp;up
^
/tmp/geckodriver.html:172: parser error : Entity 'rarr' not defined
es <span class="Bump-link-symbol float-right text-normal text-gray-light">&rarr;
...

还有很多。似乎 github 页面的格式不正确,因为规范要求它。我也试过 xmlstarlet

xmlstarlet sel -t -v -m '//div[@class=Header]' /tmp/geckodriver.html

但结果是相似的。

当 HTML 格式不正确时,是否无法使用这些工具提取某些数据?

最佳答案

curl $(curl -s "https://github.com/mozilla/geckodriver/releases/latest" --head | grep -i location | awk '{print $2}' | sed 's/\r//g') > /tmp/geckodriver.html

use -L, and have curl follow the redirection 可能更简单:

curl -L https://github.com/mozilla/geckodriver/releases/latest

然后,xmllint accepts an --html argument , 使用 HTML 解析器:

xmllint --html --xpath '//div[@class=Header]'

但是,这与该页面上的任何内容都不匹配,因此您可能希望将 XPath 基于以下内容:

'string((//a[span[contains(.,"linux")]])[1]/@href)'

产生:

/mozilla/geckodriver/releases/download/v0.26.0/geckodriver-v0.26.0-linux32.tar.gz

关于html - 使用 xpath 从格式不正确的页面解析 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62213235/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com