Board logo

标题: [文本处理] 批处理怎么提取本地HTML文件的图片链接 [打印本页]

作者: zzz    时间: 2016-8-8 19:04     标题: 批处理怎么提取本地HTML文件的图片链接

本帖最后由 zzz 于 2016-8-8 19:10 编辑

如题,或者说,哪个第三方工具可以利用正则来提取链接?

比如 HTML 代码

<div><div><div><p><img align="absMiddle" src="https://img.alicdn.com/imgextra/i4/2622073366/TB2gT8ihXXXXXcnXXXXXXXXXXXX_!!2622073366.png" /></p><p><img align="absMiddle" src="https://img.alicdn.com/imgextra/i2/2622073366/TB27OA7gVXXXXbtXpXXXXXXXXXX_!!2622073366.jpg" /></p><p><img align="absMiddle" src="https://img.alicdn.com/imgextra/i4/2622073366/TB2hj4lhXXXXXbLXXXXXXXXXXXX_!!2622073366.jpg" /></p><p><img align="absMiddle" src="https://img.alicdn.com/imgextra/i1/2622073366/TB2Fn78gVXXXXasXpXXXXXXXXXX_!!2622073366.png" /></p><p><img align="absMiddle" height="493" src="https://img.alicdn.com/imgextra/i1/2622073366/TB2Z54xhXXXXXXtXXXXXXXXXXXX_!!2622073366.png" width="755" /></p>

提取出链接
  1. https://img.alicdn.com/imgextra/i4/2622073366/TB2gT8ihXXXXXcnXXXXXXXXXXXX_!!2622073366.png
  2. https://img.alicdn.com/imgextra/i1/2622073366/TB2Z54xhXXXXXXtXXXXXXXXXXXX_!!2622073366.png
复制代码
.....

HTML代码并没有被格式化,杂乱的代码
作者: pcl_test    时间: 2016-8-8 19:14

grep
http://www.bathome.net/s/tool/index.html
作者: zzz    时间: 2016-8-8 21:08

回复 2# pcl_test


    你在逗我?
作者: zzz    时间: 2016-8-8 21:17     标题: sed怎么提取html中的图片链接

比如<img src="http://www.baidu.com/d.jpg">

提取http://www.baidu.com/d.jpg
作者: wskwfkbdn    时间: 2016-8-8 22:06

本帖最后由 wskwfkbdn 于 2016-8-8 22:48 编辑

grep 只能匹配行,任何第三方都不能直接搞定,楼主还是考虑一下for的截取

推荐一种方法纯p实现  把引号用set替换成换行符,echo %%x|find /i "http"
作者: GNU    时间: 2016-8-8 22:19

回复 4# wskwfkbdn
  1. grep -Po "https://[^\"]+\.png" 1.html
复制代码
你也试试看
作者: GNU    时间: 2016-8-8 22:25

  1. sed "s#.* src=.\([^\"]\+\)\".*#\1#g" 1.html
复制代码

作者: zzz    时间: 2016-8-8 22:37

回复 7# GNU


    恩,thanks,但是只获取了一个图片链接。我想都获取到
作者: zzz    时间: 2016-8-8 22:38

回复 5# wskwfkbdn


    恩,我已经用纯批写出来了。但是由于for最多只能截取31个。头疼啊,一行代码过长的话,图片链接都不能全部获取到
作者: GNU    时间: 2016-8-8 22:42

回复 8# zzz


    6楼那个试过了吗?
作者: wskwfkbdn    时间: 2016-8-8 22:54

本帖最后由 wskwfkbdn 于 2016-8-8 22:55 编辑

回复 9# zzz


    修正回复内容晚了,我是想说

推荐一种方法纯p实现  把引号用set替换成换行符,echo 变量|findstr /i "^http"
作者: pcl_test    时间: 2016-8-9 00:03

本帖最后由 pcl_test 于 2016-8-9 08:51 编辑
  1. powershell -c "([regex]'https?://[^\"]+').Matches($(type '1.html'))^|%%{$_.Value}"
  2. pause
复制代码

作者: xxpinqz    时间: 2016-8-9 00:22

本帖最后由 xxpinqz 于 2016-8-9 00:24 编辑
  1. @echo off
  2. %1(for /f "delims=" %%a in ('%0 :^|findstr /bic:"https://"') do echo,%%a)&pause&exit /b
  3. for /f "delims=" %%a in ('findstr /ic:"https://" 1.html') do for %%b in (%%a) do echo,%%~b
复制代码

作者: pcl_test    时间: 2016-8-9 00:23

本帖最后由 pcl_test 于 2016-8-9 08:29 编辑
  1. mshta http://bathome.net/s/hta/ "type('1.html').match(/https?:\/\/[^\""]+/g).join('\r\n')"
  2. pause
复制代码

作者: zzz    时间: 2016-8-9 10:36

回复 6# GNU


    格式化的代码,用此命令正常。但是未格式化的代码,一个都匹配不出来
作者: zzz    时间: 2016-8-9 10:37

回复 11# wskwfkbdn


    换行符怎么表示来着?
作者: wskwfkbdn    时间: 2016-8-9 10:49

回复 16# zzz


   给你发送送短消息了,加我qq
作者: 523066680    时间: 2016-8-9 21:17

请付费 (哈哈哈哈哈)
作者: GNU    时间: 2016-8-9 22:05

回复 15# zzz


    找个测试文件压缩之后上传到顶楼
作者: wskwfkbdn    时间: 2016-8-9 22:57

我已经完美的搞定了,支持全角链接和半角链接,且无格式化正则匹配。
作者: hlzj88    时间: 2016-8-12 00:06

用sed 对关键词进行替换换行处理后,用findstr来提取含jpg的行。




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