gpt4 book ai didi

java - 类google搜索引擎爬取解析结果

转载 作者:行者123 更新时间:2023-11-29 05:06:18 26 4
gpt4 key购买 nike

我必须用 Java 编写解析器(这是我的第一个 html 解析器)。现在我正在使用 jsoup 库,我认为它是解决我的问题的好方法。

主要目标是从 Google Scholar 获取一些信息(h-index、出版物数量、科学载体年限)。我知道如何与 10 个人一起解析 html,就像这样:

http://scholar.google.pl/citations?mauthors=Cracow+University+of+Economics&hl=pl&view_op=search_authors

for( Element element : htmlDoc.select("a[href*=/citations?user") ){
if( element.hasText() ) {
String findUrl = element.absUrl("href");
pagesToVisit.add(findUrl);
}
}

但是我需要找到有关所问大学的所有科学家的信息。怎么做?我正在考虑从按钮获取 url,它引导我们找到下 10 个结果,如下所示:

Elements elem = htmlDoc.getElementsByClass("gs_btnPR");
String nextUrl = elem.attr("onclick");

但是我得到这样的 url:

citations?view_op\x3dsearch_authors\x26hl\x3dpl\x26oe\x3dLatin2\x26mauthors\x3dAGH+University+of+Science+and+Technology\x26after_author\x3dslQKAC78__8J\x26astart\x3d10

我必须翻译 \x 标志并将该网站添加到我的“toVisit”网站吗?或者在 jsoup 库中或在其他库中是更好的主意?请告诉我!我没有任何其他想法,如何解析这样的东西......

最佳答案

I have to translate \x signs and add that site to my "toVisit" sites...I don't have any other idea, how to parse something like this...

\xAAhexadecimal编码ascii .比如\x3d就是=\x26就是&。可以使用基数设置为 16 的 Integer.parseInt 转换这些值。

char c = (char)Integer.parseInt("\\x3d", 16);
System.out.println(c);

如果您需要在没有第 3 方库的情况下解码这些值,您可以使用正则表达式来实现。例如,使用问题中提供的字符串:

String st = "citations?view_op\\x3dsearch_authors\\x26hl\\x3dpl\\x26oe\\x3dLatin2\\x26mauthors\\x3dAGH+University+of+Science+and+Technology\\x26after_author\\x3dslQKAC78__8J\\x26astart\\x3d10";
System.out.println("Before Decoding: " + st);
Pattern p = Pattern.compile("\\\\x([0-9A-Fa-f]{2})");
Matcher m = p.matcher(st);
while ( m.find() ){
String c = Character.toString((char)Integer.parseInt(m.group(1), 16));
st = st.replaceAll("\\" + m.group(0), c);
m = p.matcher("After Decoding: " + st);//optional, but added for clarity as st has changed
}
System.out.println(st);

关于java - 类google搜索引擎爬取解析结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30267648/

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