如何使用vbscript从标记或HTML类提取数据?我只选择标记或类

如何使用vbscript从标记或HTML类提取数据?我只选择标记或类,vbscript,Vbscript,有人能帮我吗?我需要提取的文本之间的标签或HTML类使用VBScript和保存到一个单一的文本文件。我需要保存在不同行上定义的标记或类 我在互联网上找到了很多代码,但没有一个能像预期的那样工作 例如,我有下面的代码,但我无法通过它提取类,而且也不可能有多个标记。在许多情况下,代码甚至不起作用 myURL = "http://rss.cnn.com/rss/edition.rss" Set oXMLHttp = CreateObject("MSXML2.XMLHTTP") Set ohtmlFi

有人能帮我吗?我需要提取的文本之间的标签或HTML类使用VBScript和保存到一个单一的文本文件。我需要保存在不同行上定义的标记或类

我在互联网上找到了很多代码,但没有一个能像预期的那样工作

例如,我有下面的代码,但我无法通过它提取类,而且也不可能有多个标记。在许多情况下,代码甚至不起作用

myURL = "http://rss.cnn.com/rss/edition.rss"

Set oXMLHttp = CreateObject("MSXML2.XMLHTTP")
Set ohtmlFile = CreateObject("htmlfile")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Const ForReading = 1, ForWriting = 2, ForAppending = 8

oXMLHttp.Open "GET", myURL, False
oXMLHttp.send

If oXMLHttp.Status = 200 Then

ohtmlFile.Write oXMLHttp.responseText
ohtmlFile.Close

Set oTable = ohtmlFile.getElementsByTagName("description")
sFileName = "c:\users\user\desktop\News.txt"
Set objFile = objFSO.OpenTextFile(sFileName, ForAppending, True)
For Each oTab In oTable
    objFile.Write oTab.Innertext & vbCrLf
Next
objFile.Close
End If

WScript.Quit

谢谢

使用带有
ohtmlFile
对象的。可以指定所需的标记类型。例如:

Set objAnchors = ohtmlFile.getElementsByTagName("a")

这将返回HTML文档中的所有标记。

您可以使用正则表达式,但是:

Option Explicit
Dim myURL,oXMLHttp,objFSO,Description,write2File,ws
myURL = "http://rss.cnn.com/rss/edition.rss"
set ws = CreateObject("wscript.shell")
Set oXMLHttp = CreateObject("MSXML2.XMLHTTP")
Set objFSO = CreateObject("Scripting.FileSystemObject")
oXMLHttp.Open "GET", myURL, False
oXMLHttp.send

If oXMLHttp.Status = 200 Then
    Description = Extract(oXMLHttp.responseText)
    Set write2File = objFSO.CreateTextFile(".\News.txt",True)
    write2File.WriteLine(Description)
    write2File.Close
    ws.run ".\News.txt"
End If
'-------------------------------------------------------------------------
Function Extract(Data)  
    Dim re,Match,Matches
     Set re = New RegExp 
     re.Global = True 
     re.IgnoreCase = True  
     re.Pattern = "<description><!\[CDATA\[([\s\S]*?)\]\]><\/description>" 
     Set Matches = re.Execute(Data)
     For Each Match in Matches
         Description = Description & Match.SubMatches(0) & vbCrlf & vbCrlf
     Next  
    Extract = Description
End Function
'-------------------------------------------------------------------------
选项显式
Dim myURL、oXMLHttp、objFSO、描述、write2文件、ws
myURL=”http://rss.cnn.com/rss/edition.rss"
设置ws=CreateObject(“wscript.shell”)
设置oXMLHttp=CreateObject(“MSXML2.XMLHTTP”)
设置objFSO=CreateObject(“Scripting.FileSystemObject”)
oXMLHttp.Open“GET”,myURL,False
oXMLHttp.send
如果oXMLHttp.Status=200,则
Description=Extract(oXMLHttp.responseText)
Set write2File=objFSO.CreateTextFile(“.\News.txt”,True)
write2File.WriteLine(说明)
write2File.Close
ws.run.“\News.txt”
如果结束
'-------------------------------------------------------------------------
函数提取(数据)
暗淡的、匹配的、匹配的
Set re=New RegExp
re.Global=True
re.IgnoreCase=True
re.Pattern=“”
设置匹配项=重新执行(数据)
比赛中的每一场比赛
描述=描述和匹配。子匹配(0)&vbCrlf&vbCrlf
下一个
摘录=描述
端函数
'-------------------------------------------------------------------------
编辑:

关于如何从谷歌获取新闻的第二个请求:

Option Explicit
Dim myURL,oXMLHttp,objFSO,GoogleNews,write2File,ws
myURL = "https://news.google.com/?hl=en-US&gl=US&ceid=US:en"
set ws = CreateObject("wscript.shell")
Set oXMLHttp = CreateObject("MSXML2.XMLHTTP")
Set objFSO = CreateObject("Scripting.FileSystemObject")
oXMLHttp.Open "GET", myURL, False
oXMLHttp.send

If oXMLHttp.Status = 200 Then
    GoogleNews = Extract(oXMLHttp.responseText)
    Set write2File = objFSO.CreateTextFile(".\GoogleNews.txt",True,-1)
    write2File.WriteLine(GoogleNews)
    write2File.Close
    ws.run ".\GoogleNews.txt"
End If
'-------------------------------------------------------------------------
Function Extract(Data)  
    Dim re,Match,Matches
     Set re = New RegExp 
     re.Global = True 
     re.IgnoreCase = True  
     re.MultiLine = True
     re.Pattern = "(\bclass=""DY5T1d"" >)(.+?)<\/a>" 
     Set Matches = re.Execute(Data)
     For Each Match in Matches
         GoogleNews = GoogleNews & Match.SubMatches(1) & vbCrlf & vbCrlf
     Next  
    GoogleNews = Replace(GoogleNews,"&#39;","'")
    GoogleNews = Replace(GoogleNews,"&quot;",chr(34))
    Extract = GoogleNews
End Function
'-------------------------------------------------------------------------
选项显式
Dim myURL、oXMLHttp、objFSO、GoogleNews、write2File、ws
myURL=”https://news.google.com/?hl=en-美国&gl=US&ceid=US:en“
设置ws=CreateObject(“wscript.shell”)
设置oXMLHttp=CreateObject(“MSXML2.XMLHTTP”)
设置objFSO=CreateObject(“Scripting.FileSystemObject”)
oXMLHttp.Open“GET”,myURL,False
oXMLHttp.send
如果oXMLHttp.Status=200,则
GoogleNews=Extract(oXMLHttp.responseText)
设置write2File=objFSO.CreateTextFile(“.\GoogleNews.txt”,True,-1)
write2File.WriteLine(谷歌新闻)
write2File.Close
运行“\GoogleNews.txt”
如果结束
'-------------------------------------------------------------------------
函数提取(数据)
暗淡的、匹配的、匹配的
Set re=New RegExp
re.Global=True
re.IgnoreCase=True
re.MultiLine=True
re.Pattern=“(\bclass=”“DY5T1d”“>)(.+?)”
设置匹配项=重新执行(数据)
比赛中的每一场比赛
GoogleNews=GoogleNews和Match.子匹配(1)和vbCrlf和vbCrlf
下一个
谷歌新闻=替换(谷歌新闻,';“,”)
谷歌新闻=替换(谷歌新闻,“”,chr(34))
提取物=鹅膏
端函数
'-------------------------------------------------------------------------

谢谢@Hackoo,它真的帮了我……我还有一个问题,如果我想提取“=US&ceid=US:en”之间的文本。我需要在代码中做哪些更改?你能帮我吗?它真的解决了我的问题。我非常感谢你的帮助!