java使用webmagic实现网络爬虫功能(二)
2017-02-08 23:43
639 查看
这里需要爬的是上图的分页数据, 不同于之前的网页,这部分是通过ajax请求加载数据的,可以从浏览器内置的http抓包信息中找到符合要求的post请求,如下
点击进去查看头文件信息,可以看到具体请求的地址与参数,
参数的意义可以通过不停发起请求来推测出来,尝试发起请求返回数据为xml格式的数据,如下
那么我们只需要解析xml来获得自己需要的数据即可,xml的解析不作详细解释,具体见java代码:
//获取列表页新闻 分页
/*
* page 第几页新闻列表
* perpage 分页系数
* startrecord 第几条开始
* columnid 栏目id 56 政务信息 57 今日南浔 59 视频南浔 。。。
*/
public void getListNews(){
long pageNum = getParaToLong("page",1L);
List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
long perpage = 3 ; //perpage 每页多少数据*3系数 为1是 每页3条 2时 每页6条 。。。
long startrecord = (pageNum-1)*perpage*3+1; //哪条数据开始
int columnid = 56;
String url = "http://www.nanxun.gov.cn/module/jslib/jquery/jpage/dataproxy.jsp?";
url +="startrecord="+startrecord;
//url +="&endrecord=6";
url +="&perpage="+perpage;
url +="&col=1&appid=1&webid=1&unitid=2024&webname=%E5%8D%97%E6%B5%94%E5%8C%BA%E6%94%BF%E5%BA%9C";
url +="&columnid="+columnid;
String content = HttpKit.get(url);
JSON json = JsonKit.convertXmlToJson(content, null);
JSONObject jsonObject = JSONObject.fromObject(json);
if (jsonObject.has("recordset")) {
JSONArray transitListArray = jsonObject.getJSONArray("recordset");
for (int i = 0; i < transitListArray.size(); i++) {
Map<String,Object> innerMap = new HashMap<String,Object>();
String obj = transitListArray.get(i)+"";
//System.out.println(obj);
Html html = new Html(obj);
List<String> urlList = html.$("table a", "href").all();
if(urlList.size()>0){
innerMap.put("url", urlList.get(0));
}
String title = html.regex("<a style=.font-size:10.5pt;.*>(.*?)</a>", 1).get();
innerMap.put("title", title);
String publishDate = html.regex("<td width=.102. al
4000
ign=.center.*>(.*?)</td>", 1).get();
innerMap.put("publishDate", publishDate);
data.add(innerMap);
}
}
renderJson(data);
}
可以看出可以根据page与startrecord 来自由控制爬第几页的数据,看看上面代码抓取来的数据
over,mark 一下给自己备忘。
相关文章推荐
- 关于使用Java实现的简单网络爬虫Demo
- [置顶] 使用java 实现网络爬虫 demo
- 使用requests+beautifulsoup模块实现python网络爬虫功能
- 关于使用Java实现的简单网络爬虫Demo
- 使用Java实现网络爬虫
- 关于使用Java实现的简单网络爬虫Demo
- 关于使用Java实现的简单网络爬虫Demo
- 使用Java实现B/S系统常见的获取客户端信息功能!
- 字符串处理是许多程序中非常重要的一部分,它们可以用于文本显示,数据表示,查找键和很多目的.在Unix下,用户可以使用正则表达式的强健功能实现这些 目的,从Java1.4起,Java核心API就引入了java.util.regex程序包,它是一种有价值的基础
- java访问站点 并实现简易网络爬虫
- 网络爬虫讲解(附java实现的实例)
- java 使用正则Pattern等实现【搜索 -> 提取 -> 分割 -> 替换】功能
- java实现网络爬虫程序
- dySE:一个 Java 搜索引擎的实现,第 1 部分: 网络爬虫
- 使用Java实现网络传输数据的压缩
- java网络编程一:模拟qq聊天功能,实现一对一聊天
- 使用java.util.concurrent实现的线程池、消息队列功能
- 使用Java实现网络传输数据的压缩.
- Linux平台,使用JavaComm3 API及SMSLib项目实现在Web Application中发送手机短信的功能
- java中实现退出按钮功能的实现已经布局管理器的使用