0

我需要获取标签中包含的 id、类和任何其他信息。我在 Scala 工作,不过 Java 很好。这是一个精确匹配解析器。它只会抓住“按钮”。例如,“button id=...”被排除在外。其他解析器?自己做?这是我迄今为止发现的。任何帮助,将不胜感激。

// Currently(using Selenium WebDriver and Scala.XML):
// Opens Browser and goes to page
driver.get(URL)

// Gets XML/html/etc.. and converts it to XML format                                     
val xmlData = XML.loadString(driver.getPageSource)  

// Parse for buttons
(xmlData \ "button").text
4

2 回答 2

0

我可以向您推荐一个jsoup库。它有很多很酷的功能,这是我的前 3 项:

  • 非常容易上手和使用
  • 甚至可以解析损坏/无效的 HTML
  • 为您提供 CSS 选择器的强大功能(类似于 JQuery)

这是一个小例子:

val rows = (Jsoup connect "http://some.page.com/test.html" get) select 
  "h1:contains(Example Table Header) ~ table tr"

rows.toList drop 1 foreach { row =>
  println(row select "td:eq(1)" text)
}

这个小片段将下载test.html、解析并从 HTML 中选择与以下结构匹配的所有表行(标题行除外):

<h1>Example Table Header</h1>

<table>
    <tr>
        <th>Id</th>
        <th>Name</th>
    </tr>
    <tr>
        <td>1</td>
        <td>Some</td>
    </tr>
    <tr>
        <td>1</td>
        <td>Test</td>
    </tr>
</table>

它将打印:

Some
Test
于 2013-06-20T19:21:16.803 回答
0

这是一个“为我做我的代码”的问题,应该被关闭,但至少你已经尝试了一些东西。

1)解析

你不能html直接解析到xml,因为它不是一个有效的xml,你应该使用html 解析器。我更喜欢标签汤

2)搜索按钮

您应该使用方法\\而不是\搜索所有子元素。

3)获取属性

使用\\or\方法,您将获得NodeSeq. 您应该遍历它来解析Node对象。

for(node <- nodeSeq) yield ???

您可以使用方法text来获取元素的文本,并使用方法\获取属性:

val id = (node \ "@id").text
于 2013-06-20T19:25:34.670 回答