进入软件后点击最下面的行情,在新的页面中点击中间精选版块最右边的更多,要求提供新页面 精选,行业,概念,地区的数据请求(http://)及返回的数据格式,谢谢。
软件下载地址:https://www.kaipanla.com
抓取某软件数据请求及返回的数据格式
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- dabocaiqq 2020-02-02 19:31关注
public class GetStockList { // 起始页码 private static final int page = 166; private static final String USER_AGENT = "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) " + "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Mobile Safari/537.36"; private static final String COOKIE = "_gat=1; nsfw-click-load=off; gif-click-load=on;" + " _ga=GA1.2.1861846600.1423061484"; public static void main(String[] args) { // HttpClient 超时配置 RequestConfig globalConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARD) .setConnectionRequestTimeout(6000).setConnectTimeout(6000).build(); CloseableHttpClient httpClient = HttpClients.custom().setDefaultRequestConfig(globalConfig).build(); String url = "http://www.yz21.org/stock/info/"; String urlToReq = ""; StockProxy dao = StockProxy.getInstance(); try { for (int i = 1; i <= page; i++) { // 创建一个GET请求 String strParams = "/stocklist_" + i + ".html"; if (i == 1) { strParams = ""; } urlToReq = url + strParams; // 停留一秒后开始任务 Thread.sleep(1000); // 发送请求,并执行 String htmlForStock = HttpHelper.getHtmlStrByUrl(urlToReq, httpClient, COOKIE, USER_AGENT); if (!htmlForStock.contains("找不到文件或目录")) { // 网页内容解析 System.out.println("该网页存在,正在解析:" + urlToReq); Document doc = Jsoup.parse(htmlForStock); // 获取table表的行集合元素 Elements trs = doc.getElementById("All_stocks1_DataGrid1").select("tr"); SharePo sharePo = new SharePo(); for (int j = 1; j < trs.size(); j++) { Elements tds = trs.get(j).select("td"); sharePo = new SharePo(); Element link = tds.get(1).select("a").first(); String relHref = link.attr("href"); String strtype = ""; if (relHref.contains("sh")) { strtype = "sh"; } else if (relHref.contains("sz")) { strtype = "sz"; } // 股票代码 sharePo.setSharecode(strtype + tds.get(1).text()); // 股票简称 sharePo.setSharename(tds.get(2).text()); // 公司名称 sharePo.setCompanyname(tds.get(3).text()); // 股票简称拼音 sharePo.setCompanyshort(tds.get(4).text()); dao.addShare(sharePo); } } else { System.out.println("该网页不存在:" + urlToReq); break; } } } catch (Exception e) { e.printStackTrace(); } } } public class HttpHelper { public static String getHtmlStrByUrl(String url, CloseableHttpClient httpClient, String COOKIE, String USER_AGENT) { HttpGet httpGetForFName = new HttpGet(url); httpGetForFName.addHeader("User-Agent", USER_AGENT); httpGetForFName.addHeader("Cookie", COOKIE); httpGetForFName.addHeader("Content-Type", "text/html;charset=UTF-8"); // 发送请求,并执行 CloseableHttpResponse response; String html = ""; try { response = httpClient.execute(httpGetForFName); InputStream in = response.getEntity().getContent(); html = Utils.convertStreamToString(in); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return html; } } public class StreamUtils { public static String convertStreamToString(InputStream in) { StringBuilder sb = new StringBuilder(); try { InputStreamReader isr = new InputStreamReader(in, "UTF-8"); BufferedReader reader = new BufferedReader(isr); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "/n"); } } catch (Exception e) { e.printStackTrace(); } finally { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } return sb.toString(); } } public class SharePo { private Long shareid; private String companyname; private String companyshort; private String sharecode; private String sharename; private Double todaybeginprice; private Double yesterdaycloseprice; private Double nowprice; private Double highprice; private Double lowprice; /**在此省略get/set方法**/ }
可以参考以上代码
采纳后可以按照你的要求写一个
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决评论 打赏 举报无用 1
悬赏问题
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 ubuntu子系统密码忘记
- ¥15 保护模式-系统加载-段寄存器
- ¥15 电脑桌面设定一个区域禁止鼠标操作
- ¥15 求NPF226060磁芯的详细资料