获取完整的HTML内容网页(包括javascript内容)

时间:2015-05-11 12:36:53

标签: javascript jquery html css jsoup

经过几个小时的尝试和阅读后,我对标题主题感到有点迷失。

我的问题:我正在尝试获取单个网页的完整HTML内容(javascript HTML追加/添加的内容)。 我已经尝试过了:

  • 我使用了Jsoup,但由于jsoup没有处理javascript内容,我不得不改变。
  • 我使用了HmtlUtil但是我在加载目标网页时遇到了很多错误(比如Css错误,runtimeError,EcmaError等)。
  • 我使用Chrome的基本功能来保存完整的内容网页,然后我使用Jsoup库来获取我想要查找的内容。这是我获得我希望得到的内容的唯一方式。

现在,问题是,我怎样才能模仿"另存为"浏览器的功能或者我如何获得完整的HTML内容第一个然后使用Jsoup来扫描静态的最终HTML内容?

非常感谢您的建议和帮助!

2 个答案:

答案 0 :(得分:1)

我终于得到了我想要的东西。 我会尝试解释那些需要帮助的人!

所以!该过程由两个步骤组成:

  • 首先,获取最终内容HTML(包括javascript HTML内容等),如果您访问网页,然后将其保存到简单的 file.html
  • 然后,我们将使用Jsoup库在保存的文件 file.hmtl 中获取所需内容。

1 - 获取HTML内容并保存

在此步骤中,您需要下载 phantomjs 并使用它来获取内容。 这是获取目标页面的代码。 只需根据您要获取的网页的网址以及 mySaveFile.html 文件的名称更改 myTargetedPage.com

var page = require('webpage').create();
var fs = require('fs');
page.open('http://myTargetedPage.com', function () {
    page.evaluate();
    fs.write('mySaveFile.html', page.content, 'w');
    phantom.exit();
});

如您所见,保存的文件与浏览器中的内容加载完全相同。

2 - 提取您想要的内容

现在,我们将使用Java和库Jsoup来获取或具体内容。 在我的例子中,我想获得网页的这一部分:

/* HTML CONTENT */
<span class="my class" data="data1"></span>
/* HTML CONTENT */
<span class="my class" data="data2"></span>
/* HTML CONTENT */

要实现这一点,此代码就可以了(不要忘记编辑 thePathToYourSavedFile.html

public static void main(String[] args) throws Exception {
    String url = "thePathToYourSavedFile.html";

    Document document = Jsoup.connect(url).userAgent("Mozilla").get();

    Elements spanList= document.select("span");

   for (Element span: spanList) {
       if(span.attr("class").equals("my class")){
           String data = span.attr("data");
           System.out.println("data : "+data);             
       }
    }       
}

享受!

答案 1 :(得分:0)

有一个很好的插件可以满足您的需求。它提供了一种查看页面及其功能的方法。它适用于某些浏览器,但不是全部。这是链接:http://chrispederick.com/work/web-developer/

P.S。安装后,右上角的工具栏上有一个小齿轮。这就是所有功能所在的地方。