[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理怎么从html里面提取指定的字符串?

我本地有一大批html文本我想提取里面的<a href="456.htm">abc</a> 这个里面提取abc的值
可能是汉字数字或英文大小写怎么提取>*</a>
我用grep搞不好

还有就是我怎么从网络上的一个页面循环往下提取这样的值只到把这个网站里面所有的网页内容页上面的链接的标题全部获取了

[ 本帖最后由 xianxian 于 2011-1-18 17:36 编辑 ]
1

评分人数

    • hanyeguxing: 感谢给帖子标题标注[已解决]字样PB + 2

我在网上看见这个是获取图片和链接的不是获取标题的
http://zhidao.baidu.com/question/121045538.html
请问一下怎么改我用正则换不好

TOP

改标题。不然会被封的

http://www.bathome.net/viewthread.php?tid=963&page=1#pid4396  第4条
---学无止境---

TOP

上传一个样本看看。全部格式都一样的吗?
---学无止境---

TOP

样本

TOP

我标题怎么改? 不符合哪条版本规?

TOP

  1. '//把次vbs跟HTM文件放在一起运行
  2. Dim fso,fc,f,colMatches,match,re
  3. Set re=New RegExp
  4. re.Global=True
  5. re.IgnoreCase=True
  6. re.Pattern="[0-9]+"">(\w*|[\u4e00-\u9fa5]*|\w*[\u4e00-\u9fa5]*.*)</a>"
  7. Set fso=CreateObject("Scripting.FileSystemObject")
  8. Set fc=fso.GetFolder(".").Files
  9. For Each f In fc
  10.   If fso.GetExtensionName(f)="htm" Then
  11.     str=fso.OpenTextFile(f,1).ReadAll:fso.OpenTextFile(f,1).Close
  12.     Set colMatches=re.Execute(str)
  13.     For Each match In colMatches
  14.       txt=txt & re.Replace(match.Value,"$1") & vbcrlf
  15.     Next
  16.   End If
  17. Next
  18. Set f=fso.CreateTextFile(fso.GetFolder(".")&"\String.txt",True)
  19. f.Write txt
  20. f.Close
  21. MsgBox "保存在当前目录String.txt中",vbOKOnly+vbInformation,"提醒:"
复制代码

TOP

谢谢楼上的但vbs效率不高 有几万个页面我运行后都不知道要等到啥时间能不能用批处理获取链接地址然后获取这样他可以慢慢获取

TOP

那用第三方软件比较方便。现在有事先,晚点再回来写

TOP

回复 8楼 的帖子

刚才看了下,发现你的htm里面的要提取的文本只有一行的,这个用批处理提出太麻烦了(正则表达式不够强大,或许是我不会用···)。所以我开始选择写VBS,你将就将就。或者等高手吧,本人菜鸟
---学无止境---

TOP

sed 下载:http://bathome.net/attachment.php?aid=2265
  1. sed "/^<p>/!d; s/.*<\/p>//; s/<\/a><\/li>/\x0d\x0a/g;" *.htm | sed "s/<li>.*[0-9]\x22>//; s/<hr>//" >_li.txt
复制代码
你先试几个文件看能不能用。

[ 本帖最后由 tmplinshi 于 2011-1-16 13:56 编辑 ]

TOP

原帖由 tmplinshi 于 2011-1-15 21:40 发表
sed 下载:
http://sourceforge.net/projects/gnuwin32/files//sed/4.2.1/sed-4.2.1-bin.zip/download
http://gnuwin32.sourceforge.net/downlinks/sed-dep-zip.php
(把第二个链接里的 DLL 文件放到 sed.exe 目录 ...


sed 果然强大。没用过。

不过楼上的代码应该这样比较好

  1. sed "/^<p>/ !d; s/.*<\/p>//; s/<\/a><\/li>/\x0d\x0a/g;" *.htm | sed "s/<li>.*[0-9].>//; s/<hr>//"| more +1 >_li.txt
复制代码
---学无止境---

TOP

我的sed是这里下载的http://bathome.net/viewthread.php?tid=1114&page=1#pid5188
单文件版。可能11楼用的sed不一样,导致我在12楼加多了一点东西
---学无止境---

TOP

回复 13楼 的帖子

是的,sed 版本不同造成的

TOP

  1. sed "s/>/&\n/g" *.htm | sed "/<\/a/!d; s/<.*$//" > list.txt
复制代码
不知是不是这样?
1

评分人数

TOP

返回列表