請教以vba或python下載網頁的問題
大家好,我想下載期交所的每日交易行情下載
http://www.taifex.com.tw/chinese/3/3_1_2.asp
但不太瞭解asp網頁的寫法,請問我如果要直接到指定的某日到某日的某合約要怎寫這網頁?
例如說從2011/01/04~2011/01/07全部的契約,我該怎指定這個網頁的參數?
感謝 3_1_2dl.asp
DATA_DATE=2011/1/4
DATA_DATE1=2011/1/7
COMMODITY_ID=all 回復 2# hhy
不好意思,請問如果以python的urlretrive要怎寫這個網址?
urlretrieve('http://www.taifex.com.tw/chinese/3/3_1_2.asp?DATA_DATE="2011/1/4"&
DATA_DATE1="2011/1/7"&COMMODITY_ID="all",... )
可以自動存成指定的檔案csv檔
感恩 python我不懂也
你要不要解釋一下urlretrieve的用法 回復 4# hhy
我是想直接改之前綠茶妹的程式,但我不確定asp的網頁是否指定參數,
就可直接到指定參數的網頁。
http://coco-in.net/viewthread.php?tid=4082&extra=page%3D1%26amp%3Bfilter%3Dtype%26amp%3Btypeid%3D21
[*]from urllib import urlretrieve[*]from datetime import date[*]from datetime import datetime, timedelta[*]#today = date.today().strftime('%Y_%m_%d')[*]today = datetime.today()[*]yesterday=today[*]for daynum in range(1, 61):[*]path = yesterday.strftime('%Y_%m_%d')[*]name = 'Daily_'+path+'.zip'[*]print name[*]try:[*] urlretrieve('http://www.taifex.com.tw/DailyDownload/'+name, 'C:\\test\\'+name)[*]except IOError as IOE :[*] print 'fault'[*]except ContentTooShortError('!!',50) as CE:[*] print 'too short'[*]yesterday = yesterday - timedelta(1) 注意在ptyhon 2.6 與 python 3.1用urlretrieve
結果會不同
http://bugs.python.org/issue8035有說明
我用python 3.1直接去抓資料,會hang
不過用網頁提供的方法就不會了
你可以參考一下 回復 5# rjwang
我裝了2.71版試過了
可是不會寫python
一直抓到page not found
可能urlretrieve不能用在asp上吧? 回復 6# MorganLiu
謝謝回覆,剛開始看您提供的網頁,再跟您請教。 回復 7# hhy
謝謝您的幫忙,我還在看Morgan提供的網頁,還沒試作,不知道會不會有問題,
有結果再跟您回覆,如果我要在IE直接到指定的網頁的話,
http://www.taifex.com.tw/chinese/3/3_1_2.asp?
這後面參數要怎寫呢 回復 9# rjwang
用我上面po的參數就可以下載csv檔 python 3.1 的code
######################
#!C:\Python31\python
#coding=utf-8
import string
import codecs
import urllib.request
import configparser
import os
import datetime
url_path1="http://www.taifex.com.tw/chinese/3/3_1_2dl.asp?DATA_DATE="
start_date="2011/01/04"
url_path2="&DATA_DATE1="
end_date="2011/01/07"
url_path3="&COMMODITY_ID=all"
##合併字串
url=url_path1+start_date+url_path2+end_date+url_path3
urllib.request.urlretrieve(url,'C:\\tw_se.csv')
print("done") 回復 11# MorganLiu
真是太感謝您了....馬上來試 用python會抓到 Page Not Found 的原因是 cookie
因為他有302轉址,所以urlretrieve有時成功有時會失敗
要用opener加上urllib2去做
但urllib2沒有urlretrieve,所以改用寫入檔案
source code如下
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())
urllib2.install_opener(opener)
cvs_content = urllib2.urlopen(url, data).read()
f = open(filename, 'w')
f.write(cvs_content)
f.close() 回復 11# MorganLiu
不好意思,想再請問您一下:
我參考您的例子,想以此類推自己試著練習試著下載其他資料,但是有些下載,參數好像不是相同的規則?
例如:
http://www.taifex.com.tw/chinese/3/7_9_1.asp
下載網址:
http://www.taifex.com.tw/chinese/3/7_9_1dl.asp?DATA_DATE=2011/5/3&DATA_DATE1=2011/5/4
(這個例子沒有商品類別)
我還猜了好幾種參數組合,可是都沒有成功 ~>_<~
請問您當初是怎麼知道正確的參數呢?我也試著理解網頁的原始程式碼,但是無法全部理解。。。
像是您原本的例子,我可能會不會馬上猜到商品種類是 COMMODITY_ID?
document.myform.submit()
下載的按鈕應該是執行這個 locally 執行這個 document.myform.submit() ,送出正確的鏈結,可是我怎麼也找不到對應的程式碼看他到底送了甚麼出去。。。我是不是漏了甚麼?理論上應該在哪裡會有產生鏈結的程式碼。。?
不好意思,可以請您稍微指點一下嗎,在下感激不盡! <(_ _)>
我會的語言是 VBA, C#, C++ 本帖最後由 MorganLiu 於 11-5-4 09:56 PM 編輯
回復MorganLiu
不好意思,想再請問您一下:
我參考您的例子,想以此類推自己試著練習試著下載其他資料, ...
Branson 發表於 11-5-4 05:53 PM http://coco-in.net/images/common/back.gif
參數要問2樓,如何去找我也不知道
我只是將它翻譯成python而已