本帖最后由 cjiabing 于 2013-6-3 20:50 编辑
想从百度贴吧复制点内容,结果发现有好多页,一页一页地复制也麻烦,于是鼓捣下帖子下载和内容整理。下载很简单,关键是整理帖子内容麻烦。想用gawk,无奈不熟悉。只好继续折磨findstr和for。现在问题:
1.各楼层发帖时间包含在其他内容里面,截取数据较长。这个解决也没有什么,只是麻烦点。——基本实现!
2.楼层里面的回复内容是纯粹的文字,不包含网页代码,不好提取。——等待!。。。
3.恢复分行分段。这个也不难,替换<br>即可。——已实现
求助于给位,不管何种方法,只要能实现以上目标即可!注意先后顺序!
以下是百度贴吧帖子内容提取工具.bat,不考虑回复和发帖时间,基本上满足使用。
-
- @echo off&setlocal enabledelayedexpansion
- echo 提取百度贴吧帖子主楼内容,不包括回复和时间。
- echo 输入百度贴吧帖子链接地址下载所有页面。如:http://tieba.baidu.com/p/1111111111
- set /p "input=请输入:"
- echo Start . . .
- for /f %%h in ('copy /z %0 nul') do set crlf=%%h^
-
- for /f "tokens=4,6 delims=/?=" %%a in ("%input%") do (
- if "%%b"=="" (echo ID:%%a ,第 1 页) else echo ID:%%a ,第 %%b 页
- set id=%%a
- cd.>!id!.txt
- wget.exe -q "%input%" -O !id!.txt
- )
- for /f "tokens=2 delims=<>" %%a in ('findstr /i "<title>" !id!.txt') do set "fn=%%a"
- set num=1
- for %%h in ("!crlf!") do (
- for /f "tokens=20 delims=:," %%a in ('findstr /i "all_page_num:" !id!.txt') do (
- echo 文件:!fn!,共 %%a 页
- for /l %%i in (2,1,%%a) do (
- set /a num+=1
- echo 下载:!fn!,第 !num! 页
- cd.>"_!fn!_!num!.txt"&cd.>"!fn!_!num!.txt"
- wget.exe -q "http://tieba.baidu.com/p/!id!?pn=!num!" -O "_!fn!_!num!.txt"
- for /f "tokens=4* delims=<>" %%o in ('findstr /i "post_content_" "_!fn!_!num!.txt"') do (
- if /i "%%o" neq "br" (set "str=%%o %%p") else set "str=%%p"
- set str=!str:^<br^>=%%~h!
- set str=!str:^<br/^>=%%~h!
- set str=!str:br^>=%%~h!
- set str=!str:^<br=%%~h!
- set str=!str:^</div^>=!
- set str=!str:/div^>=!
- set str=!str:^</cc^>=!
- echo;!str!
- echo;
- )>>"!fn!_!num!.txt"
- )&&del /q "_!fn!_!num!.txt"
- ))
- cd.>"!fn!_1.txt"
- for %%h in ("!crlf!") do (
- for /f "tokens=4* delims=<>" %%o in ('findstr /i "post_content_" "!id!.txt"') do (
- if /i "%%o" neq "br" (set "str=%%o %%p") else set "str=%%p"
- set str=!str:^<br^>=%%~h!
- set str=!str:^<br/^>=%%~h!
- set str=!str:br^>=%%~h!
- set str=!str:^<br=%%~h!
- set str=!str:^</div^>=!
- set str=!str:/div^>=!
- set str=!str:^</cc^>=!
- echo;!str!
- echo;
- )>>"!fn!_1.txt"
- )
- del /q "!id!.txt"
- start "" "!fn!_1.txt"
- echo Success.
- exit
复制代码
参考CrLf 的旧帖,修改下换行符的获取方式就可以了,不打算精简,能用就行。
http://www.bathome.net/viewthread.php?tid=19751
下一步提取发帖时间和回复帖内容。 |