请教:
    假如我现在已经获取了某网页所有内容,然后我想从中提取所有格式为   XXXX XXXX XXXX XXXX   的内容

解决方案 »

  1.   

    看看我资源的这个范例吧,虽然原来的网页更换了,程序不能正常使用,
    但里面方法还是可以参考的。
    VB源码:通过XML读取网页内容并分析取得需要的数据
    http://download.csdn.net/source/639058
      

  2.   

    用正则,找是找到了,不过还有问题啊
    新建了一个测试的HTML页,内容如下
    <iframe application="yes" width=700 height=600 src="http://www.baidu.com" mce_src="http://www.baidu.com"></iframe>
    <p>阿萨德看了就弗拉是恐惧的房间卡上的会计法快乐撒娇的快乐飞机上看的了积分卡洛杉矶的开放了就是快乐地方 UUXX SDFG WWWX NNME 1234567</P>
    <p>ssadfsdfafsdf卡上的会计法快乐撒娇的快乐飞机上看的了积分卡洛杉矶的开放了就是快乐地方 
    UUXX SDFG WWWX NNME
    wwww dddd ssss xxxx
    qqqq ssss qqqq cccc</P>
    <p>机的收购的十分大方上看的了积分卡洛杉矶的开放了就是快乐地方 UUXX SDFG WWWX NNME 1234567</P>
    <p>实得分乐撒娇的快乐飞机上看的了积分卡洛杉矶的开放了就是快乐地方 UUXX SDFG WWWX NNME 1234567</P>
    <p>饿啊饿快乐飞机上看的了积分卡洛杉矶的开放了就是快乐地方 UUXX SDFG WWWX NNME 1234567 第一次</P>用  For Each i In doc.getelementsbytagname("p")
         Text1.Text = Text1.Text & " " & i.innertext
    将p标签里的内容放到TEXTBOX里面,照理HTML里面只有三段,但是textbox里面显示的重复了好几次,类似于显示的是
    机的收购的十分大方上看的了积分卡洛杉矶的开放了就是快乐地方 UUXX SDFG WWWX NNME 1234567
    实得分乐撒娇的快乐飞机上看的了积分卡洛杉矶的开放了就是快乐地方 UUXX SDFG WWWX NNME 1234567
    饿啊饿快乐飞机上看的了积分卡洛杉矶的开放了就是快乐地方 UUXX SDFG WWWX NNME 1234567 第一次机的收购的十分大方上看的了积分卡洛杉矶的开放了就是快乐地方 UUXX SDFG WWWX NNME 1234567
    实得分乐撒娇的快乐飞机上看的了积分卡洛杉矶的开放了就是快乐地方 UUXX SDFG WWWX NNME 1234567
    饿啊饿快乐飞机上看的了积分卡洛杉矶的开放了就是快乐地方 UUXX SDFG WWWX NNME 1234567 第一次机的收购的十分大方上看的了积分卡洛杉矶的开放了就是快乐地方 UUXX SDFG WWWX NNME 1234567
    实得分乐撒娇的快乐飞机上看的了积分卡洛杉矶的开放了就是快乐地方 UUXX SDFG WWWX NNME 1234567
    饿啊饿快乐飞机上看的了积分卡洛杉矶的开放了就是快乐地方 UUXX SDFG WWWX NNME 1234567 第一次重复了3次,求大侠分析下为什么?
      

  3.   

    内容是获取了,但又有新问题请教
    用For Each i In doc.getelementsbytagname("p")
         Text1.Text = Text1.Text & " " & i.innertext
    获取网页中p标签中的内容,测试网页中有三个<p></p>,为什么textbox中显示的是三次重复的这三个<p></p>之间的内容?
      

  4.   

    你的页面里有5个P标签啊?取后三个?
    新建了一个测试的HTML页,内容如下
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-
    transitional.dtd">
    <html>
    <head>
    <title>测试</title>
    </head>
    <body>
    <iframe application="yes" width=700 height=600 src="http://www.baidu.com" mce_src="http://www.baidu.com"></iframe>
    <P>阿萨德看了就弗拉是恐惧的房间卡上的会计法快乐撒娇的快乐飞机上看的了积分卡洛杉矶的开放了就是快乐地方 UUXX SDFG WWWX NNME 1234567</P>
    <P>ssadfsdfafsdf卡上的会计法快乐撒娇的快乐飞机上看的了积分卡洛杉矶的开放了就是快乐地方 
    UUXX SDFG WWWX NNME
    wwww dddd ssss xxxx
    qqqq ssss qqqq cccc</P>
    <div id=aaa>
      <P>机的收购的十分大方上看的了积分卡洛杉矶的开放了就是快乐地方 UUXX SDFG WWWX NNME 1234567</P>
      <P>实得分乐撒娇的快乐飞机上看的了积分卡洛杉矶的开放了就是快乐地方 UUXX SDFG WWWX NNME 1234567</P>
      <P>饿啊饿快乐飞机上看的了积分卡洛杉矶的开放了就是快乐地方 UUXX SDFG WWWX NNME 1234567 第一次</P>
    </div>
    </html>
    dim mijing
    '如果取全部P标签
    'For Each mijing In doc.getElementsByTagName("P")
    '取后三个
    For Each mijing In doc.getElementById("aaa").getElementsByTagName("P")
      Text1.Text = Text1.Text & " " & i.innerText
    Next
      

  5.   

    Text1.Text = Text1.Text & " " & i.innerText
    ---------->>>
    Text1.Text = Text1.Text & " " & mijing.innerText
      

  6.   

    设置textbox多行显示的就会重复,multiline为false是不会重复什么原因啊?
      

  7.   

    问题解决了,不过其实带来更多问题。。测试页中 <iframe application="yes" width=700 height=600 src="http://www.baidu.com" mce_src="http://www.baidu.com"></iframe>这段拿掉就正常了,这段是上次测试获取frame中网页元素的,当时没删掉。
    不过为什么有了这句会重复呢?
      

  8.   

    问题是很多网页中都有frame的,碰到有frame的,textbox就会重复输出
      

  9.   

    这是我昨天做的....和你说的差不多,,,不知道需要吗??? 我写的有点不好,,你仔细看看吧  
     
    Dim baidu As String
    Dim Pc As Integer
    Private Sub Command1_Click()  ',获取搜索结果10条
    If Pc <> 0 Then            '判断是否按了Command2
    List1.Clear
    Dim Gettable As Object
    Dim Obj As Object
    Dim Gettable2: Dim Gettable3
    Dim Idname
     Set Gettable = WebBrowser1.Document.getelementsbytagname("table")          '返回所有table对象
       Dim i As Integer              '声明计数器变量
         For i = 0 To Gettable.length - 1          '对象的集合不好用Len()函数返回
           Idname = Gettable.Item(i).Id               '得到一个ID值
            If Idname <> "" Then             '如果id值不等于空
              Set Gettable2 = Gettable.Item(i).getelementsbytagname("td")           '从table对象集合返回td对象
                Set Gettable3 = Gettable2.Item(0).getelementsbytagname("A")          '返回为A的超链接对象
                     List1.AddItem Idname & " " & Gettable3(0).innertext & Gettable3(0).href       'href是超链接的URL
            End If
          Next          '结束循环
     End If
    End SubPrivate Sub Command2_Click()        '主要测试输入的,哈哈
     Pc = 0
      baidu = InputBox("输入关键字", "")
      baidu = "http://www.baidu.com/s?wd=" & baidu     '链接输入的关键字
      WebBrowser1.Navigate baidu         '执行触发WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)   事件
    End Sub
    Private Sub Command3_Click()       '测试Command3
      Pc = 1
    End Sub
    Private Sub Command4_Click()
     Dim k As Integer
     Dim URL
     Dim Pend As String
     Dim StrUrl
      For k = 0 To List1.ListCount - 1         '返回list1项目数量,做循环
        URL = InStr(List1.List(k), "http://")
        StrUrl = List1.List(k)         '好像多余了,呵呵
        While Mid(StrUrl, URL, 1) <> ""         '这应该可以看懂吧?
             Form2.Text1.Text = Form2.Text1.Text & Mid(List1.List(k), URL, 1)
             URL = URL + 1
        Wend
      Next k
      Call Form2.Show
    End SubPrivate Sub Form_Load()
    Command2.Caption = "输入关键字"
    WebBrowser1.Navigate "http://www.baidu.com/s?wd=%B1%F9%D3%F2%BD%A3%BF%CD"
    End Sub
    Private Sub List1_DblClick()
    MsgBox List1.List(List1.ListIndex), vbInformation, "提示"
    End Sub '很不错的取法
    Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant) '这个事件主要用来查找 找到相关结果约 是几个的
     Dim Tempcode        '变量为变体型
      Tempcode = WebBrowser1.Document.body.innerHTML  'innerHTML 与outerHTML 相差不是很多
      Dim Pstart, Pend As Integer         '声明两个整形变量
      Pstart = InStr(Tempcode, "找到相关结果约")
      Pstart = Pstart + 7         '变量加上7 从约字开始取值
      Pend = Pstart          '两者相同
      While Mid(Tempcode, Pend, 1) <> "个"       '当取一个不等于个字的时候 Pend + 1 在继续取值
      Pend = Pend + 1
      Wend
         Label1.Caption = "找到相关结果约 " & Mid(Tempcode, Pstart, Pend - Pstart + 1)      '最终获得结果
    End Sub
      

  10.   

    问题的现象你已经说过了,不要再重复了。 要知道原因只有看你代码。我想知道你的doc是怎么定义的
      

  11.   

       Dim doc As Object, i
        
        Set doc = WebBrowser1.Document
        
        For Each i In doc.getelementsbytagname("p")
         Text1.Text = Text1.Text & "" & i.innertext      Next
      

  12.   

    没出现你说的问题,应该是你上面的循环不小心执行了两遍,请你重新做个环境测试下,就几分钟而已。如果实在懒得另外建立一个工程的话建议用F8单步调试,注意Text1的内容变化。
      

  13.   

    F8单步调试以后,找到了问题,原来是WebBrowser1_DocumentComplete被触发了3次,导致的重复
    百度了一下,如果网页中含有框架网页,每个框架网页都有可能触发WebBrowser1_DocumentComplete事件现在换方法了,改用XMLHTTP
    Function GetBodyTxt(url)   '获取指定网页文本
    On Error Resume Next
    Dim HTMLDoc As Object
    Dim GetBdoy As String
    Set HTMLDoc = CreateObject("htmlfile")
    Set XmlObject = CreateObject("Microsoft.XMLHTTP")
    XmlObject.Open "Get", url, False, "", ""
    XmlObject.Send
    GetBody = XmlObject.responseText
    HTMLDoc.body.innerHTML = GetBody
    GetBodyTxt = HTMLDoc.body.innerText
    End Function感谢各位的热心帮助
      

  14.   

    看到了吧,你光给那一小片代码没用的,谁知道你是放在documentcomplete里面执行的啊,神仙也猜不出来。
    论坛签名======================================================================

    当您的问题得到解答后请及时结贴.

    http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
    http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html
    http://topic.csdn.net/u/20100626/09/f35a4763-4b59-49c3-8061-d48fdbc29561.html如何给分和结贴?
    http://community.csdn.net/Help/HelpCenter.htm#结帖如何给自己的回帖中也加上签名?
    http://blog.csdn.net/q107770540/archive/2011/03/15/6250007.aspx如何给自己安装一双火眼金睛?
    http://blog.csdn.net/sysdzw/archive/2011/04/07/6306619.aspx