繁体   English   中英

如何在Java中获取HTML中元素的XPath?

How to get the XPath of an element in HTML in java?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我想完成一个简单的任务,但是我正在努力寻找一个简单的解决方案:我将网页的HTML包含在String(或File)中,并且我想生成给定元素的XPath。 (例如,我想检索<a>元素的XPath)

我尝试了不同的解决方案,但在正确解析html时经常遇到问题。 是否有像这样的适用于Java的html清洁程序? https://www.htmlwasher.com/这是我目前发现的唯一功能正常的清洁器,但这是一个在线工具。 有了这个,我可以轻松地解析HTML并进入XPath。

我目前正在以这种方式使用jOOX( https://github.com/jOOQ/jOOX )来生成XPath:

Document document = $(html).document();
System.out.println($(document).find("a").xpath());

如果使用我提供的在线工具清理了HTML,则可以生成正确的XPath。 如果只有我可以正确地以编程方式解析html,我喜欢与jOOX进行交互的方式。 您知道解析HTML的好方法吗? 我已经尝试过:

  • JSoup
  • Tagsoup
  • HtmlCleaner

测试网站页面为http://www.ansa.it

编辑 :在一些常见的HTML解析问题上解析失败,例如未关闭的标签(例如</img> ),转义等。

我设法通过这种方式“正确”解析了html:

Document doc = Jsoup.parse(Jsoup.clean(html, Whitelist.relaxed())); doc.outputSettings().escapeMode(EscapeMode.xhtml) .syntax(Syntax.xml) .charset(StandardCharsets.UTF_8);

事实是,像<a href="cinema.shtml">Cinema</a>这样的标签就变成了<a>Cinema</a>因此我无法使用它们的属性(例如href)来选择它们。 我该如何解决这个新问题?

我注意到有些链接仍然具有href,它们是指向其他网站(如facebook或twitter)的链接。 这可能有关吗?

1 个回复

解决

我设法使所有事情都以这种方式工作:

String html = getTheHTMLSomeWay();

Document doc = Jsoup.parse(Jsoup.clean(html, "http://base.uri", Whitelist.relaxed().preserveRelativeLinks(true)));
doc.outputSettings().escapeMode(EscapeMode.xhtml).syntax(Syntax.xml).charset(StandardCharsets.UTF_8);

org.w3c.dom.Document document = $(doc.html()).document();

System.out.println($(document).find("a[href='/your/relative/url']"));

使用Jsoup,我可以针对所有无聊的未关闭标签,不允许的标签等清除HTML。然后,我可以转义所有未转义的字符(根据xhtml )并将语法设置为xml

这样可以为您提供干净的html代码,可与jOOX库一起使用。

1 如何获取X / HTML文件中元素的xpath

我是Xpath的初学者,想知道是否有任何方法可以在javascript / jquery中获取元素的xpath。 我需要一个绝对的方法来识别一个元素,我知道Xpath用于此,但无法弄清楚如何。 场景是我有一个元素的jquery引用。 我想让它的xpath在鼠标点击时存储在数据库中。 ...

3 HTML代码中元素的XPath

我正在尝试使用selenium webdriver-java单击嵌入在以下HTML代码中的“选择”按钮。 为此,我试图为“选择”按钮编写XPath。 在上面的代码中获取Select按钮的xpath是什么。 领域: BYOX Samsung S6 White可以在每一段代码中有所不同。 ...

4 如何获取表中元素的xpath

我开始使用Selenium Webdriver(newbie:D)。 我如何获取表中元素的xpath? 我试图在chrome中查看chrome页面的源代码-选择元素并获取它的xpath。 Selenium Webdriver告诉我,他无法使用此xpath找到元素。 页面链接: htt ...

5 如何在Java中从XPath获取元素

我想从XPath查询中获取数据: 但是,无论我选择什么,我总是得到1个节点(因为.get(0) )。 我不知道如何选择查询选择的节点。 我发现应该将节点强制转换为Element( XOM是否从Node获得属性? ),但是该链接仅显示了如何选择第一个节点。 ...

6 如何在Java中获取链接列表中元素的所有索引

我有一个链表。 我想为此列表的每个位置i设置一个权重因子p ^ i。 然后,我想获得列表元素的加权值,作为这些因素的总和。 让我举一个例子来使事情具体化。 假设我的列表大小为5,即它具有从索引0到索引4的元素。让我们说p = 0.5(即p = 1/2)。 因此,位置0的加权因子为p ...

8 获取Webdriver中元素的所有属性或xPath

我正在尝试对网页进行简单的猴子测试,该测试将获取页面上所有活动的元素并以随机顺序单击它们。 当我这样做时,我想写一个日志来知道,我的测试单击哪个元素,哪个测试崩溃 所以我希望日志文件看起来像这样 要么 使用Webdriver + Ruby有什么办法吗? ...

9 获取Javascript / jQuery中元素的最短xpath

这是我要更改的基本脚本 http://jsfiddle.net/gaby/hsv97/2/ 它将xpath提供给clicked元素。 当您点击with deeper它会返回 这是元素的完整路径。 但是,如果网站站长决定添加一个额外的div ,则#deepest.red的路 ...

10 xpath中元素属性中的空格

我们在YML文件中定义了以下XPath: 但是,我们想改为使用“ display: none ”,但是在添加空间时,Netbeans抱怨说YML解析不正确,并且运行Selenium测试也失败了。 任何想法如何解决? ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM