scrapy 爬電影 抓取資料

Ethan'Cui發表於2017-12-19

前段時間學python學完了基礎的知識當然是要來點實際的東西玩玩了。爬蟲,這個對於python再適合不過,今天就先來爬一個電影網站,下一篇我們來爬美女圖片,這篇就做為一個爬蟲基礎練練手。將他有的資源資訊爬下來儲存成一個csv檔案。

環境 mac python3.6.1 pycharm

Step1

預設scrapy的環境是安裝好的。我們在終端裡輸入scrapy startproject 工程名新建一個爬蟲專案,scrapy會為我們初始化一個基本結構如下圖:

image.png
其中Id97Index.py是我們編寫邏輯的檔案,也是我們自己建的。除此之外都會在新建專案時生成。

Step2

在items.py中建立我們的實體類:

image.png
分別為“封面”、“電影名”、“評分”、“型別” 該實體類會在後面提交資料時scrapy進行寫入需要用到的,總之呢。你需要存什麼資料就寫對應欄位,後面儲存檔案後你就明白了

Step3

現在可以開始寫我們爬蟲的邏輯了 如Step1我們在spiders資料夾下新建一個Index97Index.py再新建類Id97Movie繼承CrawlSpider如下:

image.png
其中name為我們啟動專案的名字 host主要為後面做一些拼接 allowed_domains主域名 start_urls需要請求爬的初始urls

image.png

image.png

從原始碼可以看到namestart_urls是必要的引數,並且一開始的請求是迴圈start_urls,所以一定不能忘記,名字也不能定義。

Step4

覆寫parse方法

image.png

image.png

  • 根據chrome中檢視到每個item內容都在紅框中這個標籤內,我們可以右鍵選擇copy xpath(xpath知識可以google兩分鐘就會)進行xpath選取
  • 獲取下一頁url,同樣找到下一頁的xpath。這裡我是把最下面的"上一頁,下一頁 頁碼"都拿來。因為下一頁這個標籤總在倒數第二個就可以使用pages[-2]獲取下一頁的url
  • for迴圈處理每個列表列的內容使用parse_item方法處理
  • 最後yield Request(nextPageUrl, callback=self.parse)再次請求下一頁的內容,依然使用parse方法處理這樣迴圈直到最後一頁 parse_item程式碼:
    image.png

Step5

設定settings.py我們需要一個存放路徑及格式

image.png

Step6

到該專案的目錄下在終端執行scrapy crawl name(step3中所說的name='id97'),也可將命令直接放在python檔案中進行執行

image.png

至此這個爬蟲就基本結束了。settings.py中還有一些優化配置網上還是比較多的。可以自行配置試試看 原始碼: 原始碼地址

相關文章