爬蟲教程——用Scrapy爬取豆瓣TOP250
最好的學習方式就是輸入之後再輸出,分享一個自己學習scrapy框架的小案例,方便快速的掌握使用scrapy的基本方法。
本想從零開始寫一個用Scrapy爬取教程,但是官方已經有了樣例,所以還是不寫了,儘量分享在網上不太容易找到的東西。自己近期在封閉培訓,更文像蝸牛一樣,抱歉。
Scrapy簡介
Scrapy是一個為了爬取網站資料,提取結構性資料而編寫的應用框架。 可以應用在包括資料探勘,資訊處理或儲存歷史資料等一系列的程式中。
其最初是為了 頁面抓取 (更確切來說, 網路抓取 )所設計的, 也可以應用在獲取API所返回的資料(例如 Amazon Associates Web Services ) 或者通用的網路爬蟲。
如果此前對scrapy沒有了解,請先檢視下面的官方教程連結。
架構概覽:
Scrapy入門教程:
爬蟲教程
首先,我們看一下豆瓣TOP250頁面,發現可以從中提取電影名稱、排名、評分、評論人數、導演、年份、地區、型別、電影描述。
Item物件是種簡單的容器,儲存了爬取到得資料。其提供了類似於詞典的API以及用於宣告可用欄位的簡單語法。所以可以宣告Item為如下形式。
class DoubanItem(scrapy.Item):
# 排名
ranking = scrapy.Field()
# 電影名稱
title = scrapy.Field()
# 評分
score = scrapy.Field()
# 評論人數
pople_num = scrapy.Field()
# 導演
director = scrapy.Field()
# 年份
year = scrapy.Field()
# 地區
area = scrapy.Field()
# 型別
clazz = scrapy.Field()
# 電影描述
decsription = scrapy.Field()
我們抓取到相應的網頁後,需要從網頁中提取自己需要的資訊,可以使用xpath語法,我使用的是BeautifulSoup網頁解析器,經過BeautifulSoup解析的網頁,可以直接使用選擇器篩選需要的資訊。有一些說明寫到程式碼註釋裡面去了,就不再贅述。
Chrome 也可以直接複製選擇器或者XPath,如下圖所示。
class douban_spider(Spider):
count = 1
# 爬蟲啟動命令
name = 'douban'
# 頭部資訊,偽裝自己不是爬蟲程式
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36',
}
# 爬蟲啟動連結
def start_requests(self):
url = '
yield Request(url, headers=self.headers)
# 處理爬取的資料
def parse(self, response):
print('第', self.count, '頁')
self.count += 1
item = DoubanItem()
soup = BeautifulSoup(response.text, 'html.parser')
# 選出電影列表
movies = soup.select('#content div div.article ol li')
for movie in movies:
item['title'] = movie.select('.title')[0].text
item['ranking'] = movie.select('em')[0].text
item['score'] = movie.select('.rating_num')[0].text
item['pople_num'] = movie.select('.star span')[3].text
# 包含導演、年份、地區、類別
info = movie.select('.bd p')[0].text
director = info.strip().split('\n')[0].split(' ')
yac = info.strip().split('\n')[1].strip().split(' / ')
item['director'] = director[0].split(': ')[1]
item['year'] = yac[0]
item['area'] = yac[1]
item['clazz'] = yac[2]
# 電影描述有為空的,所以需要判斷
if len(movie.select('.inq')) is not 0:
item['decsription'] = movie.select('.inq')[0].text
else:
item['decsription'] = 'None'
yield item
# 下一頁:
# 1,可以在頁面中找到下一頁的地址
# 2,自己根據url規律構造地址,這裡使用的是第二種方法
next_url = soup.select('.paginator .next a')[0]['href']
if next_url:
next_url = ' + next_url
yield Request(next_url, headers=self.headers)
然後在專案資料夾內開啟cmd命令,執行scrapy crawl douban -o movies.csv
就會發現提取的資訊就寫入指定檔案了,下面是爬取的結果,效果很理想。
原文連結:https://mp.weixin.qq.com/s/eRDNn1uE-z-Oq-782kd-Dw
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31555494/viewspace-2218239/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- scrapy入門:豆瓣電影top250爬取
- 豆瓣top250資料爬取
- python——豆瓣top250爬取Python
- Python爬蟲筆記(4):利用scrapy爬取豆瓣電影250Python爬蟲筆記
- 專案之爬蟲入門(豆瓣TOP250)爬蟲
- [python爬蟲] BeautifulSoup和Selenium對比爬取豆瓣Top250電影資訊Python爬蟲
- scrapy爬取豆瓣電影資料
- 手把手教你網路爬蟲(爬取豆瓣電影top250,附帶原始碼)爬蟲原始碼
- 使用python爬取豆瓣電影TOP250Python
- Python爬取分析豆瓣電影Top250Python
- 【python爬蟲案例】利用python爬取豆瓣電影TOP250評分排行資料!Python爬蟲
- Python爬蟲教程-17-ajax爬取例項(豆瓣電影)Python爬蟲
- 爬蟲--Scrapy簡易爬蟲爬蟲
- scrapy定製爬蟲-爬取javascript內容爬蟲JavaScript
- scrapy爬蟲爬蟲
- 爬取豆瓣電影Top250和資料分析
- 06、豆瓣爬蟲爬蟲
- 爬蟲豆瓣美女爬蟲
- 爬蟲 Scrapy框架 爬取圖蟲圖片並下載爬蟲框架
- Python爬蟲-用Scrapy框架實現漫畫的爬取Python爬蟲框架
- Python爬蟲教程-30-Scrapy 爬蟲框架介紹Python爬蟲框架
- 爬蟲01:爬取豆瓣電影TOP 250基本資訊爬蟲
- 爬蟲練手-豆瓣top250(go版以及python版)爬蟲GoPython
- 【python爬蟲案例】利用python爬取豆瓣讀書評分TOP250排行資料Python爬蟲
- 正規表示式_爬取豆瓣電影排行Top250
- Python爬蟲教程-31-建立 Scrapy 爬蟲框架專案Python爬蟲框架
- Scrapy爬蟲-草稿爬蟲
- Scrapy爬蟲框架爬蟲框架
- 豆瓣電影TOP250爬蟲及視覺化分析筆記爬蟲視覺化筆記
- python爬蟲知識點三--解析豆瓣top250資料Python爬蟲
- Python爬蟲框架:scrapy爬取高考派大學資料Python爬蟲框架
- 爬蟲(9) - Scrapy框架(1) | Scrapy 非同步網路爬蟲框架爬蟲框架非同步
- scrapy入門教程()部署爬蟲專案爬蟲
- scrapy爬蟲代理池爬蟲
- 爬蟲實戰scrapy爬蟲
- python爬蟲 爬取豆瓣電影 1-10 ajax 資料Python爬蟲
- 用python寫一個豆瓣短評通用爬蟲(登入、爬取、視覺化)Python爬蟲視覺化
- 快速上手——我用scrapy寫爬蟲(一)爬蟲