标题: [文本处理] 【已解决】批处理如何提取网页指定内容? [打印本页]
作者: 447219071 时间: 2023-5-28 09:06 标题: 【已解决】批处理如何提取网页指定内容?
本帖最后由 447219071 于 2023-5-31 10:59 编辑
因为下载的网页http://www.bathome.net/thread-37147-1-1.html文件中有各种大量多余的代码,如何只提取指定字符之间的内容,关键字符 cpulink- @echo off
- wget "http://www.bathome.net/thread-37147-1-1.html" -q -O a.txt
- 提取批处理不会*******
-
- 最终提取上面的网页内容,关键字符CPULINK,想要生成的a.txt文档结果为
- http://v.qq.com/?chno=8888_139888
- http://www.baidu.com/?1000
- http://www.360.cn/?src=qq&ls=n4f12a8a094
- http://www.1234.com/?kq10000
复制代码
下载后的部分网页如下:
That's how it is 后悔来得太晚 明天 You're gone Cause that's how it is <br />
<cpulink><br />
http://v.qq.com/?chno=8888_139888<br />
http://www.baidu.com/?1000<br />
http://www.360.cn/?src=qq&ls=n4f12a8a094<br />
http://www.1234.com/?kq10000<br />
<cpulink></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
哦 好像大概明白了- 'vbscript code
- set http=createobject("msxml2.xmlhttp")
- function gethtml(url)
- http.open "GET",url,false
- http.send
- gethtml=http.responsetext
- end function
- set h=createobject("htmlfile")
- h.write gethtml("http://www.bathome.net/thread-37147-1-1.html")
- t=h.body.innerText
- set re=new regexp
- re.pattern=".*<cpulink>(.*)</cpulink>.*"
- 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 />
<cpulink><br />
http://v.qq.com/?chno=8888_139888<br />
http://www.baidu.com/?1000<br />
http://www.360.cn/?src=qq&ls=n4f12a8a094<br />
http://www.1234.com/?kq10000<br />
<cpulink></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- @echo off
- cd /d "%~dp0"
- setlocal enabledelayedexpansion
- wget "http://www.bathome.net/thread-37147-1-1.html" -q -O "a.txt"
- for /f "tokens=1* delims=:" %%i in ('type "a.txt" ^| findstr /n "cpulink"') do (
- call :GetText %%i
- exit /b
- )
-
- :GetText
- (for /f "skip=%1 delims=" %%i in ('type "a.txt"') do (
- set "ThisRow=%%i"
- if "!ThisRow:cpulink=!" equ "!ThisRow!" (
- set "ThisRow=!ThisRow:<br />=!"
- set "ThisRow=!ThisRow:amp;=!"
- echo,!ThisRow!
- ) else (
- exit /b
- )
- ))>"b.txt"
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |