我有这段代码:
int pageNum = 1;
List<String> urlLink = new ArrayList<String>();
Document doc = Jsoup.connect("http://secret-site?pagenum=" + pageNum).followRedirects(true).userAgent("Chrome/51.0.2704.103").timeout(0)
.get();
Elements links = doc.select("td[align] .midtext > a");
for(Element e : links) {
if (e.attr("href").contains("title_about")) {
urlLink.add(e.attr("href"));
}
if(urlLink.size()%100==0) {
pageNum++;
// how to redirect doc?
}
if (pageNum==3) {
break;
}
}
如何使这种状态处于pagenum递增页面更新的状态?
抱歉我的英语。答案 0 :(得分:0)
更改网址中的pagenum值时,您正在更改请求的GET参数,因此您必须再次调用Jsoup.connect(...).get()
来请求新请求的结果页面。
您可以更改url-string(“http://secret-site?pagenum=2”),但我发现使用.data("key","value")
方法更具可读性。
使用循环来环绕代码以增加pagenum值,然后就完成了。
示例代码
String userAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36";
int numberOfResultpages = 3;
String url = "http://secret-site";
List<String> urlLink = new ArrayList<String>();
Document doc;
for (int i = 1; i < numberOfResultpages; i++) {
try {
doc = Jsoup.connect(url).userAgent(userAgent)
.data("pagenum", "" + i)
.method(Method.GET).get();
for (Element e : doc.select("td[align] .midtext > a")) {
if (!e.attr("href").contains("title_about"))
continue;
urlLink.add(e.attr("href"));
if(urlLink.size()%100==0) {
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}
}