Crawler
「Crawler」抓取站點的頁面,並取走在上面找到的檔案。本頁介紹它認得的站點、它在其他任何站點上讀得懂的頁面種類、它可以走到哪裡和保留什麼、何時使用瀏覽器、怎樣對待站點,以及執行前您先檢視的頁面。
它認得的站點
Crawler 為少數幾個站點準備了配方:配方說明站點把檔案放在哪裡,以及怎樣逐頁翻看。在這些站點上,精靈會選取 Crawler,也不會詢問頁面的種類。
| 站點 | Crawler 在那裡取什麼 |
|---|---|
| 500px | 攝影師、動態消息(例如熱門照片)、相簿、照片故事或單張照片;長邊不超過 2048 畫素 |
| Bing 圖片 | 圖片搜尋結果 |
| Flickr | 照片流、相簿、收藏、群組照片池、標籤、Explore、單張照片或搜尋;只有作者允許下載時才取原圖,否則取現有的最大尺寸 |
| Google 圖片 | 圖片搜尋結果 |
| IMDb | 電影、人物或相簿 |
| Pexels | 攝影師、其精選作品或收藏集、收藏集、單張照片或單一影片,或搜尋;照片為原始尺寸,影片不超過所選畫質 |
| 子版塊、個人檔案或貼文 | |
| Unsplash | 攝影師、其插畫或收藏集、收藏集、主題、單張照片或插畫,或搜尋;原始尺寸 |
| Wikimedia Commons | 媒體搜尋、分類及其下的子分類、某個人上傳的檔案,或單一檔案;取原始檔案,授權條款和作者寫進檔案資訊 |
Bing 圖片和 Google 圖片透過瀏覽器讀取。在 Google 圖片上執行之前,搜尋頁面會先開啟供您檢視,參見執行前您先檢視的頁面。
Google 圖片的專案在「站點設定」中同樣有「篩選」,可以設定「最小寬度」和「最小高度」。Google 在結果中標明了每張圖片的尺寸,所以更小的圖片根本不會下載,連它所在的站點都不會去請求。
對於 IMDb,精靈會詢問「下載圖片」和「下載影片」;IMDb 最多只提供 100 部影片。精靈還會顯示「IMDb 對其資料的使用規定了條件。」只有勾選「我已閱讀」後,才能建立專案。
對於 Pexels,精靈會詢問「下載照片」「下載影片」和「影片畫質」;在您選擇別的之前,「影片畫質」是「最高 1080p」。在免費版中,高於 1080p 的選項會顯示出來,但不能選擇。
Reddit 只有在程式的瀏覽器裡開啟過這個站點之後,才會回應程式。所以第一次執行之前,會先開啟 Reddit 頁面:如果 Reddit 要求您確認自己是人,就在那裡完成,然後點選「繼續」。此後執行會立即開始;只有當 Reddit 不再接受程式時,頁面才會再次開啟。
對於 Unsplash,精靈會詢問「下載 Unsplash+ 照片」,預設不勾選:Unsplash 只以整張圖片覆蓋浮水印的形式提供這些照片的原始尺寸版本。不勾選時,列表和搜尋都會略過這些照片,透過「新建搜尋」開始的搜尋也一樣;如果列表裡有這樣的照片,日誌會在每次執行中說明一次。
對於 Wikimedia Commons,精靈會詢問「子分類層級」。Commons 的大部分檔案都放在子分類裡,所以除非您另行設定,分類會連同它下面的一層一起取。那裡的搜尋最多到 10 000 個檔案,再往後站點不放任何人過去。
其他任何頁面
新建專案
第 3 步,共 4 步
檔案從哪裡來?
只要這一個頁面
從您給的地址鏈出去的檔案,再往下就不要了
相簿
一個帶著一組圖片的頁面
論壇主題
一個話題,連同貼文裡的附件和圖片
整個站點,或者它的一部分
預設只取您給的地址以及它下面的東西
在它不認得的站點上,Crawler 的卡片上寫著「在任何頁面上都能用,但對這個站點沒有專門的了解」。選擇 Crawler 後,精靈會詢問「檔案從哪裡來?」任何選項都不會預先選取:頁面是什麼,只有您知道。
| 選項 | 含義 |
|---|---|
| 只要這一個頁面 | 您給出的地址上連結的檔案,不再往下走 |
| 相簿 | 一個帶著一組圖片的頁面 |
| 論壇主題 | 一個主題,連同貼文裡的附件和圖片 |
| 整個站點,或者它的一部分 | 預設只包括您給出的地址和它下面的內容 |
接著,「檔案種類」會詢問要「下載」什麼:「圖片」(預設勾選)、「影片」、「音訊」、「文件」和「壓縮檔」。如果一個檔案的種類從它的地址和站點的回應中都看不出來,它照樣會被取走。
除了下面要講的「這次可以走到哪裡?」,精靈不再詢問別的;每個選項的其餘設定都在專案的「站點設定」中。
它可以走到哪裡
新建專案
第 3 步,共 4 步
整個站點,或者它的一部分
這次可以走到哪裡?
example.com/gallery/7/*
example.com/gallery/*
example.com/*
*.example.com/*
對於「整個站點,或者它的一部分」,精靈還會詢問「這次可以走到哪裡?」它按從窄到寬的順序列出範圍,您選取的那一行的模式涵蓋什麼,任務就包括什麼。對於 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 圖片。在 Reddit 上,則在 Reddit 不接受程式時開啟。
- 總是 - 專案的每個地址都會開啟頁面;對於模式,只在它的第一個地址開啟一次。
頁面會在名為「下載開始前請確認」的視窗中開啟並等待。完成站點要求的操作,然後點選「繼續」:執行會從您最後停留的頁面開始,所以在搜尋頁面上,您輸入的查詢和設定的篩選條件都會保留。「取消」則讓執行在開始之前就停下。
在精靈的最後一步勾選「這個站點要我先登入」,就會設為「總是」。
修復解析器
在 NeoDownloader 視窗裡,專案的「屬性」分頁上有一張卡片,提供「修復解析器」:它會針對專案最近一次執行開啟配方編輯器,定位到開始一無所獲的那一步。編輯器還處於實驗階段。開啟之前,NeoDownloader 會提醒「配方編輯器還沒有做完」,並說明編輯器不一定能修好這次執行。