【发布时间】:2021-09-07 19:10:22
【问题描述】:
我正在尝试抓取此网页。我需要在“等级名称”下找到所有名称
网址:https://secure.runescape.com/m=hiscore_oldschool/overall?table=0&page=1
但是我遇到了一个大问题。只找到第一个匹配项(Lynx Titan)。 log(m.group(1).split("\"")[0]); 与 Lynx Titan 匹配。但是如果我将 [0] 替换为 1 或 2,它就不起作用。它应该显示下一个名称。任何帮助表示赞赏
public void getRsn() throws IOException {
URL url = new URL("https://secure.runescape.com/m=hiscore_oldschool/overall?table=0&page=1");
URLConnection conn = url.openConnection();
conn.setRequestProperty("User-Agent",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0");
conn.connect();
BufferedReader serverResponse = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
String s = serverResponse.lines().collect(Collectors.joining());
Matcher m = Pattern.compile("user1=(.*)\">").matcher(s);
while(m.find()) {
log(m.group(1).split("\"")[0]);
}
serverResponse.close();
}
【问题讨论】:
-
不要使用正则表达式 - 使用 JSoup
-
P.S.顺便说一句,您的代码对我来说很好用,拆分部分似乎没有必要 - 第一组不包含引号字符