以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- DOM 读取网页数据 请教 有点甜 老师 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=58614) |
-- 作者:卧美吻花 -- 发布时间:2014/10/20 21:09:00 -- DOM 读取网页数据 请教 有点甜 老师 Dim ObjIE As Object = CreateObject("InternetExplorer.Application") Dim Tbl As Table = Tables("表A") Dim R As Row \'Tbl.DataTable.DataRows.Clear StatusBar.Message1 = "正在前往网页..." ObjIE.Navigate("http://www.knfilters.com/search/applications.aspx?prod=69-9756TFK") Do Until ObjIE.ReadyState = 4 Application.Doevents Loop Dim Dom As Object = ObjIE.Document Dim HTMLTbl As Object = Dom.ALL.tags("cph_dl_apps") If HTMLTbl IsNot dbnull.value Then Dim RowCnt As Integer = HTMLTbl.Rows.Length \'Tbl.StopRedraw \'取消注释此行以提高效率 For i As Integer = 0 To RowCnt - 1 R = Tbl.AddNew R("第一列") = HTMLTbl.Rows(i).Cells(0).InnerText R("第二列") = HTMLTbl.Rows(i).Cells(1).InnerText R("第三列") = HTMLTbl.Rows(i).Cells(2).InnerText StatusBar.Message1 = "正在获取第 " & i + 1 & "/" & RowCnt & "行数据..." Next \'Tbl.ResumeRedraw \'取消注释此行以提高效率 StatusBar.Message1 = "数据获取完成..." ObjIE.Quit Msgbox("OK") StatusBar.Reset Else StatusBar.Message1 = "获取数据失败" End If 原始网页是这个http://www.knfilters.com/search/applications.aspx?prod=69-9756TFK 想要读取数据放到表A 看了不少关于DOM方面的资料,还是没搞懂 麻烦帮忙看一下 这里面DOM应该怎么写? 谢谢 |
-- 作者:卧美吻花 -- 发布时间:2014/10/20 21:14:00 -- 网页结构 |
-- 作者:有点甜 -- 发布时间:2014/10/20 21:23:00 -- 如下代码,但是这个网页访问较慢,需要等候一段很长很长的时间
Dim web As New System.Windows.Forms.WebBrowser() msgbox("开始访问")
msgbox("开始读取")
Dim elems As object = web.Document.GetElementById("cph_dl_apps").GetElementsByTagName("table") For i As Integer = 1 To elems.Count - 1 |
-- 作者:卧美吻花 -- 发布时间:2014/10/20 21:44:00 -- 这个网页读取并不慢 我发现是用DOM的反应会很慢 刚才Q群有人说用“正则表达式”会快很多,甜老师了解否?
|
-- 作者:有点甜 -- 发布时间:2014/10/20 22:05:00 -- 跟dom无关,你自己看一下msgbox,读取确实慢。
我等候完全打开,很慢的。 |
-- 作者:lihe60 -- 发布时间:2014/10/21 8:17:00 -- 以下是引用有点甜在2014-10-20 21:23:00的发言:
如下代码,但是这个网页访问较慢,需要等候一段很长很长的时间
Dim web As New System.Windows.Forms.WebBrowser() msgbox("开始访问")
msgbox("开始读取")
Dim elems As object = web.Document.GetElementById("cph_dl_apps").GetElementsByTagName("table") For i As Integer = 1 To elems.Count - 1 啥也没有执行。 |
-- 作者:有点甜 -- 发布时间:2014/10/21 9:10:00 -- 等候一段时间。 |