缘鸟脚本教学初级采集示例之一[源码发布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">(.*?) (.*?)</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
回复 1# 绿色风
她很妖,你很... 真是人间尤物。 我是看到图片进来的,顺便顶起!是男人就下一百楼{:face (427):} 很强悍嘛,要到100#才公布源码?一楼的不是源码还要收费吗? 回复 6# xiaxiang
这个区下载东西才10个金币,收费5个也才15个。放其它区等你下载那就要30个金币的了。
还有看的人都去群里下载的了。这里就没人下载的了 顶起,这个可以学习一下!~~
图片果断是撸料啊~ 回复 1# 绿色风
要到100#才公布源码 我来贡献一楼 很想看看源码。作品非常好。 干什么用的? 回复 4# xms77
好吧,被你败了.
本来懒洋洋的不想打字的! 强顶楼主一楼。。 继续顶起,还只到15楼呀 {:face (125):}⊙﹏⊙b汗