Python 使用XPather测试时HTML无效

Python 使用XPather测试时HTML无效,python,html,xml,xpath,Python,Html,Xml,Xpath,我想用它在一个平台上测试一些XPATH。我正在使用chrome在网页上“查看源代码”,然后将源html复制到xpather的左侧窗口中。然而,xpather指出,从XML的角度来看,HTML是无效的。我得到两种主要类型的错误: id值必须是唯一的 标签必须成对,无起始标签 我当然想直接在HTML源代码上测试XPATH表达式,因为这让我可以专注于XPATH查询本身。它还允许我验证通过第三方库(如python中的lxml)获得的结果。仅供参考,lxml似乎对html没有问题,可以将其转换为etree

我想用它在一个平台上测试一些XPATH。我正在使用chrome在网页上“查看源代码”,然后将源html复制到xpather的左侧窗口中。然而,xpather指出,从XML的角度来看,HTML是无效的。我得到两种主要类型的错误:

id值必须是唯一的

标签必须成对,无起始标签

我当然想直接在HTML源代码上测试XPATH表达式,因为这让我可以专注于XPATH查询本身。它还允许我验证通过第三方库(如python中的
lxml
)获得的结果。仅供参考,
lxml
似乎对html没有问题,可以将其转换为
etree
元素而不会出现问题

我在这里该怎么办?我可以想到两种可能性:

  • 首先验证HTML,以确保xpather接受它。但是,我不确定在不修改原始html的情况下是否可以做到这一点。如果可能的话,我想保持网页来源的完整性
  • 找到另一个可以直接在html上运行XPATH表达式的工具。有“HPATH”这样的东西吗

要使用Chrome直接在网页上测试xpath,请打开Chrome Developer Tools并在控制台中执行
$x(xpath)
。例如:

$x('//div[@id="col-center"]/div[2]/h1/a')

开发者工具还允许您检查页面上的元素(右键单击->检查)和复制xpath(右键单击->复制xpath)。

XML和HTML是两种不同的类型,从XML的角度分析HTML没有多大意义。是
@id
应该是唯一的(如果可能,请让开发人员解决问题),但HTML中的NO标记不能成对出现(元素如
input
br
没有结束标记,一些标记可能是自动关闭的,没有开始标记)。此外,还没有像HPATH这样的东西,因为XPath可以很好地处理HTML。如果你有一些具体的问题,请随时发布。另外,请使用兼容HTMLI。我已经尝试过XPath tester,但它也给了我xml验证错误。我发现chrome有一些扩展,可以计算并突出显示网页上XPath语句的结果。这很好,但是有没有一个工具可以突出显示html源代码本身的结果,类似于Xpather?我同意这可能是最好的方法。它不需要任何第三方扩展,直接使用本机google chrome控制台。它不像Xpather那么好但是哦。。。我想只是需要更加熟悉JavaScript