我正在制作一个小项目,我正在从网页上抓取信息。作为开始步骤,我开始查看来自
的页面源代码http://www.walmart.com/search/search-ng.do?search_query=camera&ic=16_0&Find=Find&search_constraint=0
在分析了我需要做的事情后,我尝试使用两种不成功的方法检索相同的页面信息
首先,我尝试使用Jsoup的简单请求,如下所示
Document doc;
try {
doc = Jsoup.connect("http://www.walmart.com/search/search-ng.do?search_query=camera&ic=16_0&Find=Find&search_constraint=0").get();
System.out.println(doc);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
它提供了一些页面信息,但没有提供包含所有搜索结果的实际页面源
然后我尝试了Apache Commons http解决方案,看起来像
String url = "http://www.walmart.com/search/search-ng.do?search_query=camera&ic=16_0&Find=Find&search_constraint=0";
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost request = new HttpPost(url);
HttpResponse response;
try {
response = httpclient.execute(request);
StatusLine status = response.getStatusLine();
String responseString = EntityUtils.toString(response.getEntity());
System.out.println(status);
System.out.println(responseString);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
但我一直收到永久移动状态的页面。
到目前为止,似乎Jsoup是我向前迈进的最佳选择。我认为没有收到所有搜索结果的问题与Jsoup的get函数调用时页面上未运行的脚本有关。
如何获取所有页面信息,以便我可以开始从搜索结果中检索信息。
答案 0 :(得分:2)
Jsoup不支持执行javascript,这意味着您无法解析动态生成的HTML。简单地说,Jsoup不会模拟浏览器环境,但它是一个纯粹的解析器。
我建议您使用HtmlUnit,这是一个“无GUI的Java程序浏览器”。 它支持javascript执行,可用于生成HTML源代码,然后您可能希望使用Jsoup更轻松地解析。
可以找到HtmlUnit here。