使用 rvest::find_element 和 xpath 来获取嵌入 xml 的 html 文档

问题描述 投票:0回答:1

我正在尝试遍历从 SEC 网站抓取的 HTML/XML 文档。这是一份公司备案文件(表格 10-Q)。该文档具有 XML 标签和属性,但它是 HTML 文档。如果我将文档读取为 HTML,则 xpath 在查找非 HTML 属性(例如

contextRef
)时不起作用。如果我以 XML 形式读取文档,那么我可以查找非 HTML 属性,但无法使用显式路径遍历文档。

这是一个工作示例。

req <- httr2::request("https://www.sec.gov/Archives/edgar/data/1065280/000106528022000368/nflx-20220930.htm") |>
  httr2::req_headers(`User-Agent` = "Me [email protected]")
resp <- httr2::req_perform(req)
xml_doc <- httr2::resp_body_xml(resp, check_type = FALSE)
html_doc <- httr2::resp_body_html(resp)

rvest::html_element(xml_doc, xpath = "/html/body/div")
rvest::html_element(xml_doc, xpath = "//*[@contextRef]")
rvest::html_element(html_doc, xpath = "/html/body/div")
rvest::html_element(html_doc, xpath = "//*[@contextRef]")

任何允许我遍历显式路径并搜索属性的建议都会很有帮助。

xpath rvest xml2
1个回答
0
投票

它实际上是一个XHTML文档。最好将其视为 XML,但您需要认识到“html”和“body”等元素位于 XHTML 命名空间中,并在 XPath 表达式中为它们添加相应的前缀,例如

/h:html/h:body/h:p
,其中前缀
h 
绑定到命名空间 URI
http://www.w3.org/1999/xhtml

© www.soinside.com 2019 - 2024. All rights reserved.