找回密码
 加入
搜索
查看: 3763|回复: 13

[IE类操作] 用dom对象怎么获取网页部分文本[已解决]

  [复制链接]
发表于 2017-3-12 23:00:46 | 显示全部楼层 |阅读模式
本帖最后由 haijie1223 于 2017-3-17 08:45 编辑

我获取某个网页的大致内容如下:
<html>
<head><title> test </title></head>
<body>
<div class="test0">
<div class="test00">
<!--============获取以下内容========================-->
<ul class="result">
<li class="text0">
<div class="text1">
<div class="title">
<p><a href="baidu.com" target="_blank">logo图片预览</a></p>
</div>
<div class="test">测试文本</div>
<div class="test1"><ul><li class="test1-1">测试文本1</li></ul></div>
<div class="test2"><ul><li class="test2-1">测试文本2</li></ul></div>
</div>
</li>
</ul>
<!--==============获取以上内容======================-->
</div>
</div>
<div class="foot"></div>
</body>
</html>
在不用正则的情况下,我想利用dom对象直接获取<ul class="result">(...)</ul>之间的内容,可行么?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2017-3-13 07:51:48 | 显示全部楼层
$str=FileRead(@ScriptDir&"\1.html")
$hf=ObjCreate("htmlfile")
With $hf
        .designmode="on"
        .open
        .write($str)
        For $ul In .getelementsbytagname("ul")
                If $ul.classname=="result" Then
                        ConsoleWrite($ul.outerhtml&@CRLF)
                EndIf
        Next
EndWith
以上代码供发哥测试

评分

参与人数 1威望 +1 金钱 +30 收起 理由
haijie1223 + 1 + 30 谢谢!

查看全部评分

发表于 2017-3-13 08:44:26 | 显示全部楼层
回复 2# kevinch


    有直接处理 类似网页格式的这种文件? 可不可以介绍一下呀。
 楼主| 发表于 2017-3-13 09:33:00 | 显示全部楼层
回复 2# kevinch
多谢!测试可用。另外,html对象和InternetExplorer.Application对象的属性和方法一样的么?
用下面的代码获取'CP'标签的内容,但是源码中有两个cp,下面的代码只能获取外层cp,是不是所有的同名标签,只获取最外层的?如果遇到多个标签名相同的情况,应该怎么处理?

Dim $html = ObjCreate("htmlfile")
With $html
        .open()
        .designmode = "on"  
        .write($Respond)        
        dim $text = .getelementbyid("cp").innertext
        MsgBox(0,0,$text)
EndWith
<HTML>
<HEAD><TITLE>test</TITLE></HEAD>

<BODY >

<table class=style18 cellspacing=0 cellpadding=0 width=950 align=center 
bgcolor=#ffffff border=0> <tbody> <tr> <td bgcolor=#FFFFFF> </td><td valign=top align=middle bgcolor=#ffffff> 
<table cellspacing=0 cellpadding=0 width="99%" 
      bgcolor=#ffffff border=0 align="CENTER"> <tbody> <tr> <td valign=top align=middle width="640"> 
<table bgcolor=#999999 border=0 cellpadding=0 cellspacing=1 
      width=640 align="center"> <tbody> <tr> <td bgcolor=#ffffff width="640"> 
          
          
          <div id=cp> <table cellspacing=0 cellpadding=0 width=100% align=center border=0 bgcolor="#ffffff"> 
<tbody> <tr> <td> <div align="left"><span
  lang=EN-US style='font-size:9.0pt;mso-bidi-font-size:10.5pt'></span> <div id=content02> 
                              <div class=feature> 
                                

                                <table bgcolor=#FF0000 border=0 cellpadding=0 cellspacing=1 
      width=99% align="center">
                                  <tbody> 
                                  <tr> 
                                    <td bgcolor=#ffffff height=23> 
                                      
                                      <div id=cp> 
                                        <table width="100%" border="0" cellspacing="0" cellpadding="0"> 
                                          <tr> 
                                            <td colspan="3" height="25"> 
                                              <div align="left">tip</div>
                                            </td>
                                          </tr>
                                        </table>
                                        <br>
                                        <table width="100%" border="0" cellspacing="0" cellpadding="0">
                                          <tr> 
                                            <td width="3%" height="25"> 
                                              <div align="center">test</div>
                                            </td>                                            
                                          </tr>                                          
                                        </table>                                        
                                      </div> 

                                                                          
                                    </td>
                                  </tr>
                                  </tbody> 
                                </table>

                              </div>
                            </div></div></td></tr> </tbody> </table></div></td></tr> 
</tbody> </table></td>
                  
                  
                  </tr> 
</tbody> </table></td></tr> 
 </tbody> </table>

</BODY></HTML>

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2017-3-13 14:13:46 | 显示全部楼层
<div id='header'>
....
</div>
<div class='content'>
</div>
<div class='content'>
</div>
<div id='footer'>
</div>
ID:是唯一标识符,通过 document.getElementById 获取得到一个对象。不应该重复,如果网站中有重复是设计缺陷。如果有重复只能通过其他可区分的方法获取。
CLASS:可以多个重复,使用 document.getElementsByClassName 获取,得到一个对象数组。
 楼主| 发表于 2017-3-13 17:15:24 | 显示全部楼层
回复 5# nmgwddj


    多谢指点,我查看的那个网站源代码,确实有重复的id,有两个<div id=cp>,可能是设计者疏忽了。
发表于 2017-4-6 14:19:35 | 显示全部楼层
额。。。感觉很高深的样子,偏偏我还得用,还看不懂
发表于 2017-4-6 16:21:01 | 显示全部楼层
学习学习。。。。
发表于 2017-4-7 11:38:55 | 显示全部楼层
大神,,究竟是怎么拆分出来的啊?
发表于 2017-4-7 11:45:44 | 显示全部楼层
比如说我想获取这段代码中的信息,如:晴,阴。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2017-4-7 12:45:51 | 显示全部楼层
回复 10# black丶shark

你把网页保存成1.html

$file_html=FileRead(@ScriptDir&"\1.html")
Dim $html = ObjCreate("htmlfile")
With $html
        .open()
        .designmode = "on"
        .write($file_html)
        dim $div = .getElementsByTagName("div")

EndWith

For $i = 0 To $div.length
        If StringInStr($div($i).classname,"days7") Then

                ExitLoop
        EndIf
Next

$Aday = $div($i).getElementsByTagName("b")
$Atemp = $div($i).getElementsByTagName("span")
$Aweather = $div($i).getElementsByTagName("img")
$str = ""

For $m = 0 To $Aday.length*2-1 Step 2
        $n = $m / 2
        $str = $str & $Aday($n).innertext &"        温度:"& $Atemp($n).innertext &"        白天:"&StringFormat("%-4s",$Aweather($m).alt)&"        晚上:"&$Aweather($m+1).alt& @CRLF
Next

MsgBox(0,0,$str)
发表于 2017-4-21 17:20:55 | 显示全部楼层
回复 11# 1361739590
发表于 2017-4-21 17:22:24 | 显示全部楼层
回复 11# 1361739590


    请教一下,天气得信息在哪里,就是晴,多云什么得,我想根据获取到得天气信息调用图片,不知道这个信息在哪里,$aa = StringFormat("%-4s",$Aweather($m))
                MsgBox(0,"1",$aa)
这个不好用额
发表于 2017-4-23 18:35:13 | 显示全部楼层
inetgetsource  对字符串进行查找
或者分割  trimleft  stringlen配合就能取
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-27 05:52 , Processed in 0.082674 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表