在这个网站中:http://wwwapps.ups.com/WebTracking/track?HTMLVersion=5.0&loc=zh_CN&Requester=UPSHome&WBPM_lid=homepage%2Fct1.html_pnl_trk&trackNums=H8947154378&track.x=%E8%BF%BD%E8%B8%AA 需要抓取:页面中的运输进程的部分 该运输进程 查看源码为一个div层 () 点击层厚URL地址改变为:http://wwwapps.ups.com/WebTracking/detail 因为抓取的信息需要 第一个链接中的H8947154378 参数 所以URL改变后就不知道怎么抓取了 通过普通抓取 只能抓取到 层中的第一条数据和最后一条数据 火狐和其他浏览器查看第一个页面的源码也只有div中第一条数据和最后一条 public String getPageContent(String strUrl, String strPostRequest,int maxLength) { // 读取结果网页 StringBuffer buffer = new StringBuffer(); System.setProperty("sun.net.client.defaultConnectTimeout", "5000"); System.setProperty("sun.net.client.defaultReadTimeout", "5000"); try { URL newUrl = new URL(strUrl); HttpURLConnection hConnect = (HttpURLConnection) newUrl.openConnection(); // POST方式的额外数据 if (strPostRequest.length() > 0) { hConnect.setDoOutput(true); OutputStreamWriter out = new OutputStreamWriter(hConnect.getOutputStream()); out.write(strPostRequest); out.flush(); out.close(); } // 读取内容 BufferedReader rd = new BufferedReader(new InputStreamReader(hConnect.getInputStream(),"utf-8")); int ch; for (int length = 0; (ch = rd.read()) > -1 && (maxLength <= 0 || length < maxLength); length++) buffer.append((char) ch); String s = buffer.toString(); s.replaceAll("//&[a-zA-Z]{1,10};", "").replaceAll("<[^>]*>", ""); System.out.println(s); rd.close(); hConnect.disconnect(); return buffer.toString().trim(); } catch (Exception e) { return "错误:读取网页失败!"; // } } public static void main(String[] args) { String url = "http://wwwapps.ups.com/WebTracking/track?HTMLVersion=5.0&loc=zh_CN&Requester=UPSHome&WBPM_lid=homepage%2Fct1.html_pnl_trk&trackNums=H8947154378&track.x=%E8%BF%BD%E8%B8%AA"; String url2 = "http://wwwapps.ups.com/WebTracking/detail"; Test p = new Test(); p.getPageContent(url, "post", 100500); Test3 p3 = new Test3(); p3.getPageContent(url2, "post", 100500); System.out.print("已经执行!"); } 上面是我写的普通抓取办法 想请教大家 是否有其他解决办法 没有公开的API接口
添加回答
举报
0/150
提交
取消