[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 5# apang


    兄弟是故意每个版块只取第一个帖子信息的吗?不过分析了你的代码应该是你split方法的局限所导致的。。。
***共同提高***

TOP

本帖最后由 apang 于 2013-1-14 21:48 编辑
  1. Set ie = CreateObject("InternetExplorer.Application")
  2. ie.Navigate "http://www.bathome.net"
  3. ie.Visible = False
  4. Do While ie.Busy Or ie.ReadyState <> 4 :Wscript.Sleep 100 :Loop
  5. Text = ie.Document.Body.InnerHtml :ie.Quit
  6. Pattern1 = """>(.*?)</A>.*href=""(thread.*)"">(.*)</A>"
  7. Pattern2 = "id=homegrids_t_[1-3]>(?:(最新主题|最新回复|热门主题))"
  8. Set Re = New RegExp
  9. Re.Pattern =  Pattern1 & "|" & Pattern2
  10. Re.Global = True
  11. Re.IgnoreCase = True
  12. For Each a in Re.Execute(Text)
  13.    Set FSO=CreateObject("Scripting.FilesystemObject")
  14.    Str = "[" & a.SubMatches(3) & "]"
  15.    if Str = "[]" Then
  16.       Str = "主题:" & a.SubMatches(2) & " "
  17.       Str = Str & "发贴ID:" & a.SubMatches(0) & " " & "URL:"
  18.       Str = Str & "http://www.bathome.net/" & a.SubMatches(1)
  19.    End If
  20.    FSO.OpenTextFile("Result.txt",8,True).WriteLine Str
  21.    Set FSO = Nothing
  22. Next
  23. CreateObject("Wscript.Shell").Run "NotePad Result.txt"
复制代码
1

评分人数

    • batman: 正则用的太好了!PB + 25

TOP

本帖最后由 QIAOXINGXING 于 2013-1-14 17:17 编辑

曾经提问过类似问题:http://www.bathome.net/thread-15638-1-1.html
  1. @echo off&SetLocal EnableDelayEdexpansion&cd /d "%~dp0"
  2. Mode Con Cols=130 Lines=30
  3. del /f index.html>nul 2>nul
  4. wget http://www.bathome.net 1>nul 2>nul
  5. for /f "delims=" %%a in (index.html) do (
  6.   set "STR=%%a"
  7.   if defined flag (
  8.     echo 【!cont!】
  9.     call :tiqu "%%a"
  10.     set "flag="
  11.   )
  12.   for %%b in (最新主题 最新回复 热门主题) do (
  13.     if "!STR!" neq "!STR:%%b=!" set "flag=1"&set "cont=%%b"
  14.   )
  15. )
  16. pause&exit
  17. :tiqu
  18. for %%b in ("%~1") do set "str=!str!%%b"
  19. set "str=!str:'= !"
  20. set "str=!str:<= !"
  21. for %%b in (!str!) do (
  22.   set "s=%%b"
  23.   if "%%~xb" == ".html" (
  24.     set "Url=http://www.bathome.net/%%b"
  25.     set "flag1=1"
  26.   )
  27.   if "!s:~0,1!" equ ">" (
  28.     set "t=!s:~1!"
  29.     rem 发现下3句写成 "if not defined flag1 set "Id=!t!" else ("会出错,有时flag1为空时也会显示。
  30.     if not defined flag1 (
  31.       set "Id=!t!"
  32.     ) else (
  33.       set "Title=!t!"
  34.       set "flag1="
  35.       echo 主题:!Title! 发帖ID:!Id! URL:!Url!
  36.     )
  37.   )
  38. )        
  39. goto :eof
复制代码
1

评分人数

    • batman: 这证明你确实有了进步,继续加油PB + 20

TOP

本帖最后由 batman 于 2013-1-14 00:51 编辑

回复 2# 冷玉公子


    请仔细阅读上面的说明,我没说用纯批吧,而且纯批也是有正则的,虽然findstr那么弱。。。
***共同提高***

TOP

老大 格式也不行哦 太长了 继续努力中
纯P的,目前搞定最后一部分,下一步处理拿到那三个信息
纯P的不可能有正则吧,除非依赖第三方。拿这个真的很蛋疼啊。
--------------------相当华丽的分割线------------------------------------
2013-01-14 日更新
先上图
[attach]6050[/attach]
--------------------相当华丽的分割线------------------------------------
利用Curl获取首页数据,然后剩下的就是纯P内部函数搞定。
个人觉得代码绝对有可以优化的地方,只可惜水平不高,还请高手指正。
PS:怎么版主老是没几句好话给我啊,哎。。。。。。
  1. @Echo Off&SetLocal EnableDelayedExpansion
  2. Mode Con Cols=130 Lines=20
  3. Title 批处理获取论坛首页指定数据 『冷玉公子』
  4. Set "Index=index.php"
  5. Set "Url=http://www.bathome.net/index.php"
  6. If Exist %Index% Del /f /q %Index%
  7. Echo 正在更新首页信息,请稍后。
  8. Curl -# -G -o %Index% %Url%
  9. For /F "tokens=*" %%A In (index.php) Do (
  10. Set tStr="%%A"
  11. IF !e1Switch! == True Set e1Switch=False&Call :_TitleResovle !tStr! 最新主题&Pause>Nul
  12. IF !e2Switch! == True Set e2Switch=False&Call :_TitleResovle !tStr! 最新回复&Pause>Nul
  13. IF !e3Switch! == True Set e3Switch=False&Call :_TitleResovle !tStr! 热门主题&Pause>Nul
  14. Set e1Str=!tStr:homegrids_c_1=DandyMu!
  15. Set e2Str=!tStr:homegrids_c_2=DandyMu!
  16. Set e3Str=!tStr:homegrids_c_3=DandyMu!
  17. IF Not !e1Str! == !tStr! Set e1Switch=True
  18. IF Not !e2Str! == !tStr! Set e2Switch=True
  19. IF Not !e3Str! == !tStr! Set e3Switch=True
  20. )
  21. Goto :Eof
  22. :_TitleResovle
  23. Set trStr=%1
  24. For /F "usebackq tokens=*" %%A In ('%trStr%') Do (
  25. @Rem Echo %%A
  26. Call :_LiResolve %%A %2
  27. )
  28. Goto :Eof
  29. ::Rem %1带处理的Li标签内容 %2标题
  30. :_LiResolve
  31. Cls
  32. Echo [%2]
  33. Echo=
  34. Echo ---------------------------------------------------------------------------------------------------------------------------------
  35. Set Str=%1
  36. For /F "usebackq tokens=*" %%A In ('%Str%') Do (
  37. Set Html="%%A"&Set Code=!Html:^</li^>=^</li^>;!
  38. For /F "tokens=1-8 delims=;" %%1 In ("!Code!") Do (
  39. Call :_EchoInfo "%%1"&Call :_EchoInfo "%%2"&Call :_EchoInfo "%%3"&Call :_EchoInfo "%%4"
  40. Call :_EchoInfo "%%5"&Call :_EchoInfo "%%6"&Call :_EchoInfo "%%7"&Call :_EchoInfo "%%8"
  41. )
  42. )
  43. Goto :Eof
  44. :_EchoInfo
  45. For /F "usebackq tokens=1-20 delims=><=" %%A In ('%1') Do (
  46. For /F "tokens=1 delims='" %%1 In ("%%K") Do Set "HTURL=http://www.bathome.net/%%1"
  47. Set "HTID=%%G"&Set "HTTITLE=%%M"
  48. IF "!HTTITLE:~1,5!" == "color" Set "HTTITLE=%%N"
  49. Echo 主题:!HTTITLE! 发帖ID:!HTID! URL:!HTURL!
  50. Echo ---------------------------------------------------------------------------------------------------------------------------------
  51. )
  52. Goto :Eof
复制代码
1

评分人数

    • batman: 很不错,就是call来call去会很是影响效率, ...PB + 20

TOP

返回列表