
程序代码:
cPath = ADDBS(JUSTPATH(SYS(16)))
SET DEFAULT TO (cPath)
DECLARE LONG _strdup IN msvcrt as apiStrdup STRING@
DECLARE LONG free IN msvcrt as apiFree LONG
DECLARE LONG strstr IN msvcrt as apiStrstr LONG,STRING@
CREATE CURSOR tt (序号 I,地区 C(10),学校代码 C(6),学校名称 C(30),选考科目要求 C(10),学校网址 C(100))
CREATE CURSOR tmp (序号 I,层次 C(10),专业类名称 C(50),选考科目范围 C(100),类中所含专业 C(240))
jsCode = [function encode(unencoded){return encodeURIComponent(unencoded).replace(/'/g,"%27").replace(/"/g,"%22");}]
sc = CREATEOBJECT("ScriptControl")
sc.Language = "JavaScript"
sc.AddCode(jsCode)
wh = CREATEOBJECT("WinHttp.WinHttpRequest.5.1")
wh.Open("GET", "https://xkkm./web/xx.html", 0)
wh.Send()
trs = STREXTRACT(wh.ResponseText,[<tbody],[</tbody])
ps = apiStrdup(trs)
p1 = apiStrstr(ps,"<tr>")
DO WHILE p1>0
p2 = apiStrstr(p1,"</tr>")
tds = SYS(2600, p1+4, p2-p1-4)
INSERT INTO tt VALUES (;
VAL(STREXTRACT(tds,[>],[<],1)),;
STREXTRACT(tds,[>],[<],3),;
STREXTRACT(tds,[>],[<],5),;
STREXTRACT(tds,[>],[<],7),;
STREXTRACT(tds,[>],[<],10),;
STREXTRACT(tds,[>],[<],19))
p1 = apiStrstr(p2,"<tr>")
ENDDO
apiFree(ps)
** 示例只取一个学校,DBF文件名格式:学校名称(学校代码).DBF
SELECT tt
LOCATE FOR ALLTRIM(学校代码)=="10007"
ckxq(ALLTRIM(学校代码),ALLTRIM(学校名称))
CLOSE DATABASES ALL
CLEAR ALL
RETURN
FUNCTION ckxq(cDM,cMC)
cDBF = cMC+"("+cDM+")"
SELECT tmp
COPY TO (cDBF)
USE (cDBF) IN 0 ALIAS mc
wh.Open("POST", "https://xkkm./xkkm/queryXxInfor", 0)
wh.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
wh.Send("dm="+cDM+"&mc="+encodeURI(encodeURI(cMC))+"&yzm=ok")
trs = STREXTRACT(wh.ResponseText,[<tbody],[</tbody])
ps = apiStrdup(trs)
p1 = apiStrstr(ps,"<tr ")
DO WHILE p1>0
p1 = apiStrstr(p1,"<td ")
p2 = apiStrstr(p1,"</tr>")
tds = SYS(2600, p1, p2-p1)
INSERT INTO mc VALUES (;
VAL(STREXTRACT(tds,[>],[<],1)),;
STREXTRACT(tds,[>],[<],3),;
ALLTRIM(STREXTRACT(tds,[>],[<],5),0h0D,0h0A,0h20),;
STREXTRACT(tds,[>],[<],7),;
STRTRAN(ALLTRIM(STREXTRACT(tds,[>],[</td>],11),0h0D,0h0A,0h20),"<br/>",","))
p1 = apiStrstr(p2,"<tr ")
ENDDO
apiFree(ps)
USE IN "mc"
ENDFUNC
FUNCTION encodeURI(cUnencoded)
RETURN sc.run("encode", cUnencoded)
ENDFUNC