以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [讨论]每次用网页数据保存,发现cpu占用很厉害 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=50729) |
||||
-- 作者:浙江仔 -- 发布时间:2014/5/12 12:28:00 -- [讨论]每次用网页数据保存,发现cpu占用很厉害 每次用网页数据保存,发现cpu占用很厉害,有时会到70%以上,不知道怎么回事? 代码如下: Dim web As New System.Windows.Forms.WebBrowser() web.Navigate("http://www.0572home.com/house/hs2.asp") Do Until web.ReadyState = 4 Application.DoEvents Loop
\'取数据 Dim Cols() As String = { "编号","信息来源","区县","小区路段","房屋类型","面积","价格","单价","发布时间" }
Dim elems As object = web.Document.GetElementById("hsList").GetElementsByTagName("tr") Dim m As Integer = 0 For Each elem As object In elems Dim i As Integer = -1 If m > 0 Then \'因为网页的表格有标题,如果不判断,就会增加出一个空行 Tables("德清房产网").AddNew Dim tdelems As object = elem.GetElementsByTagName("td") For Each tdelem As object In tdelems i = i + 1 Tables("德清房产网").Current(Cols(i)) = tdelem.Innertext \' Next End If m = m + 1 Next Tables("德清房产网").save |
||||
-- 作者:浙江仔 -- 发布时间:2014/5/12 12:29:00 --
|
||||
-- 作者:Bin -- 发布时间:2014/5/12 14:05:00 -- 因为等待网页加载的时候 这个代码段一直在执行 Dim web As New System.Windows.Forms.WebBrowser() web.Navigate("http://www.0572home.com/house/hs2.asp") Do Until web.ReadyState = 4 Application.DoEvents Loop 用至少4个线程的CPU就不会有问题. 或者采用事件的方法.参考我的例子http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=32808&skin=0 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2014/5/12 14:19:00 -- 你这样改改看看:
Dim web As New System.Windows.Forms.WebBrowser() web.Navigate("http://www.0572home.com/house/hs2.asp") Do Until web.ReadyState = 4 System.Threading.Thread.Sleep(500) Loop |
||||
-- 作者:浙江仔 -- 发布时间:2014/5/12 14:50:00 -- 狐表停止响应了,呵呵 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2014/5/12 14:53:00 --
按bin哥说的,用事件。 [此贴子已经被作者于2014-5-12 14:53:18编辑过]
|
||||
-- 作者:浙江仔 -- 发布时间:2014/5/12 15:09:00 -- 为什么网页数据加载好了,cpu占用还这么高呢? 能不能在
Tables("德清房产网").save 之后加代码,控制以下代码进程的停止? Dim web As New System.Windows.Forms.WebBrowser() web.Navigate("http://www.0572home.com/house/hs2.asp") Do Until web.ReadyState = 4 Application.DoEvents Loop
|
||||
-- 作者:浙江仔 -- 发布时间:2014/5/12 15:12:00 -- 以下是引用Bin在2014-5-12 14:05:00的发言:
因为等待网页加载的时候 这个代码段一直在执行 Dim web As New System.Windows.Forms.WebBrowser() web.Navigate("http://www.0572home.com/house/hs2.asp") Do Until web.ReadyState = 4 Application.DoEvents Loop 用至少4个线程的CPU就不会有问题. 或者采用事件的方法.参考我的例子http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=32808&skin=0
业余玩玩,对编程没有系统学习过,事件方法不了解,能不能指点一下? |
||||
-- 作者:浙江仔 -- 发布时间:2014/5/12 15:26:00 -- web.stop web.Dispose 都不管用,呵呵 |
||||
-- 作者:Bin -- 发布时间:2014/5/12 15:31:00 -- 有例子给你照着来,还不算指点么,而且这个例子中文注译详细得不能再详细了 |