Python爬蟲教程-17-ajax爬取實例(豆瓣電影)
ajax: 簡單的說,就是一段js代碼,通過這段代碼,可以讓頁面發送異步的請求,或者向服務器發送一個東西,即和服務器進行交互
對於ajax:
- 1.一定會有 url,請求方法(get, post),可能有數據
- 2.一般使用 json 格式
爬取豆瓣電影
- 網站分析:
- 打開豆瓣電影網站:https://movie.douban.com/,選擇【排行榜】,點擊【動作】分類
- 一直往下滑,可以看到這樣的效果:快到低的時候又有了新的內容,也就是往下沒完
- 基本可以判定使用了 ajax 請求,進行異步的加載
- 然后進去檢查請求的信息:
- 1.右鍵【檢查】>【Network】
- 2.向下滾動頁面
- 3.可以看到請求在不斷不更新,點擊一個請求,就可以看到請求的信息
- 代碼文件:https://xpwi.github.io/py/py爬蟲/py19db.py
# 爬取豆瓣電影數據
# 了解ajax的爬取方式
# https://movie.douban.com/
from urllib import request
import json
# url信息:interval_id表示排名段(可自行修改),limit限制20個
url = "https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=&start=20&limit=20"
rsp = request.urlopen(url)
data = rsp.read().decode()
data = json.loads(data)
print(data)
運行結果
可以看到結果在一行顯示
修改輸出格式
- 對於返回的json數據,我們選擇想要的內容,想要的格式輸出
- 代碼文件:https://xpwi.github.io/py/py爬蟲/py19db2.py
# 爬取豆瓣電影數據
# 了解ajax的爬取方式
# https://movie.douban.com/
from urllib import request
import json
# url信息:interval_id表示排名段(可自行修改),limit限制20個
url = "https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=&start=20&limit=20"
rsp = request.urlopen(url)
data = rsp.read().decode()
data = json.loads(data)
# 遍歷輸出每個'k'和'v'的值
for item in data:
print("排名:", item['rank'], "\n",
"名稱:", item['title'], "\n",
"類型:", item['types'], "\n",
"主演:", item['actors'], "\n",
"分數:", item['score'],"\n-------------",)
運行結果
這里結果就比較順眼了,如果需要更改排名段,因為是get請求,修改需要在url參數即可
更多文章鏈接:Python 爬蟲隨筆
- 本筆記不允許任何個人和組織轉載