2008/02/17

[WAnts]使用說明

版本:0.3

更新日期:20080217

  1. 功能說明
  2. 進階說明
  3. 下載範例

功能說明

啟始網址

image

輸入要開始抓取的啟始網址,可輸入多行網址與使用{}方式。

[Top]

次頁關鍵

image

在啟始網頁與接下來的網頁中,使用連結來判斷下一頁的網址,可輸入多行與使用{}方式與*方式。

只需要輸入部份關鍵字串,即可使用。

如果空白則所有連結都會抓取。

image

當選取了不換頁,就不會抓取下一頁的連結。即次頁關鍵失效。

image

「建立資料夾」,使用次頁關鍵的第一筆網址,來當資料夾的名稱,常用來抓取討論區時,以每篇標題來分類,抓取的圖檔就會分在不同的資料夾中。如果需要抓取簡體論壇,就需要勾選「目錄簡轉繁」。

[Top]

下載關鍵

image image

網頁中的圖片連結判斷是否需要下載,可輸入多行與使用{}方式與*方式。

只需要輸入部份關鍵字串,即可使用。

如果空白則所有圖檔都會抓取。

圖檔長寬用來判斷圖檔長寬,大於等於設定值即下載。

目前支援 bmp、jpg、png、gif、psd,等5種。

[Top]

Cookie 使用

image

不使用Cookie

當抓取Yahoo漫畫時,如果開啟,下載會失敗。

<0.3之前版本因為預設使用,所以會下載失敗。>

Cookie

使用儲存在電腦中的Cookie資料,在登入網站或論壇時,通常會讓使用者選取Cookie的記錄時間,一般而言非「瀏覽器關閉」即失效的Cookie,就會存在電腦中。

Session Cookie

抓取IE瀏覽器的Cookie資料,使用時,請先用IE瀏覽器開啟要抓取的網址,並在抓取期間不能關閉。

[Top]

下載模式

image

文字模式

抓取網頁的HTML原始碼,判別連結和圖檔的網址,無法判別JavaScript產生的網址,速度較快,下載網頁內容同時判別網址。

網頁模式

使用IE瀏覽器開啟網址,抓取其中的網址連結和圖檔的連結,可視即可抓。速度較慢,因為要等網頁載入完畢。
目前只支援使用連結方式換頁,暫不支援使用按鈕等其他方式。

<程式中IE7 不支援 iFrame ,IE6可以 >

單網頁模式

由於在使用IE7時,同時開啟太多網址,會產生失敗訊息,使用單一網頁,可以減少失敗。

[Top]

Proxy模式

image

Host:Proxy網址 : ProxyPort

使用Proxy:勾選時使用Proxy

只在下載檔案使用:勾選後,文字模式下載網頁時不使用Proxy,下載檔案使用Proxy

以上 只適用於文字搜尋模式與下載檔案,網頁模式請自已設定IE瀏覽器。

[Top]

逾時設定

image

文字模式或下載檔案時超過逾時設定即會中斷下載,網頁模式會加長逾時設定。

[Top]

儲存網頁

只在文字模式時使用,方便取得網頁內容。

[Top]

進階說明

網址設定

{}模式

可使用{001-002} {a-z}{A-Z}

範例:

http://www.myweb.com.tw/{01-02}-{a-z}.html
會產生如下網址:

http://www.myweb.com.tw/01-a.html

http://www.myweb.com.tw/02-b.html

說明:

產生的網址數,由第一個{}產生的個數決定。

數字型態,可由數字的個數決定是否要填「0」

*模式

次頁關鍵與下載關鍵使用,當輸入如下

http://www.*.com.tw/01-*.html

以下網址都可成功

http://www.myweb.com.tw/01-abced.html

http://www.yourweb.com.tw/01-454645666.html

[Top]

INI格式

[Config]

SavePath 儲存目錄

Proxy Proxy網址

TimeOut 逾時(毫秒)

SaveHtml 是否儲存網頁(文字模式)

SaveHtmlPath 儲存網頁目錄

UseProxy 是否使用Proxy

UseProxyOnlyFile 是否只在下載使用Proxy

[UrlKeyWord]  判別網址HTML語法
Num 判別網址語法數量

[UrlKeyWord/KeyWord01]  判別網址HTML語法第一筆

Num 關鍵字數量
Word01 第一關鍵字

說明: 在HTML一般的網址連結方式是使用

<a href="test.html">test</a>

組成有 a 、 href 、 =

但是在ini檔中 可以看到 a、*、href、=

因為在 a 跟 href 可以插入其他的語法,所以 中間的 都以 * 代替

下載關鍵語語法 <img scr="p.jpg"> ,使用方式如上,如果有需要,可以自已更改。

[Top]

下載範例

文字模式

抓取Yahoo漫畫極樂地獄為例:

啟始網址:

image

http://tw.comics.yahoo.com/080122/260/3ta8j.html

次頁關鍵:

首先對次頁連結按右鍵->內容

image

取得網址

image

多幾個網頁的比較之後,都大概是以下網頁內容為主

輸入 http://tw.comics.yahoo.com/*/260/

下載關鍵:

對圖檔按右鍵->內容,取得如下資料

image

多幾個網頁比較之後,大概是以下網址為主

輸入 http://tw.news.yimg.com/comics/comics_whatthehell/

接下來就選取

image

再按下

image 

就可以抓取圖片了。

[Top]

[回到程式主頁]

如有使用上問題、Bug、建議,請至各版本更新資料中留言,謝謝

如有此說明意見,請在此留言,非與說明意見相關,將刪除,請見諒

2008/02/16

[WAnts][20080222][0.3]更新訊息

更新日期: 20080222

版本代號:0.3.01

更新資料如下:

執行頁:

  • 增加圖檔長、寬、檔案大小限制(以前只要長或寬條件符合即下載,現在要全部條件符合才可下載)。

系統:

  • 下載執行緒數更改 網頁:5 下載:5 ,當網頁執行緒為0 時,下載執行緒增為 8 。 
  • INI增加記錄圖檔限制。

以上,感謝網友建議。

 

更新日期: 20080215

版本代號:0.3

更新資料如下:

執行頁:

  • 畫面配製更改
  • {}語法更改,一個網址二個以上{}支援
  • 次頁關鍵、下載關鍵 支援 {} 語法
  • 在沒有ini檔下,下載目錄自動判別執行檔目錄下"DownLoad"
  • Cookie模式增加 Session Cookie模式
  • 下載模式增加網頁模式、單網頁模式
  • 檔案下載改為 百分比模式,同時更改某些顯示字串

設定頁:

  • Proxy設定增加,設定使用Proxy,只在下載檔案使用
  • 現在使用INI檔,如要變更設定值,請按確定後更改
  • 在沒有INI檔下,儲存網頁目錄自動判別執行檔目錄下"SaveHtml"

系統:

  • 增加INI檔儲存設定。
  • 可在INI中,增加、修改下載語法支援
  • 下載執行緒數更改 網頁:3 下載:3

主頁位置

以上,如有[0.3版本]使用上問題、Bug、建議,請在此回應,謝謝。

[作品]WAnts 會換頁抓圖的軟體

capture_02162008_113336
名稱:
WAnts

功能:
支援換頁、可限定大小的抓圖軟體
動機:
由於現在抓圖的軟體不多,能抓取網頁中的特定圖,能自動換頁的更少了,只能用砍站軟體慢慢砍,於是就產生我寫這個軟體的想法。
使用教學:
Go
使用程式:
Visual Studio 2008 Express Edition
wxDev-C++
wxWidgets + wxActiveX 1.0
下載:[DropBox] (20131209)

更新訊息:
[20080222]0.3.01版本
[20080215] 0.3版本
如有使用上問題、Bug、建議,請至各版本更新資料中留言,謝謝

2008/02/08

WTL with Visual Studio 2008 Express

最近在寫WAnts 的更新,使用 ie 透過 ActiveX,用wxWidgets 實在是不方便,有許多的錯誤,例如在IE7下抓取iFrame不知道為什麼一直錯誤,所以就想來裝裝看另一款有名的「WTL」。

在WTL安裝之前,請先安裝 PlamtForm SDK。我安裝的版本是「Microsoft Platform SDK for Windows Server 2003 SP1」

  • WTL目前的版本是 8.0,在下載安裝之後,並沒有內附 2008Express 的安裝,於是修改 "\WTL80\AppWiz\setup80x.js"的檔案,編輯內容把8的字串都改為9,再另存為 "setup90x.js" ,點擊執行就可以安裝到 2008 Express 上了。
  • 接下來修改 PlamFormSDK的檔案,在路徑"Microsoft Platform SDK\Include\atl\atlbase.h",在288行的位置,修改如下

#pragma pack(pop)

/*
PVOID __stdcall __AllocStdCallThunk(VOID);
VOID  __stdcall __FreeStdCallThunk(PVOID);

#define AllocStdCallThunk() __AllocStdCallThunk()
#define FreeStdCallThunk(p) __FreeStdCallThunk(p)

#pragma comment(lib, "atlthunk.lib")
*/
#define AllocStdCallThunk() HeapAlloc(GetProcessHeap(),0,sizeof(_stdcallthunk))
#define FreeStdCallThunk(p) HeapFree(GetProcessHeap(), 0, p)

#elif defined (_M_AMD64)
#pragma pack(push,2)

以上,也可以增加專案中的stdafx.h 修改如下:(由TabBrowser中 支援 2005 Express 參考)

//#ifdef _VC80X
  // Support for VS2005 Express & SDK ATL
  #define _CRT_SECURE_NO_DEPRECATE
  #pragma conform(forScope, off)
  #pragma comment(linker, "/NODEFAULTLIB:atlthunk.lib")
  #pragma warning(disable: 4565) // redefinition; the symbol was previously declared with __declspec(noalias)
  #pragma warning(disable: 4068) // unknown pragma
//#endif // _VC80X

#include <atlbase.h>

//#ifdef _VC80X
  // Support for VS2005 Express & SDK ATL
  namespace ATL
  {
    inline void * __stdcall __AllocStdCallThunk()
    {
        return ::HeapAlloc(::GetProcessHeap(), 0, sizeof(_stdcallthunk));
    }

    inline void __stdcall __FreeStdCallThunk(void *p)
    {
        ::HeapFree(::GetProcessHeap(), 0, p);
    }
  };
//#endif // _VC80X

  • "Microsoft Platform SDK\Include\atl\atlwin.h",在1753行的位置

for(int i = 0; i < m_aChainEntry.GetSize(); i++)

  • "WTL80\AppWiz\Files\Templates\1033\root.rc",在507的位置

[!if WTL_COM_SERVER]
1 TYPELIB "[!output PROJECT_NAME].tlb"
[!endif]
[!if WTL_USE_MANIFEST]
//CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "res\\[!output PROJECT_NAME].exe.manifest"
[!endif]

  • 如果在編譯Sample時出現以下錯誤

CVTRES : fatal error CVT1100: duplicate resource. type:MANIFEST, name:1, language:0x0409

LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt.

就尋找專案中的 ".rc" 檔案,並注解掉
//CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST

 

以上,就是編譯WTL Sample 中遇到的問題,解決的方式。