标题: [文本处理] [已解决]批处理怎样获取链接的地址? [打印本页]
作者: QIAOXINGXING 时间: 2012-2-24 18:19 标题: [已解决]批处理怎样获取链接的地址?
本帖最后由 QIAOXINGXING 于 2012-2-24 22:09 编辑
打开网站 http://www.4q8q.com/gaoxiaoqianming/ 可以看到:
国外:思想和才能才是王道,国内:关系和马屁才能横行 2012-02-24
用你的笑容去改变这个世界,别让这个世界改变了你的笑容 2012-02-24
人生的悲惨在于:辛辛苦苦的作了一晚上内容香艳的美梦,第二天早 2012-02-24
qq搞笑个性签名:想当年,顶风尿十丈;叹如今,顺风尿湿鞋 2012-02-23
下面我来采访一下你:作为一名禽兽,你是否觉得你的压力很大 2012-02-23
等等....................................
如何获取标题对应的链接地址,并与后面的日期相对应??
也就是形成一个文本,内容是:
http://www.4q8q.com/gaoxiaoqianming/20124275.html 2012-02-24
http://www.4q8q.com/gaoxiaoqianming/20124274.html 2012-02-24
等等..........................................
我现在碰到的问题是:获取了网页源码后,无法用批处理将有用信息提取出来。
作者: namejm 时间: 2012-2-24 20:38
- @echo off
- gsed -rn "/<div class=\x22wrap\x22>/{n;n;n;:a;s/(\/gaoxiaoqianming\/[0-9]{1,}\.html)[^<]+<\/a>([0-9]{4}-[0-9]{2}-[0-9]{2})(.*)/\3|\1\t\2/;ta;s/[^|]+|//;s#\|#\r\nhttp://www.4q8q.com#g;p}" 1.html>1.txt
- start 1.txt
复制代码
gsed下载地址:http://bbs.bathome.net/thread-13353-1-1.html
作者: find 时间: 2012-2-24 21:02
- sed "s/<\/li>/\n/g" a.htm | sed "/-[0-2][0-9]$/!d; s/<li><a href=./http:\/\/www.4q8q.com/; s/. title.*>/ /" >a.txt
复制代码
作者: namejm 时间: 2012-2-24 21:45
3楼先分行再过滤,思路更容易理解,不像我在2楼那样绕来绕去,高明。
作者: terse 时间: 2012-2-24 22:51
来个纯P 凑热闹了- @echo off&Setlocal EnableDelayedExpansion
- (for /f "tokens=*" %%i in ('FINDSTR "</a>[1-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]</li>" "a.txt"') DO (
- set "str=%%i"
- set "str=!str:"= !"
- FOR %%j in (!str!) do (
- set "str=%%~j"
- if "%%~xj" equ ".html" set "var=http://www.4q8q.com%%~j"
- if "!str:</a>=!" neq "%%~j" (
- set "str=!str:*</a>=!"
- echo !var! !str:~,10!
- )
- )
- ))>b.txt
- PAUSE
复制代码
作者: cjiabing 时间: 2012-2-24 23:04
麻烦点~!
如果与wget.exe放在一起可以直接下载分析!~
分析结果有点模糊,可以先导出再进行其他处理。
前面的内容是你需要的,后面的可能没有时间。
-
- @echo off&setlocal enabledelayedexpansion
- if "%1"=="" (set /p "v= 拖入文件执行或用wget.exe直接回车下载执行……") else call :GXQM %1
- if not "%v%"=="" call :GXQM %v%
- if exist "%~dp0wget.exe" "%~dp0wget.exe" -O index.txt "http://www.4q8q.com/gaoxiaoqianming/"&&call :GXQM index.txt
- goto :eof
- :GXQM
- cls&for /f "tokens=* delims=<>= " %%a in ('findstr /i "target=_blank" %1') do (
- for %%i in (%%a) do (
- for /f "tokens=1,2,3,4,5* delims=<>= " %%l in ("%%i") do (
- if not "%%l"=="" if /i not "%%l"=="li" if /i not "%%l"=="a" if /i not "%%l"=="href" if /i not "%%l"=="title" if /i not "%%l"=="_blank" if /i not "%%l"=="target" echo;链接:%%l|findstr /i " /gaoxiaoqianming/ "
- if not "%%m"=="" if /i not "%%m"=="/a" if /i not "%%m"=="a" if /i not "%%m"=="li" echo;标题:%%m
- if not "%%o"=="" if /i not "%%o"=="/li" echo;时间:%%o
- )))
- pause
-
-
复制代码
作者: find 时间: 2012-2-25 08:58
回复 4# namejm
你那个方法用来学习标签的用法也不错
作者: QIAOXINGXING 时间: 2012-2-25 13:08
受楼上两位的启发:- @echo off&setlocal enabledelayedexpansion&cd /d "%~dp0"
-
- for /f "delims=" %%i in ('findstr "2012-[0-2][0-9]-[0-9][0-9]" "a.html"') do (
- for %%i in (%%i) do (set "str=!str!#%%i")
-
- set "tstr=!str:href=;!"
- set "n=0"
- for %%a in (!tstr!) do (
- set /a "n+=1"
- set "url=%%a"
- set "url!n!=!url:~2,30!"
- )
-
- set "tstr=!str:</a>=;!"
- set "n=0"
- for %%a in (!tstr!) do (
- set /a "n+=1"
- set "dat=%%a"
- set "dat=!dat:~0,10!"
- call echo %%url!n!%% !dat!
- )
- )
- pause
复制代码
for %%a in (!tstr!) do () 中 !str! 的长度貌似有限制,导致后面的部分信息无法提取,好在我需要的是前面的。
作者: find 时间: 2012-2-25 14:47
回复 8# QIAOXINGXING
一行命令的长度是有限制的
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |