用dom对象怎么获取网页部分文本[已解决]
本帖最后由 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>之间的内容,可行么? $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以上代码供发哥测试 回复 2# kevinch
有直接处理 类似网页格式的这种文件? 可不可以介绍一下呀。 回复 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>
<div id='header'>
....
</div>
<div class='content'>
</div>
<div class='content'>
</div>
<div id='footer'>
</div>
ID:是唯一标识符,通过 document.getElementById 获取得到一个对象。不应该重复,如果网站中有重复是设计缺陷。如果有重复只能通过其他可区分的方法获取。
CLASS:可以多个重复,使用 document.getElementsByClassName 获取,得到一个对象数组。 回复 5# nmgwddj
多谢指点,我查看的那个网站源代码,确实有重复的id,有两个<div id=cp>,可能是设计者疏忽了。 额。。。感觉很高深的样子,偏偏我还得用,还看不懂 学习学习。。。。 大神,,究竟是怎么拆分出来的啊? 比如说我想获取这段代码中的信息,如:晴,阴。。 回复 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) 回复 11# 1361739590 回复 11# 1361739590
请教一下,天气得信息在哪里,就是晴,多云什么得,我想根据获取到得天气信息调用图片,不知道这个信息在哪里,$aa = StringFormat("%-4s",$Aweather($m))
MsgBox(0,"1",$aa)
这个不好用额 inetgetsource对字符串进行查找
或者分割trimleftstringlen配合就能取
页:
[1]