Crawler
「Crawler」抓取站點的頁面,並取走在上面找到的檔案。本頁介紹它認得的站點、它在其他任何站點上讀得懂的頁面種類、它可以走到哪裡和保留什麼、何時使用瀏覽器、怎樣對待站點,以及執行前您先檢視的頁面。
它認得的站點
Crawler 為少數幾個站點準備了配方:配方說明站點把檔案放在哪裡,以及怎樣逐頁翻看。在這些站點上,精靈會選取 Crawler,也不會詢問頁面的種類。
| 站點 | Crawler 在那裡取什麼 |
|---|---|
| 500px | 攝影師、動態消息(例如熱門照片)、相簿、照片故事或單張照片;長邊不超過 2048 畫素 |
| Bing 圖片 | 圖片搜尋結果 |
| Flickr | 照片流、相簿、收藏、群組照片池、標籤、Explore、單張照片或搜尋;只有作者允許下載時才取原圖,否則取現有的最大尺寸 |
| Google 圖片 | 圖片搜尋結果 |
| IMDb | 電影、人物或相簿 |
| 子版塊或貼文 |
Bing 圖片和 Google 圖片透過瀏覽器讀取。在 Google 圖片上執行之前,搜尋頁面會先開啟供您檢視,參見執行前您先檢視的頁面。
對於 IMDb,精靈會詢問「下載圖片」和「下載影片」;IMDb 最多只提供 100 部影片。精靈還會顯示「IMDb 對其資料的使用規定了條件。」只有勾選「我已閱讀」後,才能建立專案。
對於 Reddit,精靈會顯示已經填好的「Reddit 應用 id」。Reddit 只回應已註冊的應用程式;如果碰到它的限制,就在 reddit.com/prefs/apps 註冊一個您自己的應用程式,類型選 installed app,然後把它的 id 填入「Reddit 應用 id」。
其他任何頁面
在它不認得的站點上,Crawler 的卡片上寫著「在任何頁面上都能用,但對這個站點沒有專門的了解」。選擇 Crawler 後,精靈會詢問「檔案從哪裡來?」任何選項都不會預先選取:頁面是什麼,只有您知道。
| 選項 | 含義 |
|---|---|
| 只要這一個頁面 | 您給出的地址上連結的檔案,不再往下走 |
| 相簿 | 一個帶著一組圖片的頁面 |
| 論壇主題 | 一個主題,連同貼文裡的附件和圖片 |
| 整個站點,或者它的一部分 | 預設只包括您給出的地址和它下面的內容 |
接著,「檔案種類」會詢問要「下載」什麼:「圖片」(預設勾選)、「影片」、「音訊」、「文件」和「壓縮檔」。如果一個檔案的種類從它的地址和站點的回應中都看不出來,它照樣會被取走。
除了下面要講的「這次可以走到哪裡?」,精靈不再詢問別的;每個選項的其餘設定都在專案的「站點設定」中。
它可以走到哪裡
對於「整個站點,或者它的一部分」,精靈還會詢問「這次可以走到哪裡?」它按從窄到寬的順序列出範圍,您選取的那一行的模式涵蓋什麼,任務就包括什麼。對於 https://example.com/gallery/7/,這幾行是 example.com/gallery/7/*、example.com/gallery/*、example.com/* 和 *.example.com/*(整個站點連同它的子網域)。
專案「站點設定」中的「地址」包含其餘的設定:
- 附加地址 - 每行一個地址模式,例如
site.com/gallery/*。與它們符合的連結也屬於這次任務;在精靈中選取的那一行作為第一行儲存在這裡。 - 例外 - 抓取不會進入的地址的模式,不管它是怎樣被引向這些地址的。它們優先於上面的地址。
- 距起點的步數 - 抓取從地址出發最遠能走多遠:每跟進一個連結算一步,預設 3 步,最多 20 步。翻到同一個列表的另一頁不算步數,取檔案也不算。
- 外部連結 - 通向任務之外的連結:「忽略它們」、「只從它們那裡取檔案」(預設)或「跟進頁面並取走檔案」。
- 允許的外部地址 - 抓取可以走出去的地方;預設的
*表示任何地方。 - 哪些地址是檔案 - 每行一條規則,例如
site.com/get-image/* = pictures,適用於傳回圖片的指令碼,或者沒有副檔名的下載連結。 - 跟進規則 - 您自己為連結設定的條件,形式為「滿足以下條件時不去」或「只在滿足以下條件時去」。
「資料夾」中的「保留站點自己的資料夾」會按站點的方式存放所有檔案:先是主機名稱,再是地址中的各層資料夾。它預設關閉,所有檔案都放在一起。
它保留什麼
專案「站點設定」中的「篩選」:
- 「最小大小」和「最大大小」,以位元組為單位;0 表示不限制。站點沒有說明大小的檔案照樣會被取走。對於「論壇主題」,最小大小的初始值是 20480 位元組:在貼文裡,頭像、表情符號和等級徽章也都是普通圖片。
- 「最小寬度」和「最小高度」,以畫素為單位。圖片的尺寸記錄在檔案內部,所以要在取回之後才能判斷:不符合的圖片會被刪除,日誌裡會寫明。
- 保留規則 - 您自己為檔案設定的條件,形式為「滿足以下條件時不要」。
對於「只要這一個頁面」,「篩選」中還有「哪些地址是檔案」:從這個頁面出發不會跟進任何連結,所以只能從站點的回應中看出種類的地址,根本不會被請求。
對於「相簿」,「翻頁」中有「同一個列表的頁數」:同一個列表要抓取多少頁。預設值 0 表示全部,適合相簿,卻不適合沒有盡頭的動態消息。
它何時使用瀏覽器
有些站點用指令碼產生頁面,沒有瀏覽器,頁面上就什麼也找不到。專案「站點設定」的「瀏覽器」中,「使用瀏覽器」可以是「自動決定」、「是」或「否」。由 Crawler 自己決定時,它會用兩種方式分別讀取每個站點的第一頁,保留找到更多內容的那一種;日誌會寫明選了哪一種,並給出兩邊的數字。瀏覽器要慢幾十倍。
頁面上什麼也沒找到時,日誌會寫「… 上什麼都沒找到,這個頁面可能需要瀏覽器」。
禮貌
專案「外掛設定」中的「禮貌」決定 Crawler 怎樣對待站點:
- 兩次請求之間的秒數 - 一次執行中任意兩次請求之間的停頓,不論請求發往哪些站點,預設 1 秒,最多 60 秒。停頓越短,站點就越可能開始拒絕請求,或者把您拒之門外;設為 0 是讓您的 IP 位址被封的最快辦法。參見執行保持的節奏。
- 保留頁面 - 儲存讀取過的每個頁面,這樣配方編輯器就能在這些頁面上重複一次執行,而不必再造訪站點。預設開啟。
- 使用配方 - 在 Crawler 認得的站點上,按該站點的配方進行。關閉後,就按普通方式抓取站點。預設開啟。
- 識別圖床 - 把指向圖床的連結當作一張圖片來讀,只是前面多隔了一跳。如果某個圖床改了頁面,取回來的是廣告而不是圖片,就值得把它關掉。預設開啟。
Crawler 同時取兩個檔案,這是所有站點合起來的數目。站點要求放慢時,Crawler 就會放慢,日誌會寫「… 要求我們放慢,已經減速。秒數: …」。
執行前您先檢視的頁面
有些站點需要您先手動做點事:登入、通過檢查,或者縮小搜尋範圍。同樣位於「禮貌」中的「執行前先顯示頁面」決定起始頁面何時開啟:
- 從不 - 執行立即開始。
- 站點需要時 - 預設值。在配方註明需要您參與的站點上開啟頁面,例如 Google 圖片。
- 總是 - 專案的每個地址都會開啟頁面;對於模式,只在它的第一個地址開啟一次。
頁面會在名為「下載開始前請確認」的視窗中開啟並等待。完成站點要求的操作,然後點選「繼續」:執行會從您最後停留的頁面開始,所以在搜尋頁面上,您輸入的查詢和設定的篩選條件都會保留。「取消」則讓執行在開始之前就停下。
在精靈的最後一步勾選「這個站點要我先登入」,就會設為「總是」。
修復解析器
在 NeoDownloader 視窗裡,專案的「屬性」分頁上有一張卡片,提供「修復解析器」:它會針對專案最近一次執行開啟配方編輯器,定位到開始一無所獲的那一步。編輯器還處於實驗階段。開啟之前,NeoDownloader 會提醒「配方編輯器還沒有做完」,並說明編輯器不一定能修好這次執行。