以文本方式查看主题

-  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.jpg
按此在新窗口浏览图片

每次用网页数据保存,发现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
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:网页表格数据保存房产信息.table


--  作者: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
--  
有例子给你照着来,还不算指点么,而且这个例子中文注译详细得不能再详细了