Java 如何刮取或解析Iframe内容以获得特定值
我从第三方rest服务获取Iframe linkJava 如何刮取或解析Iframe内容以获得特定值,java,javascript,web-applications,web,screen-scraping,Java,Javascript,Web Applications,Web,Screen Scraping,我从第三方rest服务获取Iframe linkhttp:\\abc.com?=blahblahiframelink。我想从该Iframe的内容中提取多个值 这里是简化的html。请理解,真正的html要复杂得多,因为它有多个嵌套的div和表 .css stuff <html> <div> <p> NEED THIS INFO </p> .... blah blah <img src="NEED THIS INFO"
http:\\abc.com?=blahblahiframelink
。我想从该Iframe的内容中提取多个值
这里是简化的html。请理解,真正的html要复杂得多,因为它有多个嵌套的div和表
.css stuff
<html>
<div>
<p> NEED THIS INFO </p>
....
blah blah
<img src="NEED THIS INFO" > </img>
</div>
</html>
.css素材
需要此信息
....
废话
我在上面的代码中将“需要此信息”
标记为我要提取的内容,以证明我需要属性值和元素值
我想首先在rest服务中用java字符串存储Iframe内容,然后使用crazy正则表达式获取我想要的信息
在我尝试之前,我想检查一下是否有更有效的方法来做到这一点。是否有一些html解析器可以用来获取结构化格式的内容
如果没有,请告诉我如何用Java字符串存储Iframe
如果您需要更多信息,请告诉我。对于来这里的人,有几种方法可以做到这一点。但是,最有效的方法是将iframe写入字符串,例如使用HttpURLConnection或HttpsURLConnection(conn是连接)。iFrame可以从它们的链接中获取 BufferedReader br=新的BufferedReader(新的InputStreamReader(conn.getInputStream()); 字符串行=”; html=“” 当然,最有效的方法是限制像Mechanize这样的中间人的数量和URL调用的数量;等等 可以使用java强大的.net或.nio来实现这一点,只需创建一个HttpURLConnection或javax.net的HttpsURLClient来获取您的页面、cookies;等等,答案就从这里展开了 要用Java解析页面,我知道A和B是更好的选项 A.创建XML文档并运行xpath。我的时间有限,所以我已经为您发布了一个资源。你所需要的只是一个字符串,你可以这样做。如果你不是在寻找某个特定的东西,这会满足你的需要。一旦你得到了页面,就可以得到你需要的一切 B.正则表达式。网上寻找一个好的解决方案我只限于两个链接。另外,MyRegextest是学习和测试Regex的一个很好的免费资源,它没有您想象的那么令人畏惧,特别是在java中。使用那些通配符,看起来很奇怪 更好的方法是,使用像Jsoup这样的解析器,但是如果您不受资源约束,则将XMLINI变量设置为输出xml,但情况似乎并非如此。JSoup为您进行xml解析,并允许您使用xpath获得结果
D.在Python()、Perl或Ruby中使用HttpUnit或类似Mechanize的无gui浏览器。我最喜欢的是Python,因为有更多现成的模块,速度也差不多。Python还有一个Jsoup插件关于使用正则表达式解析HTML的一些好提示:Jsoup HTML解析器是最好的方法。是文档的官方网站。您是在运行Java的服务器上还是在浏览器的客户端上执行此操作?我是在服务器上执行此操作的,在将其发送到浏览器的客户端之前,我需要进行一些处理和更多内容。@codebox+1感谢提供有用的链接。
while((line=br.readLine())!=null)
{
html=html+line+"\n";
}
br.close();