中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助,如何在网页源文件中提取图片地址?
作者:
标题: 求助,如何在网页源文件中提取图片地址? 上一主题 | 下一主题
tianzizhi
高级用户




积分 622
发帖 214
注册 2006-9-22
状态 离线
『楼 主』:  求助,如何在网页源文件中提取图片地址?

我想从下面的网页源文件中把所有图片的地址提取出来放到一文件tu.txt里.一行个地址,如:
http://www.pcpop.com/pp/images/pp4_r3_c3.gif
http://www.pcpop.com/pp/images/pp4_r3_c3.gif
http://www.pcpop.com/pp/images/pp4_r3_c3.gif
,图片类型为jpg,gif,图片链接在源文件里无固定位置的.只提取http开头的完整的图片地址.
网页源文件下载:
p.txt.
你也可以随便找个有图片的网页把它的源文件拿来试验,不要vbs版的.
网页源文件一部分为:
<TR align=middle>
<TD align=left width=306>
<TABLE cellSpacing=0 cellPadding=0 width="99%" border=0>
<TBODY>
<TR>
<TD width="7%"><IMG height=25 src="http://www.pcpop.com/pp/images/pp4_r3_c3.gif" width=21 border=0></TD>
<TD vAlign=bottom width="90%" background=images/pp4_r3_c10.gif>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=ffffff_14 align=left height=22><STRONG><A class=ffffff_14 title=美女风情 href="http://www.pcpop.com/pp/t007400212_12512_1.html" target=_blank>美女风情</A></STRONG></TD></TR></TBODY></TABLE></TD>
<TD width="3%"><A href="http://www.pcpop.com/pp/t007400212_12512_1.html" target=_blank><IMG height=25 src="http://www.pcpop.com/pp/images/pp4_r3_c12.gif" width=51 border=0></A></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="99%" border=0>
<TBODY>
<TR>
<TD height=1></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="99%" border=0>
<TBODY>
<TR>
<TD bgColor=#ffffff height=2></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="99%" border=0>
<TBODY>
<TR>
<TD align=middle bgColor=#f2f2f2>
<TABLE cellSpacing=0 cellPadding=0 width=101 border=0>
<TBODY>
<TR>
<TD vAlign=top align=middle width=101 background=images/pp1_6.jpg height=132>
<TABLE cellSpacing=0 cellPadding=0 width=20 border=0>
<TBODY>
<TR>
<TD height=4></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD align=right><A href="http://union.soqii.com/page/01/" target=_blank><IMG height=120 src="http://img2.pcpop.com/ArticleImages/0x0/0/386/000386225.jpg" width=90 border=0></A></TD>
<TD width=6></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD align=middle bgColor=#ffffff height=40><A class=x434343 href="http://union.soqii.com/page/01/" target=_blank>即将发生的诱惑</A><BR><A class=x434343 href="http://union.soqii.com/page/01/" target=_blank>(632P)</A></TD></TR></TBODY></TABLE></TD>
<TD width=20 background=images/pp3_4.gif>&nbsp;</TD>
<TD align=middle bgColor=#f2f2f2>
<TABLE cellSpacing=0 cellPadding=0 width=101 border=0>
<TBODY>
<TR>
<TD vAlign=top align=middle width=101 background=images/pp1_6.jpg height=132>
<TABLE cellSpacing=0 cellPadding=0 width=20 border=0>
<TBODY>
<TR>
<TD height=4></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD align=right><A href="http://www.huzhai.com/bbs/" target=_blank><IMG height=120 src="http://img2.pcpop.com/ArticleImages/0x0/0/332/000332157.jpg" width=90 border=0></A></TD>
<TD width=6></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD align=middle bgColor=#ffffff height=40><A class=x434343 href="http://www.huzhai.com/bbs/" target=_blank>偷拍对面楼里的</A><BR><A class=x434343 href="http://www.huzhai.com/bbs/" target=_blank>(354P)</A></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="99%" border=0>
<TBODY>
<TR>
<TD height=2></TD></TR></TBODY></TABLE></TD>
<TD align=right width=306>
<TABLE cellSpacing=0 cellPadding=0 width="99%" border=0>
<TBODY>
<TR>
<TD width="7%"><IMG height=25 src="http://www.pcpop.com/pp/images/pp4_r3_c3.gif" width=21 border=0></TD>
<TD vAlign=bottom width="90%" background=images/pp4_r3_c10.gif>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=ffffff_14 align=left height=22><STRONG><A class=ffffff_14 title=婷婷玉立 href="http://www.pcpop.com/pp/t007400212_11894_1.html" target=_blank>婷婷玉立</A></STRONG></TD></TR></TBODY></TABLE></TD>
<TD width="3%"><A href="http://www.pcpop.com/pp/t007400212_11894_1.html" target=_blank><IMG height=25 src="http://www.pcpop.com/pp/images/pp4_r3_c12.gif" width=51 border=0></A></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="99%" border=0>
<TBODY>
<TR>

[ Last edited by tianzizhi on 2007-1-22 at 06:44 AM ]



QQ:419503077
2007-1-22 06:35
查看资料  发送邮件  发短消息 网志  OICQ (419503077)  编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  


  这个利用sed的正则匹配应该比较好解决。


2007-1-22 06:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 3 楼』:  

  贴一段纯批处理的代码出来:
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('findstr "http://.*gif" test.txt') do (
    set "var=%%i"
    set "var=!var: src=☆!"
    set "var=!var:.gif"=☆!"
    set "var=!var:*☆=!"
    for /f "tokens=1 delims==☆" %%j in ("!var!") do echo %%~j.gif
)
pause




尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2007-1-22 07:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 4 楼』:  

html标记语言貌似对行要求放的很松,也就是所有的代码可以写在同一行上面,同一行出现两个用scr=引导的图片地址也不为奇,这时namejm的代码好像只能找到第一个吧
对网页的语言了解不多,不知有没有记错……

2007-1-22 07:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tianzizhi
高级用户




积分 622
发帖 214
注册 2006-9-22
状态 离线
『第 5 楼』:  

thanks very much!!!!



QQ:419503077
2007-1-22 07:44
查看资料  发送邮件  发短消息 网志  OICQ (419503077)  编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 6 楼』:  

sed "/http/s/.*\(http:\/\/.*\.gif\).*/\1/;/^http:/!d" test.txt

2007-1-22 08:15
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 7 楼』:  

  若同一行上可能存在几个gif链接,那就使用下面的代码吧(为了兼容连接符&,结果添加了引号,仍然会过滤掉感叹):
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('findstr "http://.*gif" test.txt') do (
    set "var=%%i"
    set "var=!var:"=!"
    set "var=!var: src=☆!"
    set "var=!var:.gif=★!"
    call :pick-up "!var!"
)
pause
goto :eof

:pick-up
set "var=%var:*☆=%"
for /f "tokens=1 delims==★" %%j in ("%var%") do echo "%%j.gif"
set "str_tmp=%var:☆=%"
if not "%str_tmp%"=="%var%" goto pick-up
goto :eof




尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2007-1-22 08:43
查看资料  发短消息 网志   编辑帖子  回复  引用回复
amao
中级用户





积分 316
发帖 152
注册 2006-6-18
状态 离线
『第 8 楼』:  

注意到楼主这句话-------图片类型为jpg,gif

@sed "/jpg\|gif/!d;s/.*src=\x22\([^\x22]*\)\x22.*/\1/;/^http/!d" p.txt> temp.txt

基于GNU sed 4.1.4

[ Last edited by amao on 2007-2-4 at 10:59 AM ]

2007-2-4 00:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
minmin888
初级用户





积分 127
发帖 62
注册 2007-4-19
状态 离线
『第 9 楼』:  

学到东西! '<'并没有处理好

2007-5-8 11:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: