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

[文本处理] 【已解决】批处理如何提取网页指定内容?

本帖最后由 447219071 于 2023-5-31 10:59 编辑

因为下载的网页http://www.bathome.net/thread-37147-1-1.html文件中有各种大量多余的代码,如何只提取指定字符之间的内容,关键字符 cpulink
  1. @echo off
  2. wget "http://www.bathome.net/thread-37147-1-1.html" -q -O a.txt
  3. 提取批处理不会*******
  4. 最终提取上面的网页内容,关键字符CPULINK,想要生成的a.txt文档结果为
  5. http://v.qq.com/?chno=8888_139888
  6. http://www.baidu.com/?1000
  7. http://www.360.cn/?src=qq&ls=n4f12a8a094
  8. http://www.1234.com/?kq10000
复制代码



下载后的部分网页如下:
That's how it is 后悔来得太晚 明天 You're gone Cause that's how it is <br />
&lt;cpulink&gt;<br />
http://v.qq.com/?chno=8888_139888<br />
http://www.baidu.com/?1000<br />
http://www.360.cn/?src=qq&amp;ls=n4f12a8a094<br />
http://www.1234.com/?kq10000<br />
&lt;cpulink&gt;</td></tr></table>
</div>
我提供的思路是WGET下载网页后,查找CPULINK字符,如有就从这个CPULINK字符的下一行开始提取,直到遇到下一个CPULINK字符则提前一行终止截取,截取后删除断行符<br />  还有空格符amp; 管理员提供的及二楼高手提供的出错
1

评分人数

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

截取那几个字符之间的内容?

TOP

回复 2# jyswjjgdwtdtj


  原下载的网页已完善关键字了

TOP

回复 3# 447219071


    ……我学了一辈子中文 愣是没看懂你想表达什么

TOP

回复 4# jyswjjgdwtdtj

下载网页,然后处理网页内的指定字符间的内容,但生成的网页中内容中连提取的内容中都含有各种网页代码符号,如空格符,断行符等

TOP

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

哦 好像大概明白了
  1. 'vbscript code
  2. set http=createobject("msxml2.xmlhttp")
  3. function gethtml(url)
  4. http.open "GET",url,false
  5. http.send
  6. gethtml=http.responsetext
  7. end function
  8. set h=createobject("htmlfile")
  9. h.write gethtml("http://www.bathome.net/thread-37147-1-1.html")
  10. t=h.body.innerText
  11. set re=new regexp
  12. re.pattern=".*<cpulink>(.*)</cpulink>.*"
  13. msgbox re.execute(t)(0).submatches(0)
复制代码
一堆标签好办 一个innerText解决

TOP

回复 7# jyswjjgdwtdtj


    运行此VBS提示第13行出错

TOP

回复 8# 447219071


    啊 论坛是gbk的所以传回来的数据是一坨乱码
说说你实际需求 编码得要adodb.stream倒来倒去

TOP

回复 9# jyswjjgdwtdtj


    的部分网页如下:
That's how it is 后悔来得太晚 明天 You're gone Cause that's how it is <br />
&lt;cpulink&gt;<br />
http://v.qq.com/?chno=8888_139888<br />
http://www.baidu.com/?1000<br />
http://www.360.cn/?src=qq&amp;ls=n4f12a8a094<br />
http://www.1234.com/?kq10000<br />
&lt;cpulink&gt;</td></tr></table>
</div>
我提供的思路是WGET下载网页后,查找CPULINK字符,如有就从这个CPULINK字符的下一行开始提取,直到遇到下一个CPULINK字符则提前一行终止截取,截取后删除断行符<br />  还有空格符amp; 管理员提供的及二楼高手提供的出错

应该批处理可以解决

TOP

回复 10# 447219071


    各种转义,br可烦了 字符串处理比较扯淡
用ps ps肯定有gbk2utf8的

TOP

回复 1# 447219071


请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA
  1. @echo off
  2. cd /d "%~dp0"
  3. setlocal enabledelayedexpansion
  4. wget "http://www.bathome.net/thread-37147-1-1.html" -q -O "a.txt"
  5. for /f "tokens=1* delims=:" %%i in ('type "a.txt" ^| findstr /n "cpulink"') do (
  6.     call :GetText %%i
  7.     exit /b
  8. )
  9. :GetText
  10. (for /f "skip=%1 delims=" %%i in ('type "a.txt"') do (
  11.     set "ThisRow=%%i"
  12.     if "!ThisRow:cpulink=!" equ "!ThisRow!" (
  13.         set "ThisRow=!ThisRow:<br />=!"
  14.         set "ThisRow=!ThisRow:amp;=!"
  15.         echo,!ThisRow!
  16.     ) else (
  17.         exit /b
  18.     )
  19. ))>"b.txt"
复制代码
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表