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

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
-----------------------------------------
...全文
537 15 打赏 收藏 转发到动态 举报
写回复
用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
 【课程特色】从需分析到硬件设计再到软件开发全部都是在设计本课程时候真实同步进行的。比如元器件的选型、原理图的设计、PCB的下单生产,用我自购买的贴片机进行样板贴片的操作过程,代码部分框架如何搭建,驱动怎么编,NB-iot如何一步步连接到阿云云端,我把在公司开发物联网产品经验常碰到的问题点都融入到了这套课程当整个课程力让同学们能通过一个NB-IOT项目掌握同一类的物联网项目的开发,即便你以后使用其他型号NB-IOT模组或者实现其他功能同样知道该如何把一个大的项目划分成小的功能最后实现出来针对核心的内容我们会先给大家讲实现的思路,配套画出流程图,最后再对照流程图实现代码,而不至于面对一个复杂的项目迷失在代码的海洋找不到方向把STM32使用、Freertos的应用、阿云物联网平台的应用的知识都贯穿在整个项目进行在课程产生的每一个文档,每一张流程图,以及原理图PCB等设计的源文件全部开放给学员 【建议学习计划】1、建议一到两天学习一节,整个项目学习周期大概在两个月时间 2、除了看视频一定要动手实践,这样才能有最大的收获 3、在代码环节可以先模仿我们,之后可以再尝试自己,直到能把它理解透彻 4、遇到疑问点要学会首先使用搜索引擎,搜索引擎找不到答案的问题及时向我提问,我会给你解答【课程内容大纲】【提供完善的文档资料】 

1,502

社区成员

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

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