我正在寻找使用xpath的html内容提取器,我已经看到了各种nodejs模块,如
jsdom,htmlparser2,xpath,cheerio
我发现cheerio更适合使用class,id,tags等获取数据但是我无法通过指定xpath来获取数据,并且通过使用xpath nodejs模块,我能够使用xpath获取更小的html数据,更长的html它给出了不同类型的错误,如
未找到实体:@#[line:120,col:9],未关闭的xml属性 @#[行:1,西:877]
注意:我无权以任何方式更改html
e.g。如果我的HTML是
<html>
<body>
<div>
<ul id="fruits">
<li class="apple">Apple</li>
<li class="orange">Orange</li>
<li class="pear">Pear</li>
</ul>
</div>
</body>
</html>
如果我使用这个并使用xpath nodejs模块给这个xpath //*[@id="fruits"]/li[2]
找到元素,我没有收到任何错误,并使用xpath nodejs模块得到 Orange 的结果,但是如果我使用此页面的html http://www.infotaxi.org/india_taxi/ahmedabad_taxi.htm
(这是相当长的),并使用xpath
访问文本部分//*[@id="navlistmeniu"]/li[3]/a/b,
我收到错误
未找到实体:@#[line:120,col:9]
使用Cheerio我可以使用class,id,tags等提取数据,而不是使用xpath
请帮忙????
答案 0 :(得分:1)
我认为这是您的答案xpath-html
,请自己进行测试:
const xpath = require("xpath-html");
const node = xpath.fromPageSource(html).findElement("//*[contains(text(), 'with love')]");