gpt4 book ai didi

vbscript - 提取 HTML 标签之间的文本

转载 作者:行者123 更新时间:2023-12-04 01:40:07 26 4
gpt4 key购买 nike

我有很多 HTML 文件需要从中提取文本。如果全部在一行上,我可以很容易地做到这一点,但是如果标签环绕或在多行上,我无法弄清楚如何做到这一点。这就是我的意思:

<section id="MySection">
Some text here
another line here <br>
last line of text.
</section>

我不关心 <br>文本,除非它有助于环绕文本。我想要的区域总是以“MySection”开头,然后以 </section>结尾.我想最终得到的是这样的:
Some text here  another line here  last line of text.

我更喜欢 vbscript 或命令行选项(sed?)之类的东西,但我不确定从哪里开始。有什么帮助吗?

最佳答案

通常,您会为此使用 Internet Explorer COM 对象:

root = "C:\base\dir"

Set ie = CreateObject("InternetExplorer.Application")

For Each f In fso.GetFolder(root).Files
ie.Navigate "file:///" & f.Path
While ie.Busy : WScript.Sleep 100 : Wend

text = ie.document.getElementById("MySection").innerText

WScript.Echo Replace(text, vbNewLine, "")
Next

然而, <section>标签在 IE 9 之前不受支持,即使在 IE 9 中,COM 对象似乎也无法正确处理它,如 getElementById("MySection")只返回开始标签:
>>> wsh.echo ie.document.getelementbyid("MySection").outerhtml
<SECTION id=MySection>

不过,您可以改用正则表达式:
root = "C:\base\dir"

Set fso = CreateObject("Scripting.FileSystemObject")

Set re1 = New RegExp
re1.Pattern = "<section id=""MySection"">([\s\S]*?)</section>"
re1.Global = False
re2.IgnoreCase = True

Set re2 = New RegExp
re2.Pattern = "(<br>|\s)+"
re2.Global = True
re2.IgnoreCase = True

For Each f In fso.GetFolder(root).Files
html = fso.OpenTextFile(filename).ReadAll

Set m = re1.Execute(html)
If m.Count > 0 Then
text = Trim(re2.Replace(m.SubMatches(0).Value, " "))
End If

WScript.Echo text
Next

关于vbscript - 提取 HTML 标签之间的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16629228/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com