Board logo

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

作者: 447219071    时间: 2023-5-28 09:06     标题: 【已解决】批处理如何提取网页指定内容?

本帖最后由 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; 管理员提供的及二楼高手提供的出错
作者: jyswjjgdwtdtj    时间: 2023-5-28 09:24

截取那几个字符之间的内容?
作者: 447219071    时间: 2023-5-28 09:39

回复 2# jyswjjgdwtdtj


  原下载的网页已完善关键字了
作者: jyswjjgdwtdtj    时间: 2023-5-28 09:45

回复 3# 447219071


    ……我学了一辈子中文 愣是没看懂你想表达什么
作者: 447219071    时间: 2023-5-28 10:18

回复 4# jyswjjgdwtdtj

下载网页,然后处理网页内的指定字符间的内容,但生成的网页中内容中连提取的内容中都含有各种网页代码符号,如空格符,断行符等
作者: Batcher    时间: 2023-5-28 12:05

回复 1# 447219071


试试这几个:
http://bcn.bathome.net/s/tool/index.html?key=HtoX32c
http://bcn.bathome.net/s/tool/index.html?key=html2text
http://bcn.bathome.net/s/tool/index.html?key=HTML2TXT
作者: jyswjjgdwtdtj    时间: 2023-5-28 14:49

哦 好像大概明白了
  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解决
作者: 447219071    时间: 2023-5-28 18:11

回复 7# jyswjjgdwtdtj


    运行此VBS提示第13行出错
作者: jyswjjgdwtdtj    时间: 2023-5-28 18:51

回复 8# 447219071


    啊 论坛是gbk的所以传回来的数据是一坨乱码
说说你实际需求 编码得要adodb.stream倒来倒去
作者: 447219071    时间: 2023-5-28 19:47

回复 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; 管理员提供的及二楼高手提供的出错

应该批处理可以解决
作者: jyswjjgdwtdtj    时间: 2023-5-28 21:03

回复 10# 447219071


    各种转义,br可烦了 字符串处理比较扯淡
用ps ps肯定有gbk2utf8的
作者: Batcher    时间: 2023-5-28 23:30

回复 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"
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2