标题: [文本处理] 批处理如何提取文本内超长网址? [打印本页]
作者: sky02 时间: 2012-5-21 13:11 标题: 批处理如何提取文本内超长网址?
因为要批量下载一些文件,一个一个的下载非常浪费时间,所以就想做个批处理提取网址批量下载,折磨很久了,遇到了两个问题,希望各位帮个忙,先谢谢了
1.要如何才能够获取文本内的超长网址,用FOR截取,总是不知用哪个符号作为分割符,
2.如何判断第二行是否包含 普通下载 这个字符串,如果不包含,就取消提取第一行网址- <table id="1124" class="ec_pp_f" border="0" cellpadding="0" cellspacing="0"><tr><td class="f EC_PP"><a id="aw2" onmousedown="return c({'fm':'pp','title':this.innerHTML,'url':this.href,'p1':1124})" href="http://www.***.net/video.php?url=S_TK00aWdwhxvN417g6SfAdRZ1-3WRC8qwT7GrYy_VIVri0xjROLC2tYjLNR-mGP61ne66B3ThdrYOC3hX1J9iroTgEN7KtqyDGNCIdr0A91iz-uhVk--E3B4L83.7Y_aAlWP7sC6uBhCs2N9h9mo3tUPB6.U1Y10ZDq_thvEPaV8_LiEIil0Zfq_thvEPxvznEKqasedrSlssKGUHYznWR0I1Y0u1dsTvwYn0KdpHdBmy-bIfKspyfqnW60mv-b5Hc1r0KVIjYs0AVG5H00TMfqQHD0ug9s5fK-pyfq0AdGujYs0AFG5H00Uynqn0KkTA-b5Hc30Z7WpyfqnWcv0ZFMIA7M5H00mLFW5HcdnjRv" target="_blank"><font size="3"><font color=#CC0000>internet</font>第一课font color=#CC0000>四川</font>;</font><br>
- <font size=-1 color="#008000">普通下载</font><font size=-1> - <a href="http://www.****.net/?id=1" target="_blank" class="m">四川电信</a></font></td></tr></table><br>
复制代码
作者: poter 时间: 2012-5-21 19:55
很难,即便能实现。代码也会很复杂
还不如直接用ctrl+f 来查找
作者: gawk 时间: 2012-5-21 21:39
用双引号作为分割符
作者: sky02 时间: 2012-5-22 16:51
回复 3# gawk
不行,你试试就知道了,里面有很多特殊符号
作者: andyrave 时间: 2012-5-22 17:03
搜索 geturls 第三方程序 很好用
作者: gawk 时间: 2012-5-22 17:22
回复 4# sky02
哪个特殊符号会影响双引号做列分隔符?
作者: CrLf 时间: 2012-5-22 17:28
网址中如果不存在 * 就好办多了
作者: sky02 时间: 2012-5-22 17:40
回复 7# CrLf
网址里面没有的,那个*是为了不显示外链做的屏蔽
作者: CrLf 时间: 2012-5-22 18:29
方案一,通过变量替换不断去除 href 关键词之前的内容,再以双引号为分隔符取地址,但需要预设固定的循环次数(此处为10),处理含有较多 href 的行时可能会漏:- @echo off
- for /f "delims=" %%a in ('findstr /ic:" href" a.txt') do (
- endlocal
- set str=%%a
- setlocal enabledelayedexpansion
- for %%b in (1 1 10) do (
- set str=!str:* herf=!
- for /f tokens^=2-3delims^=^": %%c in ("!str!") do (
- endlocal
- if /i %%c==http echo http:%%d
- setlocal enabledelayedexpansion
- )
- )
- )
- pause
复制代码
方案二,利用 = 为 for 默认分隔符的特性,将每行内容扔进 for 中直接循环并取地址,但不兼容网址含 * 的情况:- @echo off
- for /f "delims=" %%a in ('findstr /ic:" href" a.txt') do (
- set str=%%a
- setlocal enabledelayedexpansion
- for %%b in (!str:?^=\!) do (
- endlocal
- for /f "tokens=1* delims=:" %%c in ("%%~b") do (
- if /i %%c==http (
- set url=http:%%d
- setlocal enabledelayedexpansion
- echo !url:\=?!
- )
- )
- )
- )
- pause
复制代码
作者: sky02 时间: 2012-5-23 15:08
第一个问题解决了,第二个问题貌似比较棘手...
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |