我从第三方休息服务获得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。
如果您需要更多信息,请与我们联系。
答案 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插件