=GetDate("http://xkkm.) && 1.首先获取学校和网址数据,共有:1622个学校
*!* MyData1 : 专业数据表
Create Cursor MyData1 ( 学校序号 I, 地区 C(20), 学校代码 C(5), 学校名称 C(60), ;
专业序号 I, 层次 C(10), 专业名称 C(60), 科目要求 C(60), 所含专业 C(200) )
Select MyData
Go Top
Scan Next 10 && 调试时,尽量采集少量数据
Wait Window AT 10, 10 "正在提取:" + Transform(Recno()) + " of " + Transform(Reccount()) Nowait
m.学校序号 = MyData.学校序号
m.地区 = MyData.地区
m.学校代码 = MyData.学校代码
m.学校名称 = MyData.学校名称
m.学校网址 = Alltrim(MyData.学校网址) && URL 两次编码
m.学校网址 = Strextract(MyData.学校网址, "", "amp") + "xxmc=" + URLEncode(Strextract(MyData.学校网址, "xxmc="))
=GetDate1("http://xkkm. + M.学校网址) && 2.根据学校和网址数据,再获取专业数据
Select MyData
Endscan
Select MyData1
Go Top
Browse Last
Function GetDate(cURL As Character) && 获取学校数据
Wait Window AT 10, 10 "正在提取:学校/代码的数据,请稍等,,," Nowait
oIE = Createobject("Internetexplorer.Application")
oIE.Visible = .F.
oIE.Navigate(cURL)
tStartSecond = Seconds()
Do While oIE.Busy = .T. Or oIE.ReadyState#4
If Seconds() - tStartSecond > 10
Exit
Endif
Inkey(0.5)
Enddo
*!* MyData : 学校数据表
Create Cursor MyData (学校序号 I, 地区 C(20), 学校代码 C(5), 学校名称 C(60), 学校网址 C(200) )
O = oIE.Document.GetElementsByTagName("tr") && HTML 表格中的行,
For I = 1 To O.Length - 1 && 获取该元素 (cElement) 的每个内容
Insert Into MyData Values ( Val(Strextract(O.Item(I).InnerHtml, ">", "<", 1)), ;
Strextract(O.Item(I).InnerHtml, ">", "<", 3), Strextract(O.Item(I).InnerHtml, ">", "<", 5), ;
Strextract(O.Item(I).InnerHtml, ">", "<", 7), Strextract(O.Item(I).InnerHtml, [href="], ["]) )
Endfor
oIE.Quit()
Endfunc
Function GetDate1(cURL As Character) && 获取专业数据
oIE = Createobject("Internetexplorer.Application")
oIE.Visible = .F.
oIE.Navigate(cURL)
tStartSecond = Seconds()
Do While oIE.Busy = .T. Or oIE.ReadyState#4
If Seconds() - tStartSecond > 10
Exit
Endif
Inkey(0.2)
Enddo
Inkey(0.5)
Select MyData1
For Each objRow In oIE.Document.getElementsByTagName("table").[0].Rows &&objTable.Rows
Insert Into MyData1 Values ( m.学校序号, m.地区, m.学校代码, ;
m.学校名称, Val(objRow.cells(0).innertext), ;
objRow.cells(1).innertext, objRow.cells(2).innertext, ;
objRow.cells(3).innertext, objRow.cells(4).innertext )
Store "" To m.地区, m.学校代码, m.学校名称
Next
oIE.Quit()
Endfunc
************************
Function UrlEncode(tcString, tlNoPlus) && URL 编码
************************
Local lcReturn, lcChar, lnCounter
m.lcReturn=""
For m.lnCounter = 1 To Len(m.tcString)
m.lcChar = Substr(m.tcString, m.lnCounter, 1)
If Atc(m.lcChar, "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") > 0
m.lcReturn = m.lcReturn + m.lcChar
Loop
Endif
If Asc(m.lcChar) = 32 And !m.tlNoPlus
m.lcReturn = m.lcReturn + "+"
Loop
Endif
m.lcReturn = m.lcReturn + "%" + Right(Transform(Asc(m.lcChar), "@0"), 2)
Endfor
Return m.lcReturn
Endfunc