Python爬蟲筆記(4):利用scrapy爬取豆瓣電影250
在網上閱讀有關scrapy的教程也有一段時間了,可是一直沒能真正寫出能爬出資料的程式碼。。。今天趁著有點時間,趕快實戰一下吧!
目標:豆瓣電影250
為啥選它呢,因為網上有關爬取豆瓣電影的教程多呀,可以很容易的復刻他人的程式碼,少走彎路。
可是,可是,萬萬沒想到的是,這次的寫爬蟲過程中我幾乎把能踩的坑全踩個遍,菜鳥的煩惱~ 。~
同時我也明白了,人家的以前寫的程式碼,擱到現在未必全部適用。
先把寫的流程過一下,然後在慢慢填坑。
至於詳細的教程可以參考scrapy中文網
- 首先,開啟cmd,切換到你希望的路徑中,啟動專案
scrapy startproject douban
-
開啟pycharm,找到所在的專案的資料夾並開啟,如圖
- 在items.py填寫程式碼如下
import scrapy
class DoubanItem(scrapy.Item):
ranking = scrapy.Field() # 排名
name = scrapy.Field() #電影名稱
score = scrapy.Field() #得分
people_mun = scrapy.Field() #評價人數
introduction = scrapy.Field() #電影簡介
- 在spiders資料夾下建立douban_spider.py檔案,然後填寫程式碼如下
import scrapy
from douban.items import DoubanItem
class DoubanSpiderSpider(scrapy.Spider):
name = 'douban_spider' #定義爬蟲的名字
start_urls = ['https://movie.douban.com/top250?start=0&filter='] #爬取的起始頁
#定義解析函式,用來解析返回的response物件
def parse(self, response):
#用xpath選擇器提取資料
infos = response.xpath("//ol[@class='grid_view']/li")
for info in infos:
ranking = info.xpath(".//div[@class='pic']/em/text()").get()
name = info.xpath(".//div[@class='hd']/a/span[1]/text()").get()
score = info.xpath(".//div[@class='star']/span[2]/text()").get()
people_mun = info.xpath(".//div[@class='star']/span[4]/text()").get()
introduction = info.xpath(".//p[@class='quote']/span/text()").get()
item = DoubanItem(ranking=ranking, name=name, score=score, people_mun=people_mun, introduction=introduction)
yield item
next_url = response.xpath("//span[@class='next']/a/@href").get() #獲取下一頁連結
if not next_url:
return
else:
next_url = 'https://movie.douban.com/top250'+next_url #將獲取的下一頁連結拼接完整
yield scrapy.Request(next_url, callback=self.parse) #將提取的URL返回給解析函式
- 最後在所在專案的資料夾下執行power shell,輸入如下
scrapy crawl douban_spider -o douban.csv
scrapy就會自動將提取的資料儲存到CSV檔案當中去。
可是現實往往沒有那麼美好,下面就是我開始填坑的辛苦路程了。。。
- 首先,返回的是403還是什麼的,弄得我一臉懵逼,什麼鬼,網不好嗎?
突然間,我靈光一閃,憑著那僅有的一丟丟經驗,headers浮現在了腦海當中。
headers是放在哪裡的?settings.py! - 好了終於有資料了!心裡一陣激動,mmp,怎麼只有前25條電影資料?
眼尖的我發現了這個
還好我看過scrapy中文網中的採花大盜教程,跟著在Middleware中設定一遍
def process_request(self, request, spider):
referer = request.url
if referer:
request.headers['Referer'] = referer
然後再在settings裡面啟動middleware
但是應該開啟的是紅箭頭所示的,而不是綠箭頭的,這又是一個坑,自己沒動腦子就踩上去了。。。
- 其實除了這些還有很多磕磕絆絆呢,像是我沒有拼接next_url,start_url設定成了‘https://movie.douban.com/top250’,自作聰明的新增了allowed_domains導致爬取出錯。。。都是淚啊~~~
最後貼上第一個scrapy爬到的成果吧
作為一個全靠自己摸索前進的菜鳥的學習之路,就是一個踩坑填坑的過程,但是當你踩的坑多了,那說明,你浪費的時間也就多了! _ !
相關文章
- 爬蟲01:爬取豆瓣電影TOP 250基本資訊爬蟲
- scrapy入門:豆瓣電影top250爬取
- 爬蟲教程——用Scrapy爬取豆瓣TOP250爬蟲
- 【python爬蟲案例】利用python爬取豆瓣電影TOP250評分排行資料!Python爬蟲
- 使用python爬取豆瓣電影TOP250Python
- Python爬取分析豆瓣電影Top250Python
- scrapy爬取豆瓣電影資料
- 豆瓣電影TOP250爬蟲及視覺化分析筆記爬蟲視覺化筆記
- [python爬蟲] BeautifulSoup和Selenium對比爬取豆瓣Top250電影資訊Python爬蟲
- Python爬蟲教程-17-ajax爬取例項(豆瓣電影)Python爬蟲
- python爬蟲 爬取豆瓣電影 1-10 ajax 資料Python爬蟲
- 爬取豆瓣電影Top250和資料分析
- 手把手教你網路爬蟲(爬取豆瓣電影top250,附帶原始碼)爬蟲原始碼
- python——豆瓣top250爬取Python
- 正規表示式_爬取豆瓣電影排行Top250
- 【python爬蟲案例】利用python爬取豆瓣讀書評分TOP250排行資料Python爬蟲
- Python scrapy爬蟲學習筆記01Python爬蟲筆記
- 豆瓣top250資料爬取
- python更換代理爬取豆瓣電影資料Python
- 擼個爬蟲,爬取電影種子爬蟲
- Python爬蟲入門 | 7 分類爬取豆瓣電影,解決動態載入問題Python爬蟲
- Python 爬蟲實戰(1):分析豆瓣中最新電影的影評Python爬蟲
- Python爬蟲例項:爬取貓眼電影——破解字型反爬Python爬蟲
- 利用scrapy建立初始Python爬蟲專案Python爬蟲
- 爬蟲練手-豆瓣top250(go版以及python版)爬蟲GoPython
- Python爬蟲框架:scrapy爬取高考派大學資料Python爬蟲框架
- 專案之爬蟲入門(豆瓣TOP250)爬蟲
- 【Python】從0開始寫爬蟲——轉身扒豆瓣電影Python爬蟲
- python爬蟲—學習筆記-4Python爬蟲筆記
- python爬蟲Scrapy框架Python爬蟲框架
- 【Python篇】scrapy爬蟲Python爬蟲
- Python爬蟲—Scrapy框架Python爬蟲框架
- 利用Python爬蟲爬取天氣資料Python爬蟲
- 爬蟲--Scrapy簡易爬蟲爬蟲
- scrapy定製爬蟲-爬取javascript內容爬蟲JavaScript
- Python網路爬蟲4 - scrapy入門Python爬蟲
- python爬蟲知識點三--解析豆瓣top250資料Python爬蟲
- Python爬蟲-用Scrapy框架實現漫畫的爬取Python爬蟲框架