@[TOC](java使用 jsoup抓取中国知网数据(简化后))
java使用jsoup抓取中国知网数据2 (完善下)
之前写的抓取,只做到半自动,还需要自己填入cookies,这次完善下:
- 详细信息的获取 ,跳入详情页,获取更多详细信息;
- 去掉手动输入cookie,只需要输入药品名,然后自动获取文献;
// 1.首先是跳入详情页,不需要新建链接,而是直接重定向跳转.
String link = doc.getElementsByClass("title_c").get(j).getElementsByTag("a").attr("href");
Document detailDoc = pageConn.url("https://kns.cnki.net" + link)
.method(Connection.Method.GET).referrer("https://kns.cnki.net" + link).get();
String abstract_c = detailDoc.getElementById("ChDivSummary").text();
// 2.访问知网获取cookies
//模拟访问主页,目的获取cooikes
Connection pageConn = Jsoup.connect("https://kns.cnki.net");
pageConn.get();
//原链接重定向拼接参数,执行检索,返回结果页( •̀ ω •́ )y.
//reqStr = 拼接检索时的请求参数
pageConn.url("https://kns.cnki.net/kns/request/SearchHandler.ashx?" + reqStr)
.method(Connection.Method.POST)
.referrer("https://kns.cnki.net/kns/brief/result.aspx?dbprefix=CFLS&crossDbcodes=CJFQ,CDFD,CMFD,CPFD,IPFD,CCND,CCJD").post().text();
//这里直接单起新链接就可以了,直接设置原cookies
//获取请求cookies
Map<String, String> cookies = pageConn.response().cookies();
String url = "http://kns.cnki.net/kns/brief/brief.aspx?pagename=ASP.brief_result_aspx&dbPrefix=CFLS&DisplayMode=custommode";
//新建连接添加cookies
Connection con = Jsoup.connect(url);
con.cookies(cookies);
//DOCUMENT 列表页
Document doc = con.get();
//.....之后获取页数,跳转页数,然后挨个进去获取详情就OK了.