1. 程式人生 > 實用技巧 >python爬取貓眼電影資訊,取前100名看看哪些電影名列前茅

python爬取貓眼電影資訊,取前100名看看哪些電影名列前茅

本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯絡我們以作處理

一、前言

將貓眼電影庫中的經典影片,按照評分和評分人數綜合排序,取前100名
每天上午10點更新,相關資料來源於“貓眼電影庫”

二、課程亮點

1、分析網頁結構
2、css選擇器解析資料
3、儲存CSV檔案

三、所用到得庫

import requests  # 資料請求模組  第三方模組
import parsel  # 資料解析模組
import csv  # 內建模組

四、環境配置

python 3.6
pycharm
requests
parsel
csv

五、爬蟲案例的一般實現步驟:

1.確定資料所在的url地址(系統性的分析網頁結構<靜態/動態>)
2.傳送指定url地址的請求(requests)
3.資料解析(提取你自己想要的資料)
4.資料的儲存

六、找尋資料所在處

page_num = 0
for page in range(0, 91, 10):
    page_num += 1
    print(f'++++++++++++++++++++++++正在爬取第{page_num}頁資料++++++++++++++++++++++++')
    # 1.確定資料所在的url地址(系統性的分析網頁結構<靜態/動態>)
url = f'https://maoyan.com/board/4?offset={page}' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36', 'Host': 'maoyan.com', 'Cookie': '__mta=19307015.1608270378570.1608272883017.1608273840603.4; uuid_n_v=v1; uuid=5916177040F411EB8908174FD40B8B01D034C777885540CE816A24F19D4594A4; _csrf=203e7011454c450af49832bbb56b6b0c10a9a947c147679cd60805fd4a6b6d4e; _lxsdk_cuid=1740a7dbe93c8-0066c6e2268b8d-3c634103-1fa400-1740a7dbe94c8; _lxsdk=5916177040F411EB8908174FD40B8B01D034C777885540CE816A24F19D4594A4; _lx_utm=utm_source%3DBaidu%26utm_medium%3Dorganic; Hm_lvt_703e94591e87be68cc8da0da7cbd0be2=1608270376,1608271969; Hm_lpvt_703e94591e87be68cc8da0da7cbd0be2=1608273833; _lxsdk_s=176746274f8-4f3-eec-119%7C%7C12
' }

七、處理反爬:

 # 2.傳送指定url地址的請求(requests)   處理反爬
    response = requests.get(url=url, headers=headers)
    html_data = response.text  # str  正則
    # print(html_data)

八、提取資料:

# 3.資料解析(提取你自己想要的資料)  css選擇器
    # 3.1 轉換資料型別
    selector = parsel.Selector(html_data)
    # print(selector)
    # 3.2 資料解析
    dds = selector.css('.board-wrapper dd')  # 所有dd標籤

    for dd in dds:  # 資料的二次提取
        title = dd.css('.name a::attr(title)').get()  # 電影名
        star = dd.css('.star::text').get().strip()  # 主演
        releasetime = dd.css('.releasetime::text').get().strip()  # 上映時間
        score = dd.css('.score i::text').getall()  # 上映時間
        score = ''.join(score)
        img_url = dd.css('img:nth-child(2)::attr(data-src)').get()  # 上映時間

        print(title, star, releasetime, score, img_url, sep=' | ')

九、資料儲存:

 # 4.資料的儲存
        with open('貓眼100.csv', mode='a', encoding='utf-8', newline='') as f:
            csv_write = csv.writer(f)
            csv_write.writerow([title, star, releasetime, score, img_url])