如何获取在不同网页上具有不同xpath的数据?

时间:2016-07-13 12:57:14

标签: xpath web-scraping web-crawler

所以我试图抓取一个显示在不同页面上不同xpath中的数据。

如果您将在wiktionary ... https://en.wiktionary.org/wiki/foo上看到IPA代表的xpath,您会看到xpath是

//*[@id="mw-content-text"]/ul[1]/li[1]/span[4]

但是如果我得到另一个词,比如https://en.wiktionary.org/wiki/bar那么xpath就是

//*[@id="mw-content-text"]/ul[1]/li[2]/span[5]

我想不出有任何方法来调和这些,我有什么遗漏的吗?

1 个答案:

答案 0 :(得分:2)

答案很简单。永远不要让工具为您编写任何XPath。所有工具都搞错了。

查看文档的HTML源代码并自行编写适当的XPath。

var result = document.evaluate("//*[@class = 'IPA']", document),
    elem;

while (elem = result.iterateNext()) { 
    console.log(elem);
}

以上显示了最简单的变体。它会在https://en.wiktionary.org/wiki/foo上选择两次出现<span class="IPA">,在https://en.wiktionary.org/wiki/bar上会出现更多次出现。

使用更具体的表达式来缩小结果范围。