爬取豆瓣電影


一、任務描述

  爬取https://movie.douban.com/tag/#/豆瓣電影,選擇電影,中國大陸,2018年,按評分最高,爬取前200部,保存電影名稱,圖片鏈接,和電影評分。

  由於網頁是動態加載,每頁顯示20條,每一頁的網址是變化的,需要去網頁上查看網址。

  打開網頁,進入開發者模式。

   右鍵new_search_subjects,打開一個新的網頁,網頁以結構化數據的形式顯示了當前頁面加載的20部電影的詳細信息,例如,電影名稱,導演,圖片,評分等,此時頁面的網址就是要爬取時請求的網址。第一頁網址中start的值是0,點擊加載更多,加載下一頁,出現一個新的new_search_subjects,打開,可以發現,網址的start值變成20,其他不變。第三頁的start值變成40,其他不變。所以,加載電影時,一次加載20部,網址中只有start的值是變化的,從0開始,每次增加20,其他地方不變。爬取200部電影就是前10頁。

   從數據中可以發現,電影名稱是title字段,圖片鏈接是cover字段,評分是rate字段。

二、代碼

#-*-coding:utf-8-*-

import re
import json
import requests

ll = []
for c in range(10): #一頁顯示20條
    url=r'https://movie.douban.com/j/new_search_subjects?sort=S&range=0,10&tags=電影&start={}&countries=中國大陸&year_range=2018,2018'.format(c*20)
    headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
    page=requests.get(url=url,headers=headers).json()
    page_list = []
    for r in range(20):              #每次加載20條
        list=page['data']
        dict=list[r]
        item = {}
        item['name'] = dict['title']    #電影名稱
        item['img_src'] = dict['cover']     #圖片鏈接
        item['score']=dict['rate']          #電影評分
        page_list.append(item)
    ll.extend(page_list)
with open("F:/ans.json", 'w', encoding='utf-8') as f:
    json.dump(ll, f,ensure_ascii=False)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM