标题: [文本处理] [已解决]批处理如何从网页代码中提取图片地址另存到文本? [打印本页]
作者: linjuming 时间: 2008-9-19 13:46 标题: [已解决]批处理如何从网页代码中提取图片地址另存到文本?
例如,原网页源代码如下:
- <TABLE cellSpacing=0 cellPadding=0 border=0>
- <TBODY>
- <TR></TR>
- <TR>
- <TD vAlign=top width=95 height=95>
- <TABLE cellSpacing=0 cellPadding=0 width=95 border=0>
- <TBODY>
- <TR>
- <TD vAlign=top align=middle width=75 height=95><A class=linkImg
- href="/phoinfo/EF23922CFD54D6216575A84D16CC9E8DDT/A636ACC2EDDA4F9C9C8FF0D515E4A5F4DS"><IMG
- class=photoBorder id=EF23922CFD54D6216575A84D16CC9E8DDT
-
- title=001 onmouseout=closedialog(event,this);
- src="http://photo1.bababian.com/upload13/20080919/EF23922CFD54D6216575A84D16CC9E8D_75.jpg"
- name=setphoto></A></TD>
- <TD style="FONT-SIZE: 12px; FONT-FAMILY: Arial, Helvetica, sans-serif"
- width=20> </TD></TR></TBODY></TABLE></TD>
- <TD vAlign=top width=95 height=95>
- <TABLE cellSpacing=0 cellPadding=0 width=95 border=0>
- <TBODY>
- <TR>
- <TD vAlign=top align=middle width=75 height=95><A class=linkImg
- href="/phoinfo/A66133862742F7EA832FAF9C4B11B43FDT/A636ACC2EDDA4F9C9C8FF0D515E4A5F4DS"><IMG
- class=photoBorder id=A66133862742F7EA832FAF9C4B11B43FDT
-
- title=002 onmouseout=closedialog(event,this);
- src="http://photo1.bababian.com/upload13/20080919/A66133862742F7EA832FAF9C4B11B43F_75.jpg"
- name=setphoto></A></TD>
- <TD style="FONT-SIZE: 12px; FONT-FAMILY: Arial, Helvetica, sans-serif"
- width=20> </TD></TR></TBODY></TABLE></TD>
- <TD vAlign=top width=95 height=95>
- <TABLE cellSpacing=0 cellPadding=0 width=95 border=0>
- <TBODY>
- <TR>
- <TD vAlign=top align=middle width=75 height=95><A class=linkImg
- href="/phoinfo/5AB4224E589EE3B6E5BED440EA1C5FD4DT/A636ACC2EDDA4F9C9C8FF0D515E4A5F4DS"><IMG
- class=photoBorder id=5AB4224E589EE3B6E5BED440EA1C5FD4DT
-
- title=003 onmouseout=closedialog(event,this);
- src="http://photo1.bababian.com/upload13/20080919/5AB4224E589EE3B6E5BED440EA1C5FD4_75.jpg"
- name=setphoto></A></TD>
- <TD style="FONT-SIZE: 12px; FONT-FAMILY: Arial, Helvetica, sans-serif"
- width=20> </TD></TR></TBODY></TABLE></TD>
- <TD vAlign=top width=95 height=95>
- <TABLE cellSpacing=0 cellPadding=0 width=95 border=0>
- <TBODY>
- <TR>
- <TD vAlign=top align=middle width=75 height=95><A class=linkImg
- href="/phoinfo/A760F4EC50162AEA524E3276B8DF2E95DT/A636ACC2EDDA4F9C9C8FF0D515E4A5F4DS"><IMG
- class=photoBorder id=A760F4EC50162AEA524E3276B8DF2E95DT
-
- title=004 onmouseout=closedialog(event,this);
- src="http://photo1.bababian.com/upload13/20080919/A760F4EC50162AEA524E3276B8DF2E95_75.jpg"
- name=setphoto></A></TD>
- <TD style="FONT-SIZE: 12px; FONT-FAMILY: Arial, Helvetica, sans-serif"
- width=20> </TD></TR></TBODY></TABLE></TD>
- <TD vAlign=top width=95 height=95>
- <TABLE cellSpacing=0 cellPadding=0 width=95 border=0>
- <TBODY>
- <TR>
- <TD vAlign=top align=middle width=75 height=95><A class=linkImg
- href="/phoinfo/EFCC42B5A9F5D315AFD37ACE66B70247DT/A636ACC2EDDA4F9C9C8FF0D515E4A5F4DS"><IMG
- class=photoBorder id=EFCC42B5A9F5D315AFD37ACE66B70247DT
-
- title=005 onmouseout=closedialog(event,this);
- src="http://photo1.bababian.com/upload13/20080919/EFCC42B5A9F5D315AFD37ACE66B70247_75.jpg"
- name=setphoto></A></TD></TR></TBODY></TABLE></TD>
- <TR></TR>
- <TR>
- <TD vAlign=top width=95 height=95>
- <TABLE cellSpacing=0 cellPadding=0 width=95 border=0>
- <TBODY>
- <TR>
- <TD vAlign=top align=middle width=75 height=95><A class=linkImg
- href="/phoinfo/1A4F387882E90149942754220858D67ADT/A636ACC2EDDA4F9C9C8FF0D515E4A5F4DS"><IMG
- class=photoBorder id=1A4F387882E90149942754220858D67ADT
-
- title=006 onmouseout=closedialog(event,this);
- src="http://photo1.bababian.com/upload13/20080919/1A4F387882E90149942754220858D67A_75.jpg"
- name=setphoto></A></TD>
- <TD style="FONT-SIZE: 12px; FONT-FAMILY: Arial, Helvetica, sans-serif"
- width=20> </TD></TR></TBODY></TABLE></TD>
- <TD vAlign=top width=95 height=95>
- <TABLE cellSpacing=0 cellPadding=0 width=95 border=0>
- <TBODY>
- <TR>
- <TD vAlign=top align=middle width=75 height=95><A class=linkImg
- href="/phoinfo/159199B9EC7DCF2218011DC9515AA70ADT/A636ACC2EDDA4F9C9C8FF0D515E4A5F4DS"><IMG
- class=photoBorder id=159199B9EC7DCF2218011DC9515AA70ADT
-
- title=007 onmouseout=closedialog(event,this);
- src="http://photo1.bababian.com/upload13/20080919/159199B9EC7DCF2218011DC9515AA70A_75.jpg"
- name=setphoto></A></TD>
- <TD style="FONT-SIZE: 12px; FONT-FAMILY: Arial, Helvetica, sans-serif"
- width=20> </TD></TR></TBODY></TABLE></TD>
- <TD vAlign=top width=95 height=95>
- <TABLE cellSpacing=0 cellPadding=0 width=95 border=0>
- <TBODY>
- <TR>
- <TD vAlign=top align=middle width=75 height=95><A class=linkImg
- href="/phoinfo/8CFF33CD16EE371998F35178D5D5A215DT/A636ACC2EDDA4F9C9C8FF0D515E4A5F4DS"><IMG
- class=photoBorder id=8CFF33CD16EE371998F35178D5D5A215DT
-
- title=008 onmouseout=closedialog(event,this);
- src="http://photo1.bababian.com/upload13/20080919/8CFF33CD16EE371998F35178D5D5A215_75.jpg"
复制代码
我想提取其中的图片地址提取出来输出到一个txt文件中去,结果如下
- http://photo1.bababian.com/upload13/20080919/EF23922CFD54D6216575A84D16CC9E8D_75.jpg
- http://photo1.bababian.com/upload13/20080919/A66133862742F7EA832FAF9C4B11B43F_75.jpg
- http://photo1.bababian.com/upload13/20080919/5AB4224E589EE3B6E5BED440EA1C5FD4_75.jpg
- http://photo1.bababian.com/upload13/20080919/A760F4EC50162AEA524E3276B8DF2E95_75.jpg
- http://photo1.bababian.com/upload13/20080919/EFCC42B5A9F5D315AFD37ACE66B70247_75.jpg
- http://photo1.bababian.com/upload13/20080919/1A4F387882E90149942754220858D67A_75.jpg
- http://photo1.bababian.com/upload13/20080919/159199B9EC7DCF2218011DC9515AA70A_75.jpg
- .......
复制代码
请问高手怎么写?我不太会批处理。
作者: namejm 时间: 2008-9-19 14:12
观察网页代码,发现图片地址都是保存在以src=打头的行中,这样的话,只需要提取以src=打头的行,然后,再切分一下就可以了(假设网页代码保存在test.html文件中):- @echo off
- cd.>list.txt
- for /f "delims== tokens=1*" %%i in ('findstr /b /i "src=" test.html 2^>nul') do (
- set "str=%%j"
- setlocal enabledelayedexpansion
- set str=!str:"=!
- echo !str!>>list.txt
- endlocal
- )
- start list.txt
复制代码
作者: linjuming 时间: 2008-9-19 14:33
管理员哥哥,好像不行啊
是不是把网页源代码保存为list.txt,再做一个bat程序,里面粘贴你的程序代码。
list.txt 和 bat 文件放在同一个文件夹下面,运行bat就得到结果。
我的理解正确吗?
我按照上面的操作得到的list.txt 是空白文档,请问是什么问题呢?
作者: linjuming 时间: 2008-9-19 14:35
不好意思,看错了,应该保存在test.html 里面才对
作者: linjuming 时间: 2008-9-19 14:38
果然好用,谢谢管理员哥哥了。
作者: linjuming 时间: 2008-9-20 13:53 标题: 如何从网页代码中提取图片地址另存到文本 2
昨天管理员先生给了个图片链接提取的批处理代码给我,确实很好用,在此再次向管理员先生深深表示感谢。
我现在还想就扩展一下这个bat的功能,希望管理员先生能帮我再修正一下。或者其他高手如果愿意,也请显露一下身手,谢谢。
我要求的是:
从几个下载下来的网页文件提取所有网页文件中的源代码中的图片链接(我是用来做外链图片的),统一写入一个txt文件里面。
效果如下:从我上传的附件提取里面的图片地址链接,然后写入一个list.txt文件中。
list.txt里面的内容举例如下显示:
1.html 中的图片
http://photo1.bababian.com/upload13/20080919/EF23922CFD54D6216575A84D16CC9E8D_75.jpg
http://photo1.bababian.com/upload13/20080919/A66133862742F7EA832FAF9C4B11B43F_75.jpg
http://photo1.bababian.com/upload13/20080919/5AB4224E589EE3B6E5BED440EA1C5FD4_75.jpg
http://photo1.bababian.com/upload13/20080919/5AB4224E589EE3B6E5BED440EA1C5FD4_75.jpg
.........
2.html 中的图片
[quote]http://photo1.bababian.com/upload13/20080919/EF23922CFD54D6216575A84D16CC9E8D_75.jpg
http://photo1.bababian.com/upload13/20080919/A66133862742F7EA832FAF9C4B11B43F_75.jpg
http://photo1.bababian.com/upload13/20080919/5AB4224E589EE3B6E5BED440EA1C5FD4_75.jpg
.........
3.html 中的图片
[quote]http://photo1.bababian.com/upload13/20080919/EF23922CFD54D6216575A84D16CC9E8D_75.jpg
http://photo1.bababian.com/upload13/20080919/A66133862742F7EA832FAF9C4B11B43F_75.jpg
http://photo1.bababian.com/upload13/20080919/5AB4224E589EE3B6E5BED440EA1C5FD4_75.jpg
.........
4.html 中的图片
http://photo1.bababian.com/upload13/20080919/EF23922CFD54D6216575A84D16CC9E8D_75.jpg
http://photo1.bababian.com/upload13/20080919/A66133862742F7EA832FAF9C4B11B43F_75.jpg
http://photo1.bababian.com/upload13/20080919/5AB4224E589EE3B6E5BED440EA1C5FD4_75.jpg
.........
5.html 中的图片
http://photo1.bababian.com/upload13/20080919/EF23922CFD54D6216575A84D16CC9E8D_75.jpg
http://photo1.bababian.com/upload13/20080919/A66133862742F7EA832FAF9C4B11B43F_75.jpg
http://photo1.bababian.com/upload13/20080919/5AB4224E589EE3B6E5BED440EA1C5FD4_75.jpg
.........
有瑕疵不要紧,只要能提取到链接然后输出到list.txt上面去就行了,希望管理员先生再帮一次忙,谢谢。
作者: Batcher 时间: 2008-9-20 14:26 标题: 回复 6楼 的帖子
把2楼的代码中test.html改成*.html
作者: namejm 时间: 2008-9-20 14:31
6楼的网页代码和顶楼的网页代码格式已经大不一样,正在研究中。
作者: namejm 时间: 2008-9-20 14:50
解决6楼问题的代码如下:- @echo off
- cd.>list.txt
- for %%i in (*.htm) do (
- (echo.&echo %%i 中的图片&echo.)>>list.txt
- for /f "delims=" %%j in ('findstr /i "src=.*http://.*\.jpg" %%i 2^>nul') do (
- set "str=%%j"
- setlocal enabledelayedexpansion
- set str=!str:"=!
- set str=!str:*src=!
- for /f "delims==> " %%k in ("!str!") do echo %%k>>list.txt
- endlocal
- )
- )
- start list.txt
复制代码
发现网页中存在一些不带网址、只有相对路径的jpg文件,不知道你是否需要,如果需要的话,把第二个for语句中findstr里的 .*http:// 字符串去掉即可。
作者: linjuming 时间: 2008-9-20 15:47
我要的就是这样的效果,太完美了,谢谢管理员大哥。
作者: linjuming 时间: 2008-10-4 16:02
管理员大哥,我博客上(http://highlove.blogbus.com)所有的图片都是用你给我的批处理程序处理图片外链的,确实省了我不少麻烦。
但那个批处理还有一点点瑕疵,就是提取出来的链接前面2个和后面3个我是不需要的,能否再帮我修正一下?我的博客是个图片博客,量多了麻烦也就多了,所以能快就快。谢谢
结果中的红色部分是不需要的,附件为rar文件。
251.htm 中的图片
http://myicon.poco.cn/4609/46093729_64.jpg?226271122
'http://image211.poco.cn/mypoco/myphoto/20081004/14/46093729200810041436233678101103548_013_120.jpg'
http://image211.poco.cn/mypoco/myphoto/20081004/14/46093729200810041436233678101103548_000_165.jpg
http://image211.poco.cn/mypoco/myphoto/20081004/14/46093729200810041436233678101103548_001_165.jpg
http://image211.poco.cn/mypoco/myphoto/20081004/14/46093729200810041436233678101103548_002_165.jpg
http://image211.poco.cn/mypoco/myphoto/20081004/14/46093729200810041436233678101103548_003_165.jpg
http://image211.poco.cn/mypoco/myphoto/20081004/14/46093729200810041436233678101103548_004_165.jpg
http://image211.poco.cn/mypoco/myphoto/20081004/14/46093729200810041436233678101103548_005_165.jpg
http://image211.poco.cn/mypoco/myphoto/20081004/14/46093729200810041436233678101103548_006_165.jpg
http://image211.poco.cn/mypoco/myphoto/20081004/14/46093729200810041436233678101103548_007_165.jpg
http://image211.poco.cn/mypoco/myphoto/20081004/14/46093729200810041436233678101103548_008_165.jpg
http://image211.poco.cn/mypoco/myphoto/20081004/14/46093729200810041436233678101103548_009_165.jpg
http://image211.poco.cn/mypoco/myphoto/20081004/14/46093729200810041436233678101103548_010_165.jpg
http://image211.poco.cn/mypoco/myphoto/20081004/14/46093729200810041436233678101103548_011_165.jpg
http://image211.poco.cn/mypoco/myphoto/20081004/14/46093729200810041436233678101103548_012_165.jpg
http://image211.poco.cn/mypoco/myphoto/20081004/14/46093729200810041436233678101103548_013_165.jpg
'http://image211.poco.cn/mypoco/myphoto/20081004/15/46093729200810041506102852951037623_024_120.jpg'
'http://image211.poco.cn/mypoco/myphoto/20081004/15/46093729200810041505002748918257129_014_120.jpg'
'http://image211.poco.cn/mypoco/myphoto/20081004/15/46093729200810041504357323631110317_019_120.jpg'
作者: namejm 时间: 2008-10-4 21:13
在9楼代码的基础上,再过滤掉单引号和问号就可以了:- @echo off
- cd.>list.txt
- for %%i in (*.htm) do (
- (echo.&echo %%i 中的图片&echo.)>>list.txt
- for /f "delims=" %%j in ('findstr /i "src=.*http://.*\.jpg" %%i 2^>nul') do (
- set "str=%%j"
- setlocal enabledelayedexpansion
- set str=!str:"=!
- set str=!str:*src=!
- for /f "delims==>'? " %%k in ("!str!") do echo %%k>>list.txt
- endlocal
- )
- )
- start list.txt
复制代码
作者: linjuming 时间: 2008-10-4 23:13
管理员大哥你误会了,我的意思是吧红色部分全部删除掉不要
作者: namejm 时间: 2008-10-4 23:43
本以为你是觉得URL中含有问号和单引号而弃之不用,就帮你过滤了一下,原来你的本意是完全不用那些图片。那就把这些过滤掉吧,不过效率十分低下:- @echo off
- cd.>list.txt
- for %%i in (*.htm) do (
- (echo.&echo %%i 中的图片&echo.)>>list.txt
- for /f "delims=" %%j in ('findstr /i "src=.*http://.*\.jpg" %%i 2^>nul') do (
- set "str=%%j"
- setlocal enabledelayedexpansion
- set str=!str:"=!
- set str=!str:*src=!
- for /f "delims==> " %%k in ("!str!") do (
- echo %%k|findstr /v "' ?">>list.txt
- )
- endlocal
- )
- )
- start list.txt
复制代码
作者: namejm 时间: 2008-10-4 23:46
再来个效率大为提升的代码:- @echo off
- cd.>list.txt
- for %%i in (*.htm) do (
- (echo.&echo %%i 中的图片&echo.)>>list.txt
- for /f "delims=" %%j in ('findstr /i "src=.*http://.*\.jpg" %%i 2^>nul') do (
- set "str=%%j"
- setlocal enabledelayedexpansion
- set str=!str:"=!
- set str=!str:*src=!
- for /f "delims==> " %%k in ("!str!") do (
- if /i "%%~xk"==".jpg" echo %%k>>list.txt
- )
- endlocal
- )
- )
- start list.txt
复制代码
作者: linjuming 时间: 2008-10-5 14:00
哇,这次的改良版bat运算速度超快啊,准确率百分百,可以给个极品代号了。
再次感谢管理员大哥的帮忙!
作者: pusofalse 时间: 2008-10-5 16:55
- @(type 251.htm|wfr /r:"(.*src\=\"^|\"\s.*)" /t|findstr "^http.*\.jpg$">list.txt)&&start list.txt
复制代码
需要WFR.EXE:http://bbs.bathome.net/thread-1909-1-1.html
[ 本帖最后由 pusofalse 于 2008-10-5 17:53 编辑 ]
作者: lzwudi 时间: 2008-10-6 23:27
从上面看来,管理员真的太不容易了,虽然我提的问题少,也没有学习到什么,我还是由衷的感谢各位管理员和热心帮助他人的老师们,祝你们平安快乐!!
帮助别人是快乐吧?
被人帮助是幸福吧?
作者: linjuming 时间: 2008-10-17 10:09
请问poso版主那个wrf.exe怎么使用?下载下来放在哪里才能作用?
我把你的wrf.exe放在网页文件和批处理文件同一个文件夹下,运行批处理出现“找不到结果”
作者: pusofalse 时间: 2008-10-17 18:51
wfr.exe、网页文件、批处理 放在同一目录下运行,没理由不行啊。- @(type 251.htm|wfr /r:"(.*src\=\"^|\"\s.*)" /t|findstr "^http.*\.jpg$">list.txt)&&start list.txt
复制代码
把这里的251.htm改为你的网页文件的名字。
作者: haseky 时间: 2013-6-6 15:58
请问如果楼主的代码是杂乱的,如何提取其中的图片地址?
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |