标题: [文本处理] [已解决]批处理如何提取网页中一对标签/标记符囊括起来的内容? [打印本页]
作者: lxningbat 时间: 2014-12-6 00:05 标题: [已解决]批处理如何提取网页中一对标签/标记符囊括起来的内容?
本帖最后由 pcl_test 于 2016-5-5 23:48 编辑
如有内容:
.....(省略).....">截取字段1</a><..(省略)..><...">截取字段2</a>.....(省略).....
怎么才能截取到内容:截取字段1 和 截取字段2 ?
特征就是 ">截取字段1</a>
使用for set 截好像不太现实,中间有太多个 < > 的符号。
请大神相助,谢谢。
作者: CrLf 时间: 2014-12-6 06:04
有没有跨行?单行长度会不会超过 8192 字符?
作者: DAIC 时间: 2014-12-6 10:44
把你的网页压缩一下传上来看看吧
作者: lxningbat 时间: 2014-12-6 16:40
回复 2# CrLf
没有跨行呢,也没有超最长行
作者: lxningbat 时间: 2014-12-6 16:49
回复 3# DAIC
已经获取要截取字符串的那一行了,那一行的格式就上面说的那样。
作者: CrLf 时间: 2014-12-6 19:50
举个栗子:- @echo off&setlocal enabledelayedexpansion
- set "str=.....(省略).....>截取字段1</a><..(省略)..><...>截取字段2</a>.....(省略)....."
- set lf=^
-
-
- for %%a in ("!lf!") do (
- set "tmpstr=!str:*截取字段1</a>=!"
- for /f "eol=* delims=" %%b in ("!tmpstr:>截取字段2</a>=%%~a*!") do echo %%b
- )
- pause
复制代码
作者: CrLf 时间: 2014-12-6 19:51
再举个栗子:- @echo off&setlocal enabledelayedexpansion
- set "str=.....(省略).....>截取字段1</a><..(省略)..><...>截取字段2</a>.....(省略)....."
-
- set "index=!str:*截取字段1</a>=!"
- set "length=!index:*>截取字段2</a>=!"
- echo !index!
- echo !length!
- call :strlen index index
- call :strlen length length
- echo !str:~-%index%,%length%!
- pause&exit /b
-
-
- :strlen <stringVarName> [retvar]
- :: 思路: 二分回溯联合查表法
- :: 说明: 所求字符串大小范围 0K ~ 8K;
- :: stringVarName ---- 存放字符串的变量名
- :: retvar ---- 接收字符长度的变量名
- setlocal enabledelayedexpansion
- set "$=!%1!#"
- set N=&for %%a in (4096 2048 1024 512 256 128 64 32 16)do if !$:~%%a!. NEQ . set/aN+=%%a&set $=!$:~%%a!
- set $=!$!fedcba9876543210&set/aN+=0x!$:~16,1!
- endlocal&If %2. neq . (set/a%2=%N%)else echo %N%
复制代码
作者: lxningbat 时间: 2014-12-9 14:26
回复 7# CrLf
谢谢 CrLf 的思路例子,已按照思路类似方法解决了。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |