Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何刮取或解析Iframe内容以获得特定值_Java_Javascript_Web Applications_Web_Screen Scraping - Fatal编程技术网

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

Java 如何刮取或解析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"

我从第三方rest服务获取Iframe link
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();