求:把网页源文件中所有的尖括号"<>"里东西(含"<>"自身)直接全部给删掉,正则表达式代码怎么写?

xinrensheng 2011-02-12 01:59:17
高手们新年好!

我想写段程序把中国日报网页的新闻取下来保存为.txt文件到本地,学英语用.要把网页的html标记全部过滤掉,论坛里有位高手给的正则表达式(regEx.Pattern = "<p>(.*?)</p>")已经可以把大部分html标记过滤掉,但是不完全,还是会留下一些.

现在我想把网页源文件中所有的"<>"里面的东西(包括尖括号"<>"本身)直接全部给删掉,这样就基本可以把一些无关的东西去掉了.问下这样的话正则表达式代码要怎么写呢?

看了下正则的东西,太晕了,学不会.谢谢!
我现在的代码:
---------------------------------------
Inet1.Protocol = icHTTP
Text1.Text = Inet1.OpenURL("http://www.chinadaily.com.cn/latestnews2010.html")

Set regEx = CreateObject("VBScript.RegExp")
regEx.IgnoreCase = True
regEx.Global = True
regEx.Pattern = "<p>(.*?)</p>"
Set Matches = regEx.Execute(Text1.Text)
For Each Match In Matches
'Debug.Print Match.SubMatches(0) '逐个输出
Text2.Text = Text2.Text & Match.SubMatches(0) & vbCrLf
Next

Open App.Path & "\" & "chinadaily.txt" For Output As #1
Print #1, Text2
Close #1
-----------------------------------------
...全文
552 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinrensheng 2011-02-15
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 sysdzw 的回复:]
reg.Pattern = "Previous Page(.*?)|"改成
reg.Pattern = "Previous Page(.*?)\|"

原因:|在正则中是元字符,需要加\转义


黑色小方块可能是unix格式,windows下是换行回车可是你那文件可能是unix系统中的,所以就一个换行符。试试先将所有chr(10)替换成vbcrlf看看。
[/Quote]
高手,不好意思,一天没上网来。都没结贴。我一会儿先把贴结掉。
按照您的指点,段落回车的问题也完美解决了。
现在就还有一点:很奇怪,使用那个reg.Pattern = "<.*?>"之后,尖括号<>和它里面的内容,还是不能被全部彻底删除,比如附下的几段。我自己详细研究了下,它们好像都有个共性,就是里面都有那个斜杠“/”(第3例则是花括号“{”,比较特别)。不知道是不是这个也会跟正则的元字符冲突,导致正则表达式规定的pattern失效?如果是的话,要怎么才能把它们也删除呢?
谢谢!不好意思,麻烦了你好多了,您有空的时候帮我看下。感谢!
----------------1-----------------
Country trio Lady Antebellum and Canadian rock band Arcade Fire lit up the Grammy Awards on Sunday, winning key prizes in a ceremony packed with upset victories and a humiliating setback for Eminem.
<a href="china/2011-02/15/content_12008841.htm" class="white" target="_blank">After spending three years helping 59 trafficked children get their lives back, 29-year-old Zai Zai (not his real name) has said he hopes to get his back, too.
<a href="china/2011-02/15/content_12008719.htm" class="white" target="_blank">A recent circular of China's film and television watchdog to cut smoking scenes in films and TV dramas has received welcome from supporters of tobacco control.
--------------2-------
China's young lovers rushed to tie the knot on Monday on the auspicious date of Valentine's Day. <img src="http://www.chinadaily.com.cn/08image_e/dot_1.gif"/><a class="" title="" href="china/2011-02/15/content_12008776.htm" target="_blank">Desperate men learn new tricks <img src="http://www.chinadaily.com.cn/08image_e/dot_1.gif"/><a class="" title="" href="china/2011-02/15/content_12008799.htm" target="_blank">Lovebirds to change tune  <img src="http://www.chinadaily.com.cn/08image_e/dot_1.gif"/><a class="" title="" href="china/2011-02/15/content_12008759.htm" target="_blank">LGBT group's kissing plan cancelled
Two Thai F-16 jet fighters crashed on Monday during military exercises involving the United States and six other nations in Thailand's northeastern Chiang Mai province.
---------------3----------------------
<!--
function turnpage(page){ document.all("div_currpage").innerHTML = document.all("div_page_roll"+page).innerHTML;}
-->
Specials
---------------------------------------
xinrensheng 2011-02-15
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 vansoft 的回复:]
晕,要替换干嘛啊?直接保存为文本文件,不就什么都没有了。
[/Quote]
怎么做到?不解。网页的源文件里面全是html代码啊
vansoft 2011-02-14
  • 打赏
  • 举报
回复
晕,要替换干嘛啊?直接保存为文本文件,不就什么都没有了。
xinrensheng 2011-02-14
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 sysdzw 的回复:]
reg.Pattern = "Previous Page(.*?)|"改成
reg.Pattern = "Previous Page(.*?)\|"

原因:|在正则中是元字符,需要加\转义


黑色小方块可能是unix格式,windows下是换行回车可是你那文件可能是unix系统中的,所以就一个换行符。试试先将所有chr(10)替换成vbcrlf看看。
[/Quote]

非常感谢!!
无·法 2011-02-13
  • 打赏
  • 举报
回复
reg.Pattern = "Previous Page(.*?)|"改成
reg.Pattern = "Previous Page(.*?)\|"

原因:|在正则中是元字符,需要加\转义


黑色小方块可能是unix格式,windows下是换行回车可是你那文件可能是unix系统中的,所以就一个换行符。试试先将所有chr(10)替换成vbcrlf看看。
xinrensheng 2011-02-13
  • 打赏
  • 举报
回复
呀,太快了,忘了弄下格式。 这里怎么不能编辑自己的帖子了?
重发下:

后来我把保存下来的文件复制到mp3和手机里,发现回车是有的(而且多个!挺别扭),而在电脑上用notepad打开的时候这些段落回车全显示为黑光标。我也不知道怎么把它弄正常。
我打算用来坐车的时候MP3或者手机里看看的,它能分段,实在没办法的话只好勉强将就着看吧,期待有没哪位高手能出手下。
现代码如下:
-----------------------------------------------
Private Sub Form_Load()
Call TestReg
End Sub


Private Sub TestReg()
Dim strData As String
Dim reg As Object


strData = getHtmlStr("http://www.chinadaily.com.cn/latestnews2010.html")

Set reg = CreateObject("vbscript.regExp")
reg.Global = True
reg.IgnoreCase = True
reg.MultiLine = True
reg.Pattern = "<.*?>"
strData = reg.Replace(strData, "")

reg.Pattern = "Previous Page(.*?)|"
strData = reg.Replace(strData, "")‘照sysdzw的猫画虎,我想通过这两行代码把”Previous Page“和“|”之间(含它们自身)的字符全部删去,但是经试验失败,不知道要怎么写才对


strData = Replace(strData, "|<<   ", "")
strData = Replace(strData, "Previous Page", "")
strData = Replace(strData, "1 2 3 4 5 6 7 8 9 10 Next Page   >>|", "")
strData = Replace(strData, "  ", "")
strData = Replace(strData, "&", "")

Do Until InStr(strData, vbCrLf & vbCrLf) = 0
strData = Replace(strData, vbCrLf & vbCrLf, vbCrLf)
Loop’这个是设想通过循环把所有的两个回车替换为单个回车,把所有的多余的回车删除掉的,但是发现也不对,可能那些都不是vbcrlf


Open App.Path & "\ChinadailyLatest.txt" For Output As #1
Print #1, strData
Close #1
End Sub

Private Function getHtmlStr(strUrl As String) As String
Dim XmlHttp As Object
Set XmlHttp = CreateObject("Microsoft.XMLHTTP")
XmlHttp.Open "GET", strUrl, False
XmlHttp.send
getHtmlStr = StrConv(XmlHttp.ResponseBody, vbUnicode)
Set XmlHttp = Nothing
End Function
--------------------------------------
xinrensheng 2011-02-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 dbcontrols 的回复:]
改造完了贴出来俺学习学习
[/Quote]
后来我把保存下来的文件复制到mp3和手机里,发

现回车是有的(而且多个!挺别扭),而在电脑上

用notepad打开的时候这些段落回车全显示为黑光

标。我也不知道怎么把它弄正常。
我打算用来坐车的时候MP3或者手机里看看的,它

能分段,实在没办法的话只好勉强将就着看吧,期

待有没哪位高手能出手下。
现代码如下:
-----------------------------------------------
Private Sub Form_Load()
Call TestReg
End Sub


Private Sub TestReg()
Dim strData As String
Dim reg As Object


strData = getHtmlStr

("http://www.chinadaily.com.cn/latestne

ws2010.html")

Set reg = CreateObject

("vbscript.regExp")
reg.Global = True
reg.IgnoreCase = True
reg.MultiLine = True
reg.Pattern = "<.*?>"
strData = reg.Replace(strData, "")

reg.Pattern = "Previous Page(.*?)|"
strData = reg.Replace(strData, "")‘照猫画

虎,我想通过这两行代码把”Previous Page“和“|

”之间(含它们自身)的字符全部删去,但是经试验

失败,不知道要怎么写才对

strData = Replace(strData, "|

<<   ", "")
strData = Replace(strData, "Previous

Page", "")
strData = Replace(strData, "1 2 3 4 5 6

7 8 9 10 Next Page  

>>|", "")
strData = Replace(strData,

"  ", "")
strData = Replace(strData, "&", "")

Do Until InStr(strData, vbCrLf & vbCrLf) = 0
strData = Replace(strData, vbCrLf &

vbCrLf, vbCrLf)
Loop’这个是设想通过循环把所有的两个回车替换为

单个回车,把所有的多余的回车删除掉的,但是发

现也不对,可能那些都不是vbcrlf

Open App.Path & "\ChinadailyLatest.txt"

For Output As #1
Print #1, strData
Close #1
End Sub

Private Function getHtmlStr(strUrl As

String) As String
Dim XmlHttp As Object
Set XmlHttp = CreateObject

("Microsoft.XMLHTTP")
XmlHttp.Open "GET", strUrl, False
XmlHttp.send
getHtmlStr = StrConv

(XmlHttp.ResponseBody, vbUnicode)
Set XmlHttp = Nothing
End Function
--------------------------------------
dbcontrols 2011-02-12
  • 打赏
  • 举报
回复
改造完了贴出来俺学习学习
xinrensheng 2011-02-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sysdzw 的回复:]
引用 4 楼 xinrensheng 的回复:

引用 1 楼 sysdzw 的回复:
VB code
'This code was generated by "RegTestTool v1.1.30", please call the sub TestReg.
Private Sub TestReg()
Dim strData As String
Dim reg As Object……
[/Quote]
可以了,谢谢!段落间没有回车,我再试改造下,多谢!
无·法 2011-02-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xinrensheng 的回复:]

引用 1 楼 sysdzw 的回复:
VB code
'This code was generated by "RegTestTool v1.1.30", please call the sub TestReg.
Private Sub TestReg()
Dim strData As String
Dim reg As Object

strData = getHtmlStr("……
[/Quote]将
Debug.Print reg.Replace(strData, "")
改成
strData = reg.Replace(strData, "")
xinrensheng 2011-02-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xinrensheng 的回复:]
引用 1 楼 sysdzw 的回复:
VB code
'This code was generated by "RegTestTool v1.1.30", please call the sub TestReg.
Private Sub TestReg()
Dim strData As String
Dim reg As Object

strData = getHtmlStr("h……
[/Quote]
close #1那个地方误输了,前面回车
xinrensheng 2011-02-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sysdzw 的回复:]
VB code
'This code was generated by "RegTestTool v1.1.30", please call the sub TestReg.
Private Sub TestReg()
Dim strData As String
Dim reg As Object

strData = getHtmlStr("http://ww……
[/Quote]

不好意思,我要保存替换掉html标记后的文字的话,要怎么写呢?
我 Print #1, xxxxxxxxxxxxxxxx 这个地方xxxxxxxxxxxxxxxx应该写什么?才能是把删掉html标记后的文字保存了?写strData当然不是.谢谢!!
--------------------
Private Sub Form_Load()
Call TestReg
End Sub

'This code was generated by "RegTestTool v1.1.30", please call the sub TestReg.
Private Sub TestReg()
Dim strData As String
Dim txt As String
Dim reg As Object

strData = getHtmlStr("http://www.chinadaily.com.cn/latestnews2010.html")

Set reg = CreateObject("vbscript.regExp")
reg.Global = True
reg.IgnoreCase = True
reg.MultiLine = True
reg.Pattern = "<.*?>"
Debug.Print reg.Replace(strData, "")

Open App.Path & "\" & "chinadaily.txt" For Output As #1
Print #1, strDataClose #1
End Sub

Private Function getHtmlStr(strUrl As String) As String
Dim XmlHttp As Object
Set XmlHttp = CreateObject("Microsoft.XMLHTTP")
XmlHttp.Open "GET", strUrl, False
XmlHttp.send
getHtmlStr = StrConv(XmlHttp.ResponseBody, vbUnicode)
Set XmlHttp = Nothing
End Function
------------------------

xinrensheng 2011-02-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sysdzw 的回复:]
VB code
'This code was generated by "RegTestTool v1.1.30", please call the sub TestReg.
Private Sub TestReg()
Dim strData As String
Dim reg As Object

strData = getHtmlStr("http://ww……
[/Quote]
试下,多谢!
  • 打赏
  • 举报
回复
做个记号,以后再来翻阅
无·法 2011-02-12
  • 打赏
  • 举报
回复
'This code was generated by "RegTestTool v1.1.30", please call the sub TestReg.
Private Sub TestReg()
Dim strData As String
Dim reg As Object

strData = getHtmlStr("http://www.baidu.com/")

Set reg = CreateObject("vbscript.regExp")
reg.Global = True
reg.IgnoreCase = True
reg.MultiLine = True
reg.Pattern = "<.*?>"
Debug.Print reg.Replace(strData, "")
End Sub

Private Function getHtmlStr(strUrl As String) As String
Dim XmlHttp As Object
Set XmlHttp = CreateObject("Microsoft.XMLHTTP")
XmlHttp.Open "GET", strUrl, False
XmlHttp.send
getHtmlStr = StrConv(XmlHttp.ResponseBody, vbUnicode)
Set XmlHttp = Nothing
End Function

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧