绿色风 发表于 2013-6-13 11:24:24

缘鸟脚本教学初级采集示例之一[源码发布2013.12.08]

本帖最后由 绿色风 于 2013-12-8 10:53 编辑



源码将发到第100楼





===================
源码发布   2013.12.8
==================================#Region ;**** 参数创建于 ACNWrapper_GUI ****
#PRE_icon=..\WINDOWS\system32\SHELL32.dll|-118
#PRE_Res_requestedExecutionLevel=None
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include<inet.au3>
#include<array.au3>


Dim $url = "http://p.djys.com/20130927/2639.html" ;初始地址
Dim $TemD = @ScriptDir & "\temp\",$__url_ub,$i,$_url_u_u,$_url_d_u,$__url_stURL,$__url

MsgBox(0,"提示说明","程序启动时,会先对目标网址有个1500毫秒的PING动作!!"&@crlf&@crlf&"      请等待..."&@crlf&@crlf&@crlf&"网速不给力会引起程序出错跳出的哟!!!!",5)
$p = Ping("p.djys.com",1500)
If @error Then
        MsgBox(0,"注意","太遗憾的了,你的那破网速不给力启动不了本程序啦!!!"&@crlf&"网速好一点时再看吧!!!")
        Exit
EndIf
IfFileExists($TemD) = 0 Then DirCreate($TemD) ;如果目录不存在就创建



#region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("目标来源<<当季养生>>来自<<图片频道>>缘鸟脚本教学示例 by:绿色风", 602, 508, 192, 114)
$Group1 = GUICtrlCreateGroup("", 0, -4, 600, 385)
$Pic1 = GUICtrlCreatePic("", 8, 8, 585, 364)
GUICtrlSetResizing(-1, 128+8)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button1 = GUICtrlCreateButton("上集|", 0, 384, 185, 25)
$Button2 = GUICtrlCreateButton("上一幅", 192, 384, 65, 25)
$Button3 = GUICtrlCreateButton("保存", 264, 384, 73, 25)
$Button4 = GUICtrlCreateButton("下一幅", 344, 384, 57, 25)
$Button5 = GUICtrlCreateButton("下集|", 408, 384, 185, 25)
$Label1 = GUICtrlCreateLabel("当前地址", 0, 420, 52, 17)
$Input1 = GUICtrlCreateInput($TemD, 56, 416, 537, 21);"http://p.djys.com/20130610/2509.html"
$Label2 = GUICtrlCreateLabel("保存目录", 0, 444, 52, 17)
$Input2 = GUICtrlCreateInput(@ScriptDir, 56, 440, 537, 21)
$Label3 = GUICtrlCreateLabel("缘鸟脚本社区 教学示例脚本by:绿色风 2013.06.12", 16, 472, 567, 33)
GUICtrlSetCursor(-1, 0)
GUICtrlSetFont(-1, 18, 800, 4, "MS Sans Serif")
GUICtrlSetColor(-1, 0x008000)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###


_cai1($url) ;初始值

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1 ;上集
                        _cai1($_url_U_u)
                Case $Button5 ;下集
                        _cai1($_url_D_u)
                Case $Button2 ;上一幅
                       $i = $i - 1
                        If $i < 0 Then Dim $i = $__url_ub
                        _cai2($i)
                Case $Button4 ;下一幅
                       $i = $i + 1
                        If $i > $__url_ub Then Dim $i = 0
                        _cai2($i)
                Case $button3 ;保存
                        $svDir = GUICtrlRead($Input2)
                        IfFileExists($svDir) = 0 Then DirCreate($svDir) ;如果目录不存在就创建
                        FileCopy($TemD & $i & ".jpg",$svDir&"\"&@YEAR &@MON &@MDAY&@HOUR &@MIN&@SEC&".jpg")
                        GUICtrlSetData($button3,"O K")
                        Sleep(250)
                        GUICtrlSetData($button3,"")
                        Sleep(250)
                        GUICtrlSetData($button3,"O K")
                        Sleep(250)
                        GUICtrlSetData($button3,"")
                        Sleep(250)
                        GUICtrlSetData($button3,"保存")
                Case $Label3 ;谢谢支持,赞助个彩票,RMB什么的都可以,谢谢!!!taobaoID:VBT风哥
                        ShellExecuteWait("https://me.alipay.com/6sfeng","","","open",@SW_MAXIMIZE)
        EndSwitch
WEnd


Func _cai1($url) ;上下集的采集
        $url_doc = _INetGetSource($url) ;获取源码
        $_url = StringRegExp($url_doc, '<span id="fastpre">(.*?)&nbsp;(.*?)</span>', 3) ;上下篇   ok
        $_url_U = StringRegExp($_url, "<a href='(.*?)'>(.*?)</a>", 3) ;上一篇
        If @error = 1 Then
                GUICtrlSetState($Button1, $GUI_DISABLE) ;按键灰色不可用
                GUICtrlSetData($Button1,"上集|木有的了")
        Else
                GUICtrlSetState($Button1, $GUI_ENABLE) ;按键可用
                Dim $_url_U_u = $_url_U ;上一篇地址
                ;Dim $_url_U_n = $_url_U ;上一篇标题
                GUICtrlSetData($Button1,"上集|"&$_url_U)
        EndIf
       
        $_url_D = StringRegExp($_url, "<a href='(.*?)'>(.*?)</a>", 3) ;下一篇
        If @error = 1 Then
                GUICtrlSetState($Button5, $GUI_DISABLE) ;按键灰色不可用
                GUICtrlSetData($Button5,"下集|木有的了")
        Else
                GUICtrlSetState($Button5, $GUI_ENABLE) ;按键可用
                Dim $_url_D_u = $_url_D ;下一篇地址
                ;Dim $_url_D_n = $_url_D ;下一篇标题
                GUICtrlSetData($Input1,$_url_D_u)
                GUICtrlSetData($Button5,"下集|"&$_url_D)
        EndIf
       
       
        $__url = StringRegExp($url_doc, '<div class="tPages"\s+(.*?)</div>', 3) ;上下页   ok
        $__url = StringRegExp($__url, "<a href='(.*?)'>", 3) ;上下页 数据    ok
        Dim $__url_ad = StringSplit($url, "/") ;分解地址
        Dim $__url_stURL = StringReplace($url, $__url_ad, "") ;获取地址的目录(倒数第二级地址)
        _ArrayAdd($__url, $__url_ad) ;将最后一级的地地址插入到[上下页]数组中
        ;;页面的完整地址$__url_stURL&$__url
        Dim $__url_ub = UBound($__url) - 1;数组的大小
        Dim $i = $__url_ub ;设置$i的当前值

        Dim $img = StringRegExp($url_doc, '<tr><td><img src="(.*?)"', 3) ;获取到当前图片地址ok
        If @error = 1 Then
                MsgBox(0, "问题", "不知道的原因,机器没找到图片"&@crlf&$img)
        Else
                Local $imgGet = InetGet($img, $TemD & $__url_ub & ".jpg", 1)
                _getImgWH($TemD & $i & ".jpg");设置图片显示
                InetClose($imgGet)
        EndIf
;~         MsgBox(0,$i,$TemD & $__url_ub & ".jpg") ;测试用
EndFunc   ;==>_cai1

Func _cai2($ID)
        ;MsgBox(0,$ID,$__url_stURL&$__url[$ID]) ;测试用
        GUICtrlSetData($Input1,$__url_stURL&$__url[$ID])
        $url_doc = _INetGetSource($__url_stURL&$__url[$id]) ;获取源码
        Dim $img = StringRegExp($url_doc, '<tr><td><img src="(.*?)"', 3) ;获取到当前图片地址ok
                If @error = 1 Then
                MsgBox(0, "问题", "不知道的原因,机器没找到图片")
        Else
                Local $imgGet =InetGet($img, $TemD & $ID & ".jpg", 1, 0)
                _getImgWH($TemD & $id & ".jpg");设置图片显示
                InetClose($imgGet)
        EndIf
EndFunc   ;==>_cai2


Func _getImgWH($file) ;获取图片尺寸
      $o = ObjCreate("scripting.filesystemobject")
      $f = $o.GetFile($file)
      $shell1 = ObjCreate("Shell.Application")
      $shell = $shell1.Namespace($f.ParentFolder.Path)
      $s = $shell.GetDetailsOf($shell.Items.Item($f.Name), 26)
          $size = StringSplit(StringStripWS($s,8), "x") ;得到的图的尺寸为 为宽度 为高度
               
                If $size / $size < 586 / 364 Then
                ;8, 8, 586, 364 设置图像的显示比例坐标中心点 x=293+8 y=182+8图像的高度 y=364/2=182
                $h = 364 / $size ;计算图片的比例 以图高基准
                $w = Int($size * $h ) ;计算图片伸缩后的宽度
                $x = 301-Int($w / 2 ) ;计算图片在控件中的x坐标
                GUICtrlSetPos($Pic1,$x,8,$w,364)
        else
                ;8, 8, 586, 364 设置图像的显示比例坐标中心点 x=293+8 y=182+8图像的宽度 x=586/2=293
                $w = 586 / $size ;计算图片的比例 以图宽基准
                $h = Int($size * $w ) ;计算图片伸缩后的高度
                $y = 190-Int($h / 2 ) ;计算图片在控件中的x坐标
                GUICtrlSetPos($Pic1,8,$y,586,$h)
        EndIf
                GUICtrlSetImage($Pic1, $file) ;设置图片控件的图片   
        EndFunc   ;==>getWH
       
       

楼上风云 发表于 2013-6-13 11:53:06

回复 1# 绿色风

她很妖,你很...

lpxx 发表于 2013-6-13 12:20:12

真是人间尤物。

xms77 发表于 2013-6-13 13:11:11

我是看到图片进来的,顺便顶起!是男人就下一百楼{:face (427):}

xiaxiang 发表于 2013-6-13 14:40:00

很强悍嘛,要到100#才公布源码?一楼的不是源码还要收费吗?

绿色风 发表于 2013-6-13 14:54:22

回复 6# xiaxiang

这个区下载东西才10个金币,收费5个也才15个。放其它区等你下载那就要30个金币的了。


还有看的人都去群里下载的了。这里就没人下载的了

xlj310 发表于 2013-6-13 15:36:58

顶起,这个可以学习一下!~~
图片果断是撸料啊~

京少 发表于 2013-6-13 16:11:02

回复 1# 绿色风


    要到100#才公布源码

50186610 发表于 2013-6-13 16:55:08

我来贡献一楼

jirunyang 发表于 2013-6-13 17:27:07

很想看看源码。作品非常好。

haijie1223 发表于 2013-6-13 17:50:14

干什么用的?

user3000 发表于 2013-6-13 21:12:45

回复 4# xms77

好吧,被你败了.
本来懒洋洋的不想打字的!

zcx880517 发表于 2013-6-13 23:46:09

强顶楼主一楼。。

xlj310 发表于 2013-6-14 01:40:17

继续顶起,还只到15楼呀

勇者不坏 发表于 2013-6-14 09:30:50

{:face (125):}⊙﹏⊙b汗
页: [1] 2 3 4
查看完整版本: 缘鸟脚本教学初级采集示例之一[源码发布2013.12.08]