如果页面的编码是gbk的话, 需要在输入流中做转换
new InputStreamReader(conn.getInputStream(),"gbk")
下载天风证券的信息
public class News {
private String name;
private String url;
private String date;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
@Override
public String toString() {
return "News [name=" + name + ", url=" + url + ", date=" + date + "]";
}
}
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.cup.cupsecure.util.lang.StringUtils;
public class Stock2 {
public static int startPage = 1;
public static int endPage = 3;
public static void main(String[] args) throws Exception {
m5();
}
public static void m5() throws Exception {
for(int i=startPage; i<=endPage; i++){
System.out.println(i+"----------------------");
m4(i);
}
}
public static void m4(int page) throws Exception {
String temp = "";
List<News> list = new ArrayList<News>();
HttpURLConnection conn = (HttpURLConnection) new URL(v1+page).openConnection();
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
while ((temp = br.readLine()) != null) {
if (temp.contains("<li><a href=\"/detail.aspx")) {
News news = new News();
String t1 = temp.trim();
String date = "";
String name = "";
String url = "";
// <li><a href="/detail.aspx?cid=24435">城农商行扎堆冲锋上市 贷款成本风险较高成障碍
// </a><span>2012-01-06</span></li>
for (int i = 0; i < t1.length() - 5; i++) {
if ((t1.charAt(i) == '<' && t1.charAt(i + 1) == '/')
&& (t1.charAt(i + 2) == 's' && t1.charAt(i + 3) == 'p'
&& t1.charAt(i + 4) == 'a' && t1.charAt(i + 5) == 'n')) {
date = t1.substring(i - 10, i);
news.setDate(date);
}
// </a>
if ((t1.charAt(i) == '<' && t1.charAt(i + 1) == '/')
&& (t1.charAt(i + 2) == 'a' && t1.charAt(i + 3) == '>')) {
name = t1.substring(37, i);
name = name.replace("\"", "");
name = name.replace(":", " ");
name = name.replace(":", " ");
name = name.replace("“", " ");
name = name.replace("”", " ");
name = name.replace("?", " ");
name = name.replace("<", " ");
name = name.replace(">", " ");
name = name.replace("*", " ");
name = name.replaceAll("","");
news.setName(name);
}
// ">
if ((t1.charAt(i) == '"' && t1.charAt(i + 1) == '>')) {
url = t1.substring(14, i);
news.setUrl(url);
}
}
list.add(news);
// if (list.size() > 0) {
// break;
// }
}
}
for (News news : list) {
String dateFolder = news.getDate().substring(0,7);
File existFolder = new File("D:/stock/stockNews/"+dateFolder);
if(!existFolder.isDirectory()){
existFolder.mkdirs();
}
File fs2 = new File("D:/stock/stockNews/"+dateFolder+"/"+news.getDate()+" "+news.getName()+".txt");
BufferedWriter bw = null;
try{
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fs2),
"UTF-8"));
}catch(FileNotFoundException e){
File fs3 = new File("D:/stock/stockNews/"+news.getDate()+" XXX.txt");
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fs3),
"UTF-8"));
e.printStackTrace();
}
HttpURLConnection conn2 = (HttpURLConnection) new URL(v2 + news.getUrl())
.openConnection();
BufferedReader br2 = new BufferedReader(new InputStreamReader(conn2.getInputStream()));
String temp2 = "";
boolean b = false;
String content = "";
while ((temp2 = br2.readLine()) != null) {
if (temp2.contains("<div class=\"footer\">")) {
break;
}
if (temp2.contains("<!--<p></p>")) {
break;
}
if (b) {
content = temp2;
Pattern p = Pattern.compile("<[^>]+>", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(content);
content = m.replaceAll("");
content = content.replace(" ", "");
content = content.replace(" ", "");
content = content.replace(" ", "");
if(!StringUtils.isEmpty(content)){
bw.write(content);
bw.write("\r\n");
}
}
if (temp2.contains("<div class=\"m_right_content\">")) {
b = true;
}
}
bw.close();
}
}
public static String v1 = "http://www.tfzq.com/ContentList.aspx?nodeid=43&page=";
public static String v2 = "http://www.tfzq.com/";
public static Pattern p = Pattern.compile("<[^>]+>([^<]*)</[^>]+>");
}
分享到:
相关推荐
【iOS股票软件ChinaStock2】是一款使用Objective-C编程语言,并基于Storyboard进行界面设计的iOS应用。该应用的主要功能是展示股票市场数据,尤其注重通过TableView这一常见UI组件以清晰、直观的方式呈现股票信息。...
"stock2"这个名字可能是另一个Java类或数据文件,它可能与股票数据处理有关,比如可能是第二个版本的股票类,或者是一个存储了股票数据的文件。 综合以上信息,我们可以推测这个项目涉及以下几个关键知识点: 1. *...
google stock price pridiction
2. **XML在Stock中的作用** XML(Extensible Markup Language)是一种用于标记数据的语言,它在Stock中主要用来存储和交换股票信息。XML文件结构清晰,易于解析,使得Stock能高效地处理大量股票数据,同时保持良好...
2. 实时行情:"stock工具"很可能提供实时股票报价,让投资者能够迅速了解所关注股票的价格变动,这对于短期交易者尤其重要,因为他们需要快速做出买卖决策。 3. 技术分析:该工具可能包含图表和各种技术指标,如...
file/opensearch/documents/93107/m2-money-stock_metadata_2.json file/opensearch/documents/93107/m2-money-stock_metadata_3.json file/opensearch/documents/93107/M2NS.csv file/opensearch/documents/...
2. 数据模型:定义一个数据结构来存储股票信息,可能是继承自QT的QAbstractListModel或QStandardItemModel。 3. GUI设计:使用QT Designer创建UI布局,然后通过.ui文件生成对应的.CPP和.H头文件。 4. 数据绑定:将...
2. 道琼斯工业平均指数(DJI):这是世界上最古老、最有影响力的股票指数之一,由30家大型上市公司的股票组成,反映美国股市的整体表现。 3. Qt库:Qt是跨平台的C++图形用户界面工具包,支持Windows、Linux、macOS...
2. **实时数据获取**:应用能够连接到数据源,如财经APIs,以获取最新的DJI股票指数和其他相关市场数据。这可能涉及到网络编程和数据解析技术,如JSON,因为"stock-DJI.json"可能表示数据是以JSON格式存储或传输的。...
stock.csv
首先,我们从标题“Technical Analysis of Stock Trends”和描述中得知,本文是关于股票趋势的技术分析的。技术分析是一种金融分析的方法论,主要用于分析证券市场中的历史价格和成交量数据,以预测未来市场行为。...
2. 构造函数(Constructor):构造函数是类的一个特殊成员函数,用于初始化新创建的对象。在Stock类中,构造函数可能接受股票代码和购买价格作为参数,用于设置初始值。 3. 成员函数(Member Function):如`buy`和...
"stock_no_negative_odoo禁用负库存_publicp2s_stock_no_negative_"这个标题和描述涉及的是Odoo 12版本中关于库存管理的一个特定模块——防止库存数量变为负值的设置。这个功能对于确保库存的准确性和防止因负库存...
Weisoft Stock是一款基于OFFICE架构设计开发出来的功能强大的证券综合软件,他不仅延续了传统分析软件使用“公式”系统的优势,并且引入了功能更加强大的“宏”功能来满足用户在更高层次的定制需要。独创的分离架构...
2. **特征工程**:根据领域知识,可能需要创建一些新特征,如移动平均线、相对强弱指数(RSI)、成交量变化率等,这些可以帮助模型捕捉市场趋势。 3. **构建RNN模型**:使用Python的深度学习库,如TensorFlow或...
id 年度 city 农林牧渔业 sd1 md1 stock1 采矿业 sd2 md2 stock2 制造业 sd3 md3 stock3 电力燃气及水的生产和供应业 sd4 md4 stock4 建筑业 sd5 md5 stock5 教育 sd6 md6 stock6 六大行业人数 根据六大行业计算出来...
构建一个类 Stock,含字符数组 stockcode[]及整型数据成员...当定义 Stock的类对象时,将对象的第1个字符串参数赋给数据成员 stockcode,第2和第3个参数分别赋给quan、price。未设置第2和第3个参数时,quan的值为1000
Stock_Market_Wizards
Python-stocki是一个专为开发者和投资者设计的命令行界面(CLI)工具,它允许用户方便地获取实时或历史的股市数据。这个工具基于Python编程语言,利用其强大的库和模块来处理网络请求、数据解析以及数据展示。在...