目前,我正在尝试使用以下查询从某些网站上抓取表单:
select * from html
where url="http://somedomain.com"
and xpath="//form[@action]"
这将返回如下结果:
{
form: {
action: "/some/submit",
id: "someId",
div: {
input: [
... some input elements here
]
}
fieldset: {
div: {
input: [
... some more input elements here
]
}
}
}
}
在某些站点上,这可能会深入很多层次,因此我不确定如何开始尝试过滤掉结果中不需要的元素。如果我可以在这里过滤掉它们,那么它会使我的后端代码更简单。基本上,我只喜欢表单和任何标签、输入、选择(和选项)和 textarea 后代。
这是我尝试过的 XPath 查询,但我意识到元素层次结构不会被维护,如果页面上有多个表单,这可能会导致问题:
//form[@action]/descendant-or-self::*[self::form or self::input or self::select or self::textarea or self::label]
但是,我确实注意到此查询返回的元素不再在 div 和表单下的其他元素下返回。