1. 程式人生 > >打造一款Python實現自動下載電影的“指令碼”!那種電影也可以哦!

打造一款Python實現自動下載電影的“指令碼”!那種電影也可以哦!

都很有規律不是嗎?而在Scrapy裡面,就可以設定我們想要的規律,Scrapy就可以對這些符合規律的網址及頁面資訊進行處理。先來看看成果吧,這一部分中,我們想要的結果就是輸出排行榜裡面的電影名稱:

而且我們其實可以做的更好。

Pycharm用這個資料夾建立Project,douban/db處建立一個方便IDE執行的檔案run.py

輸入

from scrapy.cmdline import execute

execute(['scrapy', 'crawl', 'douban'])

開啟douban/db/items.py,如該檔案的名字,這個是我們從豆瓣這個“倉庫”裡取出來的“貨”,我們想要的是什麼“貨”呢?電影名字。

classDbItem( scrapy.Item ) :

name = scrapy.Field ()

douban/db/db/spiders下建立spider.py,這個檔案用來爬取網頁,處理網址,我們需要告訴他我們想去的“倉庫”該怎麼走,該怎麼爬。

“貨物”資訊的獲取

下面輪到parse_item這個人來幹活了,他需要從上述指定地點找到我們要的“貨物”的資訊,“貨物”位於何處可以通過Xpath來查詢。網頁上點右鍵檢視原始碼,被給包住了,Xpath的功能就是通過這些標籤來找到特定資訊。

瀏覽器F12開啟除錯控制檯,

指到該資訊處,右側就會顯示出對應的程式碼

點右鍵有個好東西,

這個就可以拿來用啦。不幸的是,Scrapy經常不能識別出來,所以我們還需要會一點Xpath的語法(查一查10分鐘搞定),參考Copy的自己修改一下。這裡推薦Chrome的Xpath Helper這個外掛,可以檢視自己寫的Xpath正不正確。

def parse_item(self,response):

name=response.xpath('//*[@class="title"][1]')

print(name)

好了,測試一下,執行run.py出現以下問題,403 forbidden,網站懷疑我們是機器人操作,

於是在setting.py裡面偽裝我們是瀏覽器的正常操作,

增加一個

總結

Scrapy可用來爬特定規則的網址,並進行處理;allow、follow等引數告訴程式如何“順蔓摸瓜”;Xpath可方便的找出網頁中的資訊,本文舉到的例子僅僅是提取電影名,我們其實如文章一開始的圖片可以做的更豐富一些,對分數、演員、導演等加入一些判斷,選擇我們需要的電影。

原始碼請進群:125240963   即可獲取