[爬蟲筆記] Python Scrapy 爬蟲教學:實作 PTT 資料爬取

python scrapy cover photo

此次實作 Python 爬蟲框架 Scrapy 來爬取 Ptt 100 頁的內容。從 Scrapy 安裝、Item 設置、Spiders 編寫到 Scrapy CSS 和 Xpath 抓取資料,詳細記錄 Scrapy 基礎入門步驟教學,提供大家參考,希望此篇爬蟲筆記有幫助到想學習 Scrapy 的朋友。

一、環境設置

1.安裝 Scrapy

2.建立第一個 Project

輸入後會自動建立一些文件和設定,資料結構如下:

  • scrapy.cfg:基礎設置
  • items.py:抓取條目的結構定義
  • middlewares.py:中間件定義
  • pipelines.py:管道定義,用於抓取數據後的處理
  • settings.py:全局設置
  • spiders\ptt.py:爬蟲主體,定義如何抓取需要的數據

二、撰寫 Scrapy 爬蟲

1.設置 items.py

首先在 items.py 內定義一些想要抓取的項目,本次爬取項目包含 PTT 文章標題、文章作者、發文日期、噓推文數、內文網址等等。

2.設置 ptt.py

首先 import 剛剛寫好的 class PostItem (from ptt.items import PostItem),再來 import scrapy 進來。

建立一個 Class 繼承 scrapy.Spider (Scrapy 裡基本的 spider Class),裡面包含三個屬性:

  1. name (爬蟲命名)
  2. allowed_domains (允許的網域):如果網址不屬於此域名將丟棄,可允許多個網域
  3. start_urls (起始網址) :將從這裡定義的網址抓取,允許多個網址

此次任務是要爬 PTT Gossiping 版 100 頁的內容,這邊 url 寫了一個迴圈來爬取頁面。開始爬後會發現卡在系統判別是否已滿 18 歲的畫面,所以帶上了 cookies={‘over18′:’1’} 來跳過系統判別年齡。

scrapy 它有五個基本方法可以定位元素,常用的是 css 或 xpath 方法,進階點可以選擇使用正則,本篇將以 css 方法來介紹:

  1. xpath(): 使用 xpath 語言選擇的節點
  2. css(): 使用 css 語言選擇節點
  3. extract(): 返回被選擇元素字串
  4. extract_first():返回第一個匹配元素字串
  5. re(): 使用正則表達式提取的字串列表

三、運行 Scrapy 爬蟲

返回terminal 命令行進入項目目錄,輸入命令即可運行:

 

如果需要對抓取的結果進行保存,只需要在命令行加參數 -o {filename} 即可:

最後~

▍關於 Python 爬蟲 相關其他文章,可以參考:

▍關於 Python 爬蟲併發的方法 相關文章,可以參考:

▍Python相關教學延伸閱讀:

那麼有關於 [爬蟲筆記] Python Scrapy 爬蟲教學:實作 PTT 資料爬取 的介紹就到這邊告一個段落囉!有任何問題可以在以下留言~

有關 Max行銷誌的最新文章,都會發佈在 Max 的 Facebook 粉絲專頁,如果想看最新更新,還請您按讚或是追蹤唷!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *