找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 21984|回复: 11

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

[复制链接]
发表于 2023-5-28 09:06:36 | 显示全部楼层 |阅读模式
本帖最后由 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; 管理员提供的及二楼高手提供的出错

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2023-5-28 09:24:50 | 显示全部楼层
截取那几个字符之间的内容?
 楼主| 发表于 2023-5-28 09:39:18 | 显示全部楼层
回复 2# jyswjjgdwtdtj


  原下载的网页已完善关键字了
发表于 2023-5-28 09:45:35 | 显示全部楼层
回复 3# 447219071


    ……我学了一辈子中文 愣是没看懂你想表达什么
 楼主| 发表于 2023-5-28 10:18:24 | 显示全部楼层
回复 4# jyswjjgdwtdtj

下载网页,然后处理网页内的指定字符间的内容,但生成的网页中内容中连提取的内容中都含有各种网页代码符号,如空格符,断行符等
发表于 2023-5-28 12:05:01 | 显示全部楼层
发表于 2023-5-28 14:49:53 | 显示全部楼层
哦 好像大概明白了

  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解决
 楼主| 发表于 2023-5-28 18:11:39 | 显示全部楼层
回复 7# jyswjjgdwtdtj


    运行此VBS提示第13行出错
发表于 2023-5-28 18:51:51 | 显示全部楼层
回复 8# 447219071


    啊 论坛是gbk的所以传回来的数据是一坨乱码
说说你实际需求 编码得要adodb.stream倒来倒去
 楼主| 发表于 2023-5-28 19:47:33 | 显示全部楼层
回复 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; 管理员提供的及二楼高手提供的出错

应该批处理可以解决
发表于 2023-5-28 21:03:57 | 显示全部楼层
回复 10# 447219071


    各种转义,br可烦了 字符串处理比较扯淡
用ps ps肯定有gbk2utf8的
发表于 2023-5-28 23:30:54 | 显示全部楼层
回复 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技术 +1 收起 理由
447219071 + 1 老大牛

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 18:34 , Processed in 0.021311 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表