我正在使用URL's
,更准确地说是使用Stack Overflow。
网站questions
的{{1}}部分的结构是:
URLs
尝试使用/questions/tagged/tag+anotherTag+lastTag
时,我只会收到第一个标记的问题。
URL
URL url = null;
InputStream is = null;
BufferedReader br;
String line;
try{
url = new URL("https://stackoverflow.com/questions/tagged/cobol+hibernate");
br = new BufferedReader(new InputStreamReader(url.openStream()));
while ((line = br.readLine()) != null) {
if (line.contains("<div class=\"tags")){
System.out.println(line);
}
}
} catch (Exception e){
e.printStackTrace();
}
System.out.println(url);
<div class="tags t-cobol">
<div class="tags t-batch-file t-cobol t-mainframe t-vsam">
<div class="tags t-cobol t-mainframe">
<div class="tags t-cobol t-opencobol t-microfocus">
<div class="tags t-cobol">
https://stackoverflow.com/questions/tagged/cobol+hibernate
实际链接是empty page(从来没有任何问题与两个标签一起发布),正如您所看到的,代码只是查找第一个标记标识的问题。
// Nothing because there is no question under both tags
https://stackoverflow.com/questions/tagged/cobol+hibernate
只是一个很好地解释问题的例子,我知道将这两个标签放在一起没有逻辑。
答案 0 :(得分:2)
这个curl
命令和输出有所启发:
$ curl 'http://stackoverflow.com/questions/tagged/cobol+hibernate'
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="/questions/tagged/cobol">here</a>.</h2>
</body></html>
即,重定向请求,删除第二个标记。
也是curl -v ...
< HTTP/1.1 302 Found
< Cache-Control: private
< Content-Type: text/html; charset=utf-8
< Location: /questions/tagged/cobol
您似乎需要一些代表才能同时搜索多个代码。如果我在隐身窗口(我未登录)中打开http://stackoverflow.com/questions/tagged/cobol+hibernate
,则会删除第二个和更多标记。
所以如果你想用Java做这个查询, 您似乎需要以编程方式登录。
我想这是因为搜索多个标签可能会对数据库造成负担,因此其使用仅限于有经验的用户。 您可以在MSE上获得明确的答案。