{"repo":"twtrubiks/PttImageSpider","free":true,"listed":false,"github":"https://github.com/twtrubiks/PttImageSpider","clone":"git clone https://github.com/twtrubiks/PttImageSpider.git","description":"PTT 圖片下載器 (抓取整個看板的圖片，並用文章標題作為資料夾的名稱 ) (使用Scrapy)","language":"Python","stars":18,"topics":["python","scrapy","ptt","image","spider","download"],"license":null,"category":"scrapers-browser-automation","readme_excerpt":"PTT 爬蟲圖片下載器 (使用Scrapy) PttImageSpider 抓取PTT整個看板的圖片，並用文章標題作為資料夾的名稱 Demo Video - Linux V2 (demo ) Demo Video - Linux V1 (教學+demo ) 特色 抓取PTT特定看板全部的圖片 使用文章標題作為資料夾的名稱 可指定看板，也可只抓特定作者的文章 預設刻意降速以減輕站台負擔，實測約每分鐘 100 張圖片，可用參數解除限制（詳見技術說明） 使用方法 抓取預設看板 (AKB48) 的全部圖片 用 -a board=板名 指定其他看板，不需要修改程式碼 用 -a author=作者ID 只抓特定作者的文章，兩個參數可以一起用 如果想直接改掉預設看板，修改 PttImageSpider/PttImageSpider/spiders/pttspider.py 裡的 執行畫面 抓取範圍 預設沒有數量限制，會從看板最新的一頁開始，一路往回抓到最舊的第一頁。 抓取順序是由新到舊。想「只抓最近的圖」不需要改程式，跑一陣子按 Ctrl + C 中斷即可。 這個順序需要 settings.py 裡的 DEPTH PRIORITY 與兩個 FIFO 佇列設定才成立，詳見下方技術說明的「廣度優先走訪」。 Scrapy 預設的 LIFO 佇列會讓同一頁的文章由下往上處理，最新的幾篇反而最後才抓。 實際下載完成的順序仍然不會完全照這個排列，因為同時會有多個下載在進行，誰先傳完誰先寫入。 關於中斷： 按第一次 Ctrl + C 時 Scrapy 會優雅收尾，把已經在進行中的下載處理完再關閉，並輸出統計資訊。 收尾可能要等數十秒。不想等的話再按第二次 Ctrl + C 會立即強制中斷，但可能留下寫到一半的圖片檔。 也可以用參數限制範圍，不必手動中斷： 這兩個都是 Scrapy 內建的設定，用 -s 指定只影響這次執行，不會改到 settings.py。 CLOSESPIDER ITEMCOUNT 是抓到幾篇就停。算的是「成功存到圖的文章數」。 CLOSESPIDER TIMEOUT 是跑幾秒就停，單位是秒，從爬蟲啟動開始計時。 兩者觸發時都是優雅關閉，會先把進行中的下載處理完，所以實際的篇數和時間都會比設定值再多一些。 輸出格式 圖片會儲存在專案根目錄的 images/ 資料夾下： 每篇文章的圖片會以文章標題作為資料夾名稱進行分類儲存。 執行環境 Python 3.13 Scrapy 2.17.0 Pillow 12.0+ brotli 1.0+ (用於解壓縮 PTT 網頁內容) 安裝套件 技術說明 Brotli 壓縮支援 PTT 網站使用 Brotli 壓縮（br encoding）來傳輸網頁內容。Scrapy 的 HttpCompressionMiddleware 會自動處理各種壓縮格式： - gzip, deflate - Scrapy 內建支援 - br (Brotli) - 需要安裝 brotli 套件 自動處理機制： 只要安裝 brotli 套件（ pip install brotli ），Scrapy 會自動： 1. 偵測伺服器回應的 Content-Encoding: br 2. 使用 brotli 解壓縮網頁內容 3. 不需要撰寫任何額外程式碼 這是 Scrapy「電池內建」(batteries included) 的設計理念 - 安裝套件即可使用，完全自動化。 imgur 圖片下載處理 本專案特別處理了 imgur 圖片的下載問題。imgur 會檢查","default_branch":null,"files":null,"tree":[],"storefront":"/r/twtrubiks","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/twtrubiks/PttImageSpider/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}