0

http:\\abc.com?=blahblahiframelink我从第三方休息服务获得 iframe 链接。我想从该 iframe 的内容中提取多个值。

这是简化的html。请理解,真正的 html 要复杂得多,有多个嵌套的 div 和表

.css stuff

<html>
<div>
 <p> NEED THIS INFO </p> 
   ....
   blah blah

  <img src="NEED THIS INFO" > </img> 
</div> 
</html>

我在上面的代码中标记"NEED THIS INFO"了我想要提取的内容,以证明我想要属性值以及元素值。

我正在考虑首先将 Iframe 内容存储在我的休息服务中的 java 字符串中,然后使用疯狂的正则表达式来获取我想要的信息。

在我尝试之前,我想检查是否有更有效的方法来做到这一点。是否有一些 html 解析器可以用来获取结构化格式的内容。

如果没有,请告诉我如何将 Iframe 存储在 Java 字符串中。

如果您需要更多信息,请告诉我。

4

1 回答 1

1

对于来这里的人来说,有几种方法可以做到这一点。但是,最有效的方法是将 iframe 写入字符串,例如使用 HttpURLConnection 或 HttpsURLConnection (conn 是连接)。iframe 可以从它们的链接中获取。

BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream())); 字符串行=""; html="";

        while((line=br.readLine())!=null)
        {
            html=html+line+"\n";
        }
        br.close();

最有效的当然是限制像 Mechanize 这样的中间人的数量和 URL 调用的数量;等等

可以使用 java 强大的 .net 或 .nio 来做到这一点,只需创建一个 HttpURLConnection 或 javax.net 的 HttpsURLClient 来获取您的页面,即 cookie;等等。从那里答案展开。

要在 Java 中解析页面,您可以使用 A 和 B 是我知道的更好的选择

A. 创建一个 XML 文档并运行一个 xpath。我时间有限,所以我为你发布了一个资源。你只需要一个字符串,你就可以做到这一点。如果您不是在寻找特定的东西,这符合您的需求。获得页面后,即可获得所需的一切。

http://www.mkyong.com/tutorials/java-xml-tutorials/

B. 正则表达式。在网上找一个好的解决方案我仅限于两个链接。此外,MyRegexTester 是学习和测试 Regex 的一个很好的免费资源,它不像您想象的那么令人生畏,尤其是在 java 中。使用这些通配符并向前看。

C. 更好的是,使用 Jsoup 之类的解析器,但如果您不受资源限制,但将 xml ini- 变量设置为输出 xml,但情况似乎并非如此。JSoup 为您进行 xml 解析,并允许您使用 xpath 来获取结果。

D. 在 Python ( http://www.pythonforbeginners.com/cheatsheet/python-mechanize-cheat-sheet/ )、Perl 或 Ruby中使用 HttpUnit 或无 gui 浏览器,例如 Mechanize 。我最喜欢的是 Python,因为有更多的现成模块,速度也差不多。Python 也有一个 Jsoup 插件

于 2013-07-19T16:31:06.820 回答