如何刮取或解析Iframe内容以获取特定值

时间:2013-04-17 12:24:55

标签: java javascript web-applications web screen-scraping

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

这是简化的html。请理解,有多个嵌套的div和表

,真正的html要复杂得多
.css stuff

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

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

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

我想在我的休息服务中首先将iframe内容存储在java字符串中,然后使用疯狂的Regex获取我想要的信息。

在我尝试之前,我想检查是否有更有效的方法来执行此操作。是否有一些html解析器可用于获取结构化格式的内容。

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

如果您需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:1)

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

BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));             String line =“”;             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作为我知道的更好的选项

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

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

B中。正则表达式。在线查找找到一个好的解决方案我只限于两个链接。此外,MyRegexTester是一个很好的免费资源,用于学习和测试Regex,这比你想象的要少,特别是在java中。使用那些通配符并展望未来。

℃。更好的是,使用像Jsoup这样的解析器,但是如果你没有资源限制,那么设置xml ini变量来输出xml但看起来并非如此。 JSoup为您执行xml解析,并允许您使用xpath来获取结果。

d。使用HttpUnit或像Python中的Mechanize(http://www.pythonforbeginners.com/cheatsheet/python-mechanize-cheat-sheet/),Perl或Ruby这样的gui-less浏览器。我最喜欢的是Python,因为有更多的现成模块,速度大致相同。 Python也有一个Jsoup插件