Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与Firefox和其他浏览器相比,Jsoup获得了不同的html_Java_Web Scraping_Jsoup - Fatal编程技术网

Java 与Firefox和其他浏览器相比,Jsoup获得了不同的html

Java 与Firefox和其他浏览器相比,Jsoup获得了不同的html,java,web-scraping,jsoup,Java,Web Scraping,Jsoup,我遇到了来自一个叫Kabum的网络商店的一些url的麻烦 网址是 如果我在地址栏中输入站点,或者单击链接,我会看到一个包含该产品的页面,但是如果我使用Jsoup,我会看到一个页面,其中只对同一地址进行了元刷新 尝试设置用户代理、推荐人和跟踪meta中的链接,但我得到了相同的页面 我的代码在这里: 文档文档; 字符串url=”http://www.kabum.com.br/cgi-local/kabum3/produtos/descricao.cgi?id=01:02:23:55:159"; 试一

我遇到了来自一个叫Kabum的网络商店的一些url的麻烦

网址是

如果我在地址栏中输入站点,或者单击链接,我会看到一个包含该产品的页面,但是如果我使用Jsoup,我会看到一个页面,其中只对同一地址进行了元刷新

尝试设置用户代理、推荐人和跟踪meta中的链接,但我得到了相同的页面

我的代码在这里:

文档文档;
字符串url=”http://www.kabum.com.br/cgi-local/kabum3/produtos/descricao.cgi?id=01:02:23:55:159";
试一试{
字符串ua=“Mozilla/5.0(Windows NT 6.1;WOW64;rv:12.0)Gecko/20100101 Firefox/12.0”;
字符串引用器=”http://www.google.com";
doc=Jsoup.connect(url).timeout(20000).userAgent(ua).referer(referer.get();
Elements meta=doc.select(“html头元”);
for(Iterator it=meta.Iterator();it.hasNext();){
Element=it.next();
if(element.attr(“http等价”)匹配(“刷新”)){
字符串novaUrl=element.attr(“内容”).replaceFirst(\\d?;url=“,”);
System.out.printf(“重定向到%s%n”,novaUrl);
doc=Jsoup.connect(novaUrl).userAgent(ua.referer(referer.get();
打破
}
}
}捕获(IOEX异常){
Logger.getLogger(Teste1.class.getName()).log(Level.SEVERE,null,ex);
返回;
}
系统输出打印项次(doc);
非常有趣


是的,下面一行:
您需要用cookies重新发送请求。站点正在返回一个会话cookie,它希望在下一个请求中看到该cookie

String url = "http://www.kabum.com.br/cgi-local/kabum3/produtos/descricao.cgi?id=01:02:23:55:159";
Map<String, String> cookies = Jsoup.connect(url).execute().cookies();
Document document = Jsoup.connect(url).cookies(cookies).get();
System.out.println(document.html());
stringurl=”http://www.kabum.com.br/cgi-local/kabum3/produtos/descricao.cgi?id=01:02:23:55:159";
Map cookies=Jsoup.connect(url.execute().cookies();
Document Document=Jsoup.connect(url).cookies(cookies.get();
System.out.println(document.html());

请注意,在同一会话中,您应该在后续的每个请求中使用相同的cookie。

该页面上似乎有很多javascript。你考虑到了吗?我不需要javascript,只需要html。jsoup中返回的html只是这样(不能格式化吗?):但是javascript可能会生成很多您试图提取和查看的网页。如果是这样的话,您可能会对jsoup不太走运。尝试使用noscript禁用javascript,但页面运行良好,因此我认为问题不在于javascriptHm,这让我感到困惑。我不知道为什么Jsoup没有按预期工作。