【问题标题】:How to scrape or parse Iframe content to get specific values如何抓取或解析 Iframe 内容以获取特定值
【发布时间】:2013-04-10 05:03:39
【问题描述】:

我从第三方休息服务获得 Iframe 链接 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>

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

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

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

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

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

【问题讨论】:

  • 这里有一些关于使用正则表达式解析 HTML 的好技巧:stackoverflow.com/a/1732454/138256
  • Jsoup html 解析器是最好的方法。 Here 是官方文档站点。
  • 您是从运行 Java 的服务器还是在浏览器中的客户端执行此操作?
  • 我是从服务器执行此操作的,在将其发送到浏览器中的客户端之前,我需要进行一些处理和更多内容。
  • @codebox +1 感谢您提供有用的链接。

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


【解决方案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插件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 2012-01-14
    • 1970-01-01
    • 2018-09-15
    • 2021-01-18
    • 1970-01-01
    相关资源
    最近更新 更多