一个简单的网页数据获取程序。
本帖最后由 bhwhui 于 2014-4-4 17:52 编辑想从网页获取数据,形成TXT文件,供以后分析,是否有价值。
网址:1:http://www.shfe.com.cn/statements/dataview.html?paramid=kx
2:http://www.czce.com.cn/portal/exchange/2014/datatradeholding/20140404.htm
3:
输出的文本文件格式如下:交易所名称,日期,品种,期货公司名称,成交量,持买量,持卖量。
这个问题,本人不熟悉,高手估计1个晚上搞定了,呵呵。
第一次发帖购买,不知道怎么个流程,费用大家商量,行么?手机:13807798089 本帖最后由 bhwhui 于 2014-4-4 18:03 编辑
有些网页需点击按钮提交,需要的是“日交易排名”,“仓单日报”,“持仓排名”数据。 没人啊?看来要自己硬着头皮了... 回复 1# bhwhui
网站不是有‘导出EXCEL、导出TXT‘选项直接下载到本地不行? 导出Excel数据表自己处理下就行了. 搞定没有?我也想找人编写啊 本帖最后由 tubaba 于 2014-6-16 15:12 编辑
不难的,曾写过一个定期从服务器下载文件,并做数据比较的程序,写成计划任务的形式执行就可以了 文本好获取
$a = StringReplace(BinaryToString(InetRead("http://www.czce.com.cn/portal/exchange/2014/datatradeholding/"&@YEAR&@MON&@MDAY&".txt")),@LF,@crlf)
$b = StringReplace(BinaryToString(InetRead("http://www.shfe.com.cn/data/dailydata/kx/kx"&@YEAR&@MON&@MDAY&".dat"),4),@LF,@crlf)
剩下的自己处理一下格式就行,一个是纯文本,另一个是json 下载文件Func _GetFile()
TrayTip("准备工作", "下载所需文件~", 30, 1)
_GUICtrlTab_ClickTab($Tab, 0)
Local $sUser = GUICtrlRead($Tab1_Input1)
Local $sPassword = GUICtrlRead($Tab1_Input2)
If DirGetSize(GUICtrlRead($Tab1_Input3)) = -1 Then DirCreate(GUICtrlRead($Tab1_Input3))
Local $sFile = GUICtrlRead($Tab1_Input3) & '\全部应用系统的报表' & @YEAR & @MON & @MDAY & '.xls'
_GUICtrlEdit_InsertText($iexport, '======================' & @LF)
_GUICtrlEdit_InsertText($iexport, '正在登录站点.' & _Gettime() & @LF)
_IENavigate($oIE, 'http://10.238.1.29:7001/TMS/')
Local $oForm = _IEFormGetObjByName($oIE, "loginForm")
Local $oPrNo = _IEFormElementGetObjByName($oForm, "oprNo")
Local $oPassWord = _IEFormElementGetObjByName($oForm, "passWord")
_IEFormElementSetValue($oPrNo, $sUser)
_IEFormElementSetValue($oPassWord, $sPassword)
_IEFormSubmit($oForm)
If @error Then
_GUICtrlEdit_InsertText($iexport, '无法导航至指定地址,提交表单失败.' & _Gettime() & @LF)
FileWriteLine($LOG, _Gettime() & '无法导航至指定地址,提交表单失败.')
Return SetError(1, 0, 0)
EndIf
$sHTML = _IEDocReadHTML($oIE)
;~ FileWrite('2.txt', $sHTML)
If Not StringInStr($sHTML, 'welcome.jsp') Then
_GUICtrlEdit_InsertText($iexport, '登录站点失败.' & _Gettime() & @LF)
FileWriteLine($LOG, _Gettime() & '登录站点失败.')
Return SetError(1, 0, 0)
Else
_GUICtrlEdit_InsertText($iexport, '登录站点成功.' & _Gettime() & @LF)
EndIf
_GUICtrlEdit_InsertText($iexport, '进入指定页面.' & _Gettime() & @LF)
_IENavigate($oIE, 'http://10.238.1.29:7001/TMS/fpages/report/ftl/reportTml.ftl?_cds_=0')
If @error Then
_GUICtrlEdit_InsertText($iexport, '请求失败,请重试.' & _Gettime() & @LF)
FileWriteLine($LOG, _Gettime() & '地址打开失败.')
Return SetError(1, 0, 0)
EndIf
_GUICtrlEdit_InsertText($iexport, '请求所需文件.' & _Gettime() & @LF)
$oIE.document.getElementById('Report_ReportTml_interface_dataset_btnSubmit' ).click()
_IELoadWait($oIE)
If @error Then
_GUICtrlEdit_InsertText($iexport, '请求失败,请重试.' & _Gettime() & @LF)
FileWriteLine($LOG, _Gettime() & '地址打开失败.')
Return SetError(1, 0, 0)
EndIf
_GUICtrlEdit_InsertText($iexport, '得到下载链接.' & _Gettime() & @LF)
_GUICtrlEdit_InsertText($iexport, '下载文件到"' & $sFile & '"' & _Gettime() & @LF)
Local $hDownload = InetGet('http://10.238.1.29:7001/TMS/filedownload/FileDownloadAction.do?param=tml', $sFile, 1 + 4, 1)
Do
Sleep(250)
Until InetGetInfo($hDownload, 2) ; 检查完成的下载.
Local $aData = InetGetInfo($hDownload) ; 获取全部信息.
InetClose($hDownload) ; 关闭句柄以释放资源.
_GUICtrlEdit_InsertText($iexport, '读取字节:' & $aData & @LF)
If $aData Then
_GUICtrlEdit_InsertText($iexport, '文件下载成功' & _Gettime() & @LF)
Else
_GUICtrlEdit_InsertText($iexport, '文件下载失败,请手动下载' & _Gettime() & @LF)
FileWriteLine($LOG, _Gettime() & '文件下载失败.')
Return SetError(2, 0, 0)
EndIf
Return $sFile
EndFunc ;==>_GetFile 回复 7# tubaba
如遇到验证码怎么办?对了。源码前辈能不能分享 fffffffffffffffffffffff 这个不错,我喜欢
页:
[1]