如何获得最新的沪深股票代码表呀?

Description of your first forum.

如何获得最新的沪深股票代码表呀?

帖子tswhq » 星期日, 2010年11月21日 15:37


1、读大智慧的,缺点:需要每天手工登录大智慧,太烦了
2、读取网页的,例如:http://quote.eastmoney.com/stocklist.html
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleCtrls, SHDocVw,WinInet,mshtml;

type
  TForm1 = class(TForm)
    WebBrowser: TWebBrowser;
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure WebBrowserBeforeNavigate2(Sender: TObject;
      const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
      Headers: OleVariant; var Cancel: WordBool);
    procedure WebBrowserDocumentComplete(Sender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  FirstDisp: IDispatch;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  WebBrowser.Navigate('http://quote.eastmoney.com/stocklist.html');

end;

procedure TForm1.WebBrowserBeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);

begin
  FirstDisp:=pDisp;
end;

procedure TForm1.WebBrowserDocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
var
  i   :integer;
  o   :Variant;
begin
  if FirstDisp<> pDisp then exit;
  delphi.com/topic_517272_66fd.htm">Beep ;
  {for   i:=0   to   webbrowser.oleobject.document.links.length-1   do
  begin
    memo1.Lines.Add(webbrowser.oleobject.document.links.item(i).href);
  end;}

  for i :=0 to WebBrowser.OleObject.document.all.tags('li').Length-1 do
  Begin
    if  pos('00',WebBrowser.OleObject.document.all.tags('li').item(i).InnerText)>0 then
    memo1.Lines.Add(WebBrowser.OleObject.document.all.tags('li').item(i).InnerText);//这个方法不保险,万一代码里没有00就惨了
  end;
仔细看了一下网页的源文件,股票的代码表放在这里<div class="quotebody">....</div>
怎么读出来呢???
  //WebBrowser.OleObject.Document.GetElementsByTagName('quotebody').InnerText;

  o:=WebBrowser.OleObject.document.getElementsByTagName('div');

  memo1.Lines.Add(inttostr(o.length));
  for i:=0 to o.length-1 do
  begin
    memo1.Lines.Add(o.item[i].caption)//这句不会,大家指点一下
  end;
end;

end.
 
 
 

如何获得最新的沪深股票代码表呀?

帖子xianjun » 星期一, 2010年11月22日 11:54


只要代码表的话找个网站读网页就行了,这东西也不会经常变的,新股上市或有股退市才会增减而已。
 
 
 

如何获得最新的沪深股票代码表呀?

帖子allenzen » 星期二, 2010年11月23日 00:51


网页转XML,使用XPATH,一抓一个准
 
 
 

如何获得最新的沪深股票代码表呀?

帖子tswhq » 星期三, 2010年11月24日 19:31


网页转XML,使用XPATH,谁给一个例子看看
 
 
 

如何获得最新的沪深股票代码表呀?

帖子3868474 » 星期四, 2010年11月25日 11:21


同花顺里面有个stocknametable.txt,里面有所有股票列表,也很容易读。
 
 
 

如何获得最新的沪深股票代码表呀?

帖子tswhq » 星期日, 2010年11月28日 19:37


你的思路是对的,我之前的代码就是读取大智慧的INIT.dat,问题是每天都要求登陆一次太烦了,同花顺也以一样呀!
除非你能够模拟大智慧、同花顺的登陆,得到代码表,谁会呀?
 
 
 

如何获得最新的沪深股票代码表呀?

帖子zhengct » 星期三, 2010年12月15日 20:50


登陆麻烦吗?自己用钩子模拟下也很容易吧,如果实是懒的话就按键小精灵解决了