Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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 URL连接问题_Java_Url - Fatal编程技术网

带有整数的Java URL连接问题

带有整数的Java URL连接问题,java,url,Java,Url,我一直在尝试从一个网页上获取信息,特别是这个网站(以及其他类似的网站)。我正在使用URL和URLConnection包来实现这一点。我试图从网页上获得一个特定的数字-在这个页面上,我想要文章的总数(16428) 它在页面顶部写着:“结果:16428中的1到20个”,当我手动查看页面源代码时,我可以找到这个。然而,当我尝试使用java连接从页面源获取这个数字时,出于某种原因,它得到的数字是“863399”,而不是“16428” 代码: 当我运行此代码时,我得到: ncbi_resultcount“

我一直在尝试从一个网页上获取信息,特别是这个网站(以及其他类似的网站)。我正在使用URL和URLConnection包来实现这一点。我试图从网页上获得一个特定的数字-在这个页面上,我想要文章的总数(16428)

它在页面顶部写着:“结果:16428中的1到20个”,当我手动查看页面源代码时,我可以找到这个。然而,当我尝试使用java连接从页面源获取这个数字时,出于某种原因,它得到的数字是“863399”,而不是“16428”

代码:

当我运行此代码时,我得到:

ncbi_resultcount“content=”863399“/>

而不是:

ncbi_resultcount“content=”16428“/>

有人知道这是为什么/我如何解决它吗


谢谢

我无法重现你的问题,也不知道为什么会发生这种情况。也许它在嗅探特定的Java用户代理版本。然后,您需要尝试将
用户代理
标题设置为其他内容,以假装是“真正的”webbrowser

yc.setRequestProperty("User-Agent", "Mozilla");

与具体问题无关,我建议使用真正的HTML解析器来完成这项工作,例如。这样就很容易了:

Document document = Jsoup.connect("http://www.ncbi.nlm.nih.gov/pubmed?term=%22pulmonary%20disease%2C%20chronic%20obstructive%22%5BMesh%5D").get();
Element nbci_resultcount = document.select("meta[name=ncbi_resultcount]").first();
System.out.println(nbci_resultcount.attr("content")); // 16433

什么是nbci\U结果帐户?当我查看来源时,我发现:结果:16433中的1到20。我认为你的索引是错误的,也许考虑使用正则表达式?如果你把用户代理设置成一个真正的浏览器,它会做同样的事情吗?除了搜索结果之外,返回的HTML是否还有其他差异,这些差异可能为搜索返回不同结果提供线索?@Kevin OP说返回的HTML在Java代码和浏览器中是不同的。我不相信,我只是使用了curl,得到了与浏览器相同的东西。当我说yc.setRequestProperty时(“用户代理”、“Mozilla”)我仍然得到输出:ncbi_resultcount“content=”863492“/>我支持这一点。当您通过URLConnection而不是浏览器拉取文档时,服务器可能会返回一个稍有不同的文档。让Java程序将文档保存到一个文件中,然后在浏览器中保存另一个副本并进行比较。结果与16433相同。OP的问题对我来说是无法产生的。当我使用Jsoup代码时,我得到的输出仍然是863492,而不是16433。如果更改用户代理头怎么办?将
.get()
替换为
.userAgent(“Mozilla”).get()
。您是否100%确定您请求的URL与您在问题中发布的URL相同?要跟踪HTTP通信量,您可能会发现它很有用,但仍然会得到错误的结果。我很确定我使用的是同一个URL,因为我是如何从我的代码中复制并粘贴URL到这里的问题中的。这是相当令人沮丧的。。。
Document document = Jsoup.connect("http://www.ncbi.nlm.nih.gov/pubmed?term=%22pulmonary%20disease%2C%20chronic%20obstructive%22%5BMesh%5D").get();
Element nbci_resultcount = document.select("meta[name=ncbi_resultcount]").first();
System.out.println(nbci_resultcount.attr("content")); // 16433