打造一款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 即可獲取