Python實現(xiàn)電影排行榜自動網(wǎng)盤下載(1)Scrapy爬蟲框架

本人學(xué)習(xí)參考的是博主崔慶才的系列教程

cuiqingcai.com/912.html

cuiqingcai.com/3472.html

當然是比我寫的詳細的多啦,下面是我自己總結(jié)的學(xué)習(xí)過程


簡介

我們來看看要獲取的電影信息的網(wǎng)址

肖申克的救贖?https://movie.douban.com/subject/1292052/

霸王別姬 ?https://movie.douban.com/subject/1291546/

這個殺手不太冷 https://movie.douban.com/subject/1295644/

第一頁 https://movie.douban.com/top250?start=0&filter=

第二頁 https://movie.douban.com/top250?start=25&filter=

……

都很有規(guī)律不是嗎?而在Scrapy里面,就可以設(shè)定我們想要的規(guī)律,Scrapy就可以對這些符合規(guī)律的網(wǎng)址及頁面信息進行處理。先來看看成果吧,這一部分中,我們想要的結(jié)果就是輸出排行榜里面的電影名稱:

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


安裝

管理員命令行模式下輸入

Pip install scrapy

開始安裝 之前我出現(xiàn)的問題是沒有安裝依賴的庫?

先來一個

Pip install lxml

即可 出現(xiàn)問題勤用搜索引擎

項目初始化

建立一個文件夾douban,并在這個文件夾處開啟cmd 輸入

Scrappy startproject db


Pycharm用這個文件夾創(chuàng)建Project,douban/db處創(chuàng)建一個方便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下創(chuàng)建spider.py,這個文件用來爬取網(wǎng)頁,處理網(wǎng)址,我們需要告訴他我們想去的“倉庫”該怎么走,該怎么爬。

“倉庫”的入口是start_urls,走路的規(guī)則是必須沿著allow這個參數(shù)規(guī)定的網(wǎng)址和規(guī)律(這里參考正則表達式 注意轉(zhuǎn)義符\?)走,找到地點之后交給parse_item這個人來干活,follow=True表示順蔓摸瓜,某一個地點的相連的地點同樣要去拜訪一下。

這里這些地點就是

第一頁https://movie.douban.com/top250?start=0&filter=

第二頁https://movie.douban.com/top250?start=25&filter=

……等等“

“貨物”信息的獲取

下面輪到parse_item這個人來干活了,他需要從上述指定地點找到我們要的“貨物”的信息,“貨物”位于何處可以通過Xpath來查找。網(wǎng)頁上點右鍵查看源代碼,被給包住了,Xpath的功能就是通過這些標簽來找到特定信息。


瀏覽器F12打開調(diào)試控制臺,


指到該信息處,右側(cè)就會顯示出對應(yīng)的代碼


點右鍵有個好東西,


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


def parse_item(self,response):


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

print(name)

好了,測試一下,運行run.py出現(xiàn)以下問題,403 forbidden,網(wǎng)站懷疑我們是機器人操作,


于是在setting.py里面?zhèn)窝b我們是瀏覽器的正常操作,

增加一個

'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"

即可。


成功啦!



總結(jié)


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


本項目代碼:

github.com/seekerzz/douban

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 這兩天摸索了下scrapy,剛看文檔的時候覺得有點生無可戀,scrapy框架個人還是覺得比較難懂的,需要學(xué)習(xí)的地方...
    Treehl閱讀 5,687評論 7 10
  • 學(xué)習(xí)python時,爬蟲是一種簡單上手的方式,應(yīng)該也是一個必經(jīng)階段。本項目用Scrapy框架實現(xiàn)了抓取豆瓣top2...
    豌豆花下貓閱讀 1,152評論 0 6
  • 本篇內(nèi)容需要大家對scrapy框架有了解,并完成了入門學(xué)習(xí)才能繼續(xù)使用。 創(chuàng)建項目 scrape startpro...
    abeb6ca9bb86閱讀 771評論 0 1
  • 生活是這樣子不如詩轉(zhuǎn)身碰到現(xiàn)實 鬧鐘響起。 從趴著的睡姿翻過身,將胳膊抬起擱到頭后,口鼻間混糊不清的一聲嘆息。皺眉...
    杜連殳閱讀 207評論 0 1
  • 在 macOS 上會遇到一個問題:不同進程之間共享 NSUserDefaults 的數(shù)據(jù)。 NSUserDefau...
    SMThree閱讀 1,515評論 1 3