【问题标题】:How can I parse dynamic content from a web page?如何解析网页中的动态内容?
【发布时间】:2012-08-19 07:21:43
【问题描述】:

我尝试从此网址获取代理列表:

Free proxy list

这很酷,但端口号是动态 JavaScript 内容。如何从此页面获取 JavaScript 生成的内容?我有 jsoup 和 djNativeSwing 但我想在后台线程中执行此操作。

JWebBrowser webBrowser = new JWebBrowser();
webBrowser.navigate("http://spys.ru/en/free-proxy-list/");
System.out.println(webBrowser.getHTMLContent());

此代码返回 Null 结果。请帮忙。

【问题讨论】:

  • 查看htmlUnit 我认为这是您需要的一件事。谢谢。
  • 我认为这不适合我。我的代码必须简单且跨平台。据我所知 HTMLUnit - 必须有 SYSTEM 路径 - 这很麻烦
  • 不,您不需要系统路径。我使用适用于 http 协议的 HTMLUnit 创建了网络爬虫。所以是的,它确实工作正常。如果您需要更多帮助,请告诉我。如果你愿意,我可以写一个正式的答案。
  • 哦!举个例子!我试着用这个!
  • 我尝试使用这段代码:final WebClient webClient = new WebClient();最终 HtmlPage page = webClient.getPage("spys.ru/free-proxy-list1/RU/"); System.out.println(page.toString());

标签: java javascript html-parsing jsoup dynamic-data


【解决方案1】:

调用 getHtmlContent() 方法时,浏览器尚未完成加载。改用这样的东西:

JWebBrowser webBrowser = new JWebBrowser();
webBrowser.navigate("http://spys.ru/en/free-proxy-list/");
webBrowser.addWebBrowserListener(new WebBrowserListener(){
   public void loadingProgressChanged(WebBrowserEvent e){
       if(e.getWebBrowser().getLoadingProgress()==100)
            System.out.println(webBrowser.getHTMLContent());
   }
}
/* Note: I wrote this in the comment field without any testing,
   you probably have to make the webBrowser final. */

JavaDocs是你的朋友!

【讨论】:

  • 感谢您的快速回放,但我无法从这段代码中得到任何信息。以及如何不为事件构建所有抽象类。
  • 2 秒,我会尝试获取 lib 并测试一下
  • 抱歉,我对这个库还不够熟悉。即使我使用计时器等待很长一段时间,webBrowser.getHTMLContent() 也会由于某种原因返回 null
  • 你有什么想法吗?我正在尝试使用这个例子,所以它是
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多