`
Tristan_S
  • 浏览: 383263 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Stock2

 
阅读更多
如果页面的编码是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("&nbsp;", "");
					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

    【iOS股票软件ChinaStock2】是一款使用Objective-C编程语言,并基于Storyboard进行界面设计的iOS应用。该应用的主要功能是展示股票市场数据,尤其注重通过TableView这一常见UI组件以清晰、直观的方式呈现股票信息。...

    stock-class.rar_ htmltool ja

    "stock2"这个名字可能是另一个Java类或数据文件,它可能与股票数据处理有关,比如可能是第二个版本的股票类,或者是一个存储了股票数据的文件。 综合以上信息,我们可以推测这个项目涉及以下几个关键知识点: 1. *...

    goog.rar_google_stock_stock price

    google stock price pridiction

    Stock查看股市行

    2. **XML在Stock中的作用** XML(Extensible Markup Language)是一种用于标记数据的语言,它在Stock中主要用来存储和交换股票信息。XML文件结构清晰,易于解析,使得Stock能高效地处理大量股票数据,同时保持良好...

    stock工具

    2. 实时行情:"stock工具"很可能提供实时股票报价,让投资者能够迅速了解所关注股票的价格变动,这对于短期交易者尤其重要,因为他们需要快速做出买卖决策。 3. 技术分析:该工具可能包含图表和各种技术指标,如...

    M2 Money Stock M2 货币库存-数据集

    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/...

    stock_stock-DJI.json_stock_QT_QTstock_QT界面_源码.rar.rar

    2. 数据模型:定义一个数据结构来存储股票信息,可能是继承自QT的QAbstractListModel或QStandardItemModel。 3. GUI设计:使用QT Designer创建UI布局,然后通过.ui文件生成对应的.CPP和.H头文件。 4. 数据绑定:将...

    stock_stock-DJI.json_stock_QT_QTstock_QT界面.zip

    2. 道琼斯工业平均指数(DJI):这是世界上最古老、最有影响力的股票指数之一,由30家大型上市公司的股票组成,反映美国股市的整体表现。 3. Qt库:Qt是跨平台的C++图形用户界面工具包,支持Windows、Linux、macOS...

    stock_stock-DJI.json_stock_QT_QTstock_QT界面

    2. **实时数据获取**:应用能够连接到数据源,如财经APIs,以获取最新的DJI股票指数和其他相关市场数据。这可能涉及到网络编程和数据解析技术,如JSON,因为"stock-DJI.json"可能表示数据是以JSON格式存储或传输的。...

    stock.csv

    stock.csv

    Technical Analysis of Stock Trends

    首先,我们从标题“Technical Analysis of Stock Trends”和描述中得知,本文是关于股票趋势的技术分析的。技术分析是一种金融分析的方法论,主要用于分析证券市场中的历史价格和成交量数据,以预测未来市场行为。...

    C++ Primer PLUS第10章 stock实例_stock_plus_

    2. 构造函数(Constructor):构造函数是类的一个特殊成员函数,用于初始化新创建的对象。在Stock类中,构造函数可能接受股票代码和购买价格作为参数,用于设置初始值。 3. 成员函数(Member Function):如`buy`和...

    stock_no_negative_odoo禁用负库存_publicp2s_stock_no_negative_

    "stock_no_negative_odoo禁用负库存_publicp2s_stock_no_negative_"这个标题和描述涉及的是Odoo 12版本中关于库存管理的一个特定模块——防止库存数量变为负值的设置。这个功能对于确保库存的准确性和防止因负库存...

    Weisoft Stock

    Weisoft Stock是一款基于OFFICE架构设计开发出来的功能强大的证券综合软件,他不仅延续了传统分析软件使用“公式”系统的优势,并且引入了功能更加强大的“宏”功能来满足用户在更高层次的定制需要。独创的分离架构...

    Stock-Market-Prediction-master_stock_

    2. **特征工程**:根据领域知识,可能需要创建一些新特征,如移动平均线、相对强弱指数(RSI)、成交量变化率等,这些可以帮助模型捕捉市场趋势。 3. **构建RNN模型**:使用Python的深度学习库,如TensorFlow或...

    2008-2020年 地级市-机器人安装密度、存量密度数据.rar

    id 年度 city 农林牧渔业 sd1 md1 stock1 采矿业 sd2 md2 stock2 制造业 sd3 md3 stock3 电力燃气及水的生产和供应业 sd4 md4 stock4 建筑业 sd5 md5 stock5 教育 sd6 md6 stock6 六大行业人数 根据六大行业计算出来...

    1_构建一个类Stock_

    构建一个类 Stock,含字符数组 stockcode[]及整型数据成员...当定义 Stock的类对象时,将对象的第1个字符串参数赋给数据成员 stockcode,第2和第3个参数分别赋给quan、price。未设置第2和第3个参数时,quan的值为1000

    Stock_Market_Wizards

    Stock_Market_Wizards

    Python-stocki是一个用于获取股市数据的CLI界面

    Python-stocki是一个专为开发者和投资者设计的命令行界面(CLI)工具,它允许用户方便地获取实时或历史的股市数据。这个工具基于Python编程语言,利用其强大的库和模块来处理网络请求、数据解析以及数据展示。在...

Global site tag (gtag.js) - Google Analytics