文章目錄

虽然在索引组,但有时还需要干解析的活,而这时,正则表达式就派上用场了。一段时间没写正则后,写起来就没有办法那么畅快,例如这次就是提取不到结果,想了之后,最后锁定在点号不能匹配换行符,试了之后,果然是这样。在Java中,加上Pattern.DOTALL就好了,以下就是用来提取雪球搜索页面里主要内容的函数,这个主要内容提取出来后是一个JSON格式的.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static String getXueQiuContent(String httpBody) {
Pattern pattern = Pattern.compile("SNB.data.search\\s*?=\\s*?(\\{.+?\\});.*?seajs.use", Pattern.DOTALL);
Matcher m = pattern.matcher(httpBody);
if (m.find()) {
httpBody = m.group(1);
JSONObject obj;
try {
obj = new JSONObject(httpBody);
JSONArray jsonArr = (JSONArray) obj.get("list");
httpBody = jsonArr.toString();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
return httpBody;
}

如果不知道这个Pattern.DOTALL,其实用[\s\S]也是可以得,因为\s匹配空白字符,\S匹配非空白字符,两者合在一起就可以匹配任何字符了。
对于爬虫组来说,要发现新的站点,都雪球这些网站去搜索一番还是可以尝试的。

文章目錄