gpt4 book ai didi

Java URLConnection 整数问题

转载 作者:行者123 更新时间:2023-11-30 04:57:58 26 4
gpt4 key购买 nike

我一直在尝试从网页获取信息,特别是此网站:http://www.ncbi.nlm.nih.gov/pubmed?term=%22pulmonary%20disease%2C%20chronic%20obstructive%22%5BMesh%5D (以及其他类似的)。我使用 URL 和 URLConnection 包来执行此操作。我正在尝试从网页获取特定数量 - 在此页面上,我想要文章总数 (16428)。

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

代码:

    URL connection = new URL("http://www.ncbi.nlm.nih.gov/pubmed?term=%22pulmonary%20disease%2C%20chronic%20obstructive%22%5BMesh%5D");
URLConnection yc = connection.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
String html = "";
String inputLine;
while ((inputLine = in.readLine()) != null) html += inputLine;
in.close();


int startMarker = html.indexOf("ncbi_resultcount");
int endMarker = html.indexOf("ncbi_op");

System.out.println(html.substring(startMarker, endMarker));

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

ncbi_resultcount" content="863399" />

而不是:

ncbi_resultcount" content="16428" />

有谁知道这是为什么/我该如何解决它?

谢谢!

最佳答案

我无法重现您的问题,并且我不知道为什么会发生这种情况。也许它正在嗅探特定的 Java 用户代理版本。然后,您需要尝试将 User-Agent header 设置为其他内容,以伪装成“真正的”网络浏览器。

yc.setRequestProperty("User-Agent", "Mozilla");
<小时/>

与具体问题无关,我建议使用真正的 HTML 解析器来完成这项工作,例如 Jsoup 。那么就很简单:

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

关于Java URLConnection 整数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7918464/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com