Python爬蟲教程-17-ajax爬取例項(豆瓣電影)

肖朋偉發表於2018-09-06

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%E7%88%AC%E8%99%AB/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)

執行結果

可以看到結果在一行顯示
這裡寫圖片描述

修改輸出格式

# 爬取豆瓣電影資料
# 瞭解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 爬蟲隨筆

  • 本筆記不允許任何個人和組織轉載

相關文章