标题:如何从这个网页提取表格数据,做成电子表格呢?谢谢
只看楼主
jinanshui
Rank: 2
等 级:论坛游民
帖 子:274
专家分:64
注 册:2009-10-6
结帖率:95.65%
已结贴  问题点数:20 回复次数:21 
如何从这个网页提取表格数据,做成电子表格呢?谢谢
如何从这个网页提取表格数据,做成电子表格呢?谢谢
http://xkkm.
好指导学校的学生选考科目。
搜索更多相关主题的帖子: 网页 提取 表格 数据 电子表格 
2018-08-08 11:25
星光悠蓝
Rank: 9Rank: 9Rank: 9
来 自:山水甲天下
等 级:贵宾
威 望:48
帖 子:459
专家分:1116
注 册:2010-1-11
得分:0 
直接复制网页表格数据,在EXCEL粘贴就OK!
2018-08-08 11:46
jinanshui
Rank: 2
等 级:论坛游民
帖 子:274
专家分:64
注 册:2009-10-6
得分:0 
谢谢您,一个一个学校太麻烦,2000多所呢,开学就给孩子们分班,选科目,求帮忙,谢谢
2018-08-08 11:49
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
CLEAR
SET MEMOWIDTH TO 120
oIE = Createobject("InternetExplorer.application")
cURLstr="http://xkkm.
oIE.Navigate(cURLstr)
tStartSecond=Seconds()
Do While oIE.Busy = .T. Or oIE.ReadyState!=4
   If Seconds()-tStartSecond>30
      RETURN
   Endif
Enddo
Inkey(0.2)
lcText=oIE.Document.body.innerText
STRTOFILE(lcText,"wy.txt")
MODIFY FILE wy.txt
自己处理 wy.txt 中的内容吧

坚守VFP最后的阵地
2018-08-08 19:09
红星二锅头
Rank: 8Rank: 8
等 级:贵宾
威 望:46
帖 子:491
专家分:754
注 册:2016-8-25
得分:0 
晚上该网站可能关闭了,明天白天试试看
1.首先获取学校和网址数据,共有:1622个学校/URL
2.根据学校和网址数据,再获取专业数据
3.URL 需要两次编码

团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2018-08-08 23:37
jinanshui
Rank: 2
等 级:论坛游民
帖 子:274
专家分:64
注 册:2009-10-6
得分:0 
謝謝,我看看
2018-08-09 08:12
红星二锅头
Rank: 8Rank: 8
等 级:贵宾
威 望:46
帖 子:491
专家分:754
注 册:2016-8-25
得分:15 

=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

团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2018-08-09 08:38
红星二锅头
Rank: 8Rank: 8
等 级:贵宾
威 望:46
帖 子:491
专家分:754
注 册:2016-8-25
得分:0 
如果数据是正确的,把:Scan Next 10  改成 Scan
希望成功

团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2018-08-09 08:40
jinanshui
Rank: 2
等 级:论坛游民
帖 子:274
专家分:64
注 册:2009-10-6
得分:0 
十分感谢
2018-08-09 09:13
jinanshui
Rank: 2
等 级:论坛游民
帖 子:274
专家分:64
注 册:2009-10-6
得分:0 
2018-08-09 09:16



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-489091-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.305573 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved