使用網(wǎng)站提供的API爬取網(wǎng)站中的數(shù)據(jù)是一種操作較為簡單直接的方式悼院,例如豆瓣網(wǎng)提供了對于電影、書籍等資源的各種數(shù)據(jù)的API咒循,我們可以通過調(diào)用API來得到所需的數(shù)據(jù)据途,代碼的編寫也較靈活簡潔绞愚。通過API獲取數(shù)據(jù)的缺點(diǎn)是有些網(wǎng)站會(huì)限制API調(diào)用的次數(shù)和頻率,用戶需要付費(fèi)來升級成高級用戶來獲取更靈活的API調(diào)用颖医。
一.使用Jupyter Notebook編寫Python
Jupyter Notebook是一個(gè)交互式的筆記本位衩,可以理解成是一個(gè)IDE,支持40多種語言
1.安裝
conda install jupyter
2.運(yùn)行
jupyter notebook
輸入以上命令即可在瀏覽器中打開編輯器
點(diǎn)擊右上角New新建Python 3的Notebook后即可開始編寫代碼
二. 豆瓣電影TOP250數(shù)據(jù)爬取
先引入一個(gè)urllib的包來發(fā)送http請求
urllib是一個(gè)包含幾個(gè)模塊來處理請求的庫熔萧。分別是:
urllib.request 發(fā)送http請求
urllib.error 處理請求過程中,出現(xiàn)的異常蚂四。
urllib.parse 解析url
urllib.robotparser 解析robots.txt 文件
import urllib.request as request
為使結(jié)果以json格式顯示,于是添加以下代碼
import json
print(json.loads(crawl_content.decode('utf8')))
爬取數(shù)據(jù)
import urllib.request as request
import json
url = 'https://api.douban.com/v2/movie/top250'
crawl_content = request.urlopen(url).read()
movies = json.loads(crawl_content.decode('utf8'))['subjects']
for movie in movies:
print(json.loads(crawl_content.decode('utf8')))
得到部分結(jié)果如下:為使結(jié)果更簡潔哪痰,只提取電影名稱遂赠、年份、類型晌杰、評分四項(xiàng)數(shù)據(jù)跷睦,將代碼修改如下:
import urllib.request as request
import json
url = 'https://api.douban.com/v2/movie/top250'
crawl_content = request.urlopen(url).read()
movies = json.loads(crawl_content.decode('utf8'))['subjects']
for movie in movies:
print(movie['title'],movie['year'],movie['genres'],movie['rating']['average'])
得到結(jié)果:從結(jié)果可看出豆瓣的API允許用戶獲取前20項(xiàng)結(jié)果的數(shù)據(jù)