Foxtable(狐表)用户栏目专家坐堂 → [讨论]每次用网页数据保存,发现cpu占用很厉害


  共有3492人关注过本帖树形打印复制链接

主题:[讨论]每次用网页数据保存,发现cpu占用很厉害

帅哥哟,离线,有人找我吗?
浙江仔
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1326 积分:9603 威望:0 精华:1 注册:2010/7/21 14:20:00
[讨论]每次用网页数据保存,发现cpu占用很厉害  发帖心情 Post By:2014/5/12 12:28:00 [只看该作者]


此主题相关图片如下: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


 回到顶部
帅哥哟,离线,有人找我吗?
浙江仔
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1326 积分:9603 威望:0 精华:1 注册:2010/7/21 14:20:00
  发帖心情 Post By:2014/5/12 12:29:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:网页表格数据保存房产信息.table


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
浙江仔
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1326 积分:9603 威望:0 精华:1 注册:2010/7/21 14:20:00
  发帖心情 Post By:2014/5/12 14:50:00 [只看该作者]

狐表停止响应了,呵呵

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2014/5/12 14:53:00 [只看该作者]

图片点击可在新窗口打开查看

 

按bin哥说的,用事件。

[此贴子已经被作者于2014-5-12 14:53:18编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
浙江仔
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1326 积分:9603 威望:0 精华:1 注册:2010/7/21 14:20:00
  发帖心情 Post By: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

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
浙江仔
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1326 积分:9603 威望:0 精华:1 注册:2010/7/21 14:20:00
  发帖心情 Post By: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

 

业余玩玩,对编程没有系统学习过,事件方法不了解,能不能指点一下?


 回到顶部
帅哥哟,离线,有人找我吗?
浙江仔
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1326 积分:9603 威望:0 精华:1 注册:2010/7/21 14:20:00
  发帖心情 Post By:2014/5/12 15:26:00 [只看该作者]

web.stop

web.Dispose

都不管用,呵呵


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/5/12 15:31:00 [只看该作者]

有例子给你照着来,还不算指点么,而且这个例子中文注译详细得不能再详细了

 回到顶部