赞
踩
进入携程官网查询杭州有哪些景点
f12 debug可以看到请求了某个接口 得到的数据 我们需要自己分析一下这个接口 需要的参数 请求头等。
我们在爬取的时候可以根据这个接口直接post请求json数据格式的景点信息
简单写一下 需要更详细的可以自己研究一下。
- public class test {
- public static void main(String[] args) throws IOException {
- //请求参数 json格式的
- //keyword 请求的地方是哪里
- //pidx 指的是当前要请求的页数
- //psize 每一页的大小
- String ss="{\"pageid\":103061,\n" +
- "\"searchtype\":2,\n" +
- "\"keyword\":\"杭州\",\n" +
- "\"needfact\":false,\n" +
- "\"sort\":1,\n" +
- "\"pidx\":1,\n" +
- "\"psize\":20,\n" +
- "\"reltype\":1,\n" +
- "\"excepts\":[],\n" +
- "\"filters\":[],\n" +
- "\"isneedf\":true,\n" +
- "\"isintion\":true,\n" +
- "\"imagesize\":\"C_200_130\",\n" +
- "\"assistfilter\":{\"userChooseSite\":\"100065\"},\n" +
- "\"contentType\":\"json\",\n" +
- "\"head\":{\"appid\":\"100013776\",\"cid\":\"09031037411652485539\",\"ctok\":\"\",\"cver\":\"1.0\",\"lang\":\"01\",\"sid\":\"8888\",\"syscode\":\"09\",\"auth\":\"\",\"extension\":[]},\n" +
- "\"ver\":\"7.10.3.0319180000\"}";
- Map headers=new HashMap();//请求头
- headers.put("Content-Type","application/json");
- headers.put("user-agent","Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36");//模拟浏览器请求
- HttpClient h=new JavaHttpClient();//自己写一个httpclient的请求
- String s = h.dopost("http://sec-m.ctrip.com/restapi/soa2/12530/json/ticketSpotSearch?_fxpcqlniredt=09031037411652485539",headers,new ByteArrayInputStream(ss.toString().getBytes()),null).getResponseString();
- JSONObject j= JSON.parseObject(s);
- JSONObject da=j.getJSONObject("data");
- }
-
- }
请求后得到的json数据
想要得到所有的景点信息 那就循环请求组装请求参数中的页数 注意循环请求需要一定的休息时间 否则会ip限制。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。