HtmlUnit不可能的网站?

Stu*_*ide 7 javascript java ajax screen-scraping htmlunit

我不能,为了我的生活,装备HtmlUnit来抓住这个网站:

http://www.bing.com/travel/flight/flightSearch?form=FORMTRVLGENERIC&q=flights+from+SLC+to+BKK+leave+07%2F30%2F2010+return+08%2F11%2F2010+adults%3A1+类%3ACOACH&STOC = 0&VO1 =盐+湖+城%2C + UT +%28SLC%29 + - +盐+湖+市+国际+机场&O = SLC&VE1 =曼谷%2C +泰国+%28BKK%29 + - +素万那普+国际&E = BKK&D1 = 07%2F30%2F2010&R1 = 08%2F11%2F2010&p = 1&b = COACH&BAF =真

我确信它与后台运行的大量脚本有关.也许这些脚本没有足够的时间来完全加载?

我也尝试过简单地抓住bing.com/travel,也没有成功.它打破了新HtmlPage客户端的getPage函数.

输出提供了大量的runtimeErrors("完成此操作所需的数据尚不可用"),全部用于相同的sourceName(" http://www.bing.com/travel/jsxc.vjs?a=common&v=5.5" .0-1278007084280 ")

然后在bing.com上的几个脚本中丢失了一些"(").

然后它调用javascript,然后突然结束.

我意识到这可能是其他人可能无法看到的一些问题,所以如果没有建议,有人会介意通过他们自己的HtmlUnit使用的测试实现来抽取这两个站点,看看他们是否可以获得基本输出XML或文本结果?我不是想在这里做任何事情,只是得到结果的一些基本文本或XML输出.

知道其他人的实施是否有效是很方便的,所以我可以让陪审团操纵我的工作完成.

码:

import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.WebClient;

public class test {

public static void main(String[] args) throws Exception {

        WebClient client = new WebClient();
        System.out.println("webclient loaded");

        HtmlPage currentPage = client.getPage("http://www.bing.com/travel/flight/flightSearch?form=FORMTRVLGENERIC&q=flights+from+SLC+to+BKK+leave+07%2F30%2F2010+return+08%2F11%2F2010+adults%3A1+class%3ACOACH&stoc=0&vo1=Salt+Lake+City%2C+UT+%28SLC%29+-+Salt+Lake+City+International+Airport&o=SLC&ve1=Bangkok%2C+Thailand+%28BKK%29+-+Suvarnabhumi+International&e=BKK&d1=07%2F30%2F2010&r1=08%2F11%2F2010&p=1&b=COACH&baf=true");
        client.waitForBackgroundJavaScript(10000);
        System.out.println("htmlpage init'd");

        //System.out.println(currentPage.getTitleText());
        String textSource = currentPage.asXml();
        System.out.println(textSource);

}

}
Run Code Online (Sandbox Code Playgroud)

谢谢!

Rod*_*zel 3

尝试添加这个:

client.setThrowExceptionOnScriptError( false ) ;
Run Code Online (Sandbox Code Playgroud)

运行需要很长时间,而且它会输出日志记录......但最终出现了一个页面:

htmlpage init'd
<?xml version="1.0" encoding="utf-8"?>
<html id="">
  <head>
   ...
Run Code Online (Sandbox Code Playgroud)