爬蟲:獲取豆瓣電影愛情片榜單封面圖片

與全地球廣大單身汪一樣,電影中單純而美好的愛情總是讓人陷入美好無瑕的幻想。

代碼已上傳至個人GitHub,可供查看:獲取豆瓣電影愛情片榜單封面圖片

爬蟲:獲取豆瓣電影愛情片榜單封面圖片

目的:獲取豆瓣電影愛情片榜單封面圖片,並保存到本地。

思路:

1、分析網頁URL,查看規律

2、敲代碼(圖片名設置爲該電影名稱)

 一、打開豆瓣電影分類排行榜-愛情片,F12審查元素

 在向下滑動的過程中,發現如下規律,每過20張圖片就出現一個url,查看URL,就可以發現一些馬腳

 

 

通過對網頁和URL的分析,可以得出以下結論:

  • 每過20張圖片就出現一個URL,即翻頁,所以每頁的圖片數量爲20張,這在URL中也有體現:limit=20;
  • URL中的start=xx表示該頁是從第幾張開始的;
  • URL中的interval_id=100%3A90表示的是評價在前10%的電影;
  • URL中的type=13表示的是電影類型的代號,13指的是愛情片;
  • 在以上條件的限制下,滿足要求的電影數量爲351部。

 二、上代碼,爲了防止IP被封,我使用了一些代理,並隨機設置了睡眠時間,能夠更有效的獲取數據

from urllib import request
import json
import time
import random
class douban_love_moives():

    def __init__(self, k):
        self.k = k

    def load_moive(self, start):
        url = 'https://movie.douban.com/j/chart/top_list?type=13&interval_id=100%3A90&action=&start=' + str(
            start) + '&limit=20'
        time.sleep(random.randint(1, 4))
        rsp = request.urlopen(url)
        json_data = json.loads(rsp.read().decode())

        for moive in json_data:
            self.k += 1
            time.sleep(random.randint(2, 5))
            try:
                request.urlretrieve(moive['cover_url'], 'F:\文件存放處\愛情片電影封面\\' + moive['title'] + '.jpg')
                print('第' + str(self.k) + '張圖片下載成功:' + moive['cover_url'])
            except Exception:
                print('第' + str(self.k) + '張圖片下載失敗:' + moive['cover_url'])

    def get_moives(self):
        for start in range(0, 351, 20):

            # 使用代理步驟
            # - 1、設置代理地址
            proxys = [{'http': '39.137.69.10:8080'},
                    {'http': '60.255.186.169:8888'},
                    {'http': '117.191.11.108:80'}]
            # - 2、創建ProxyHandler
            proxy = random.choice(proxys)
            proxy_handler = request.ProxyHandler(proxy)
            # - 3、創建Opener
            opener = request.build_opener(proxy_handler)
            # - 4、導入Opener
            request.install_opener(opener)
            self.load_moive(self.k)


if __name__ == '__main__':
    print('開始下載圖片......')
    moive = douban_love_moives(k=0)
    moive.get_moives()

運行結果:

 

 

代碼已上傳至個人GitHub,可供查看:獲取豆瓣電影愛情片榜單封面圖片

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章