进入软件后点击最下面的行情,在新的页面中点击中间精选版块最右边的更多,要求提供新页面 精选,行业,概念,地区的数据请求(http://)及返回的数据格式,谢谢。
软件下载地址:https://www.kaipanla.com
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方法**/
}
可以参考以上代码
有用上么,楼主。现在kaipanla的url好像不好使了。现在该怎么获取数据呢。