1. 程式人生 > >爬取貓眼電影網前100的電影排名

爬取貓眼電影網前100的電影排名

爬取貓眼電影網前100的電影排名

貓眼電影網:http://maoyan.com/board/4
在這裡插入圖片描述

確定要爬取的資料:
1:排名
2:電影名稱
3:主演
4:上映舌尖
5:評分

構造下一頁url
首頁:http://maoyan.com/board/4?offset=0
第二頁 http://maoyan.com/board/4?offset=10
第十頁 http://maoyan.com/board/4?offset=100
我們發現url中變化的只有數字 那麼我們可以通過迴圈構造出這個url

我們需要的資訊全都在這些標籤中:
在這裡插入圖片描述

用紅色圈起來的地方 就是我們需要的資訊 我們一個個找到他們 然後將資訊提取出來
在這裡插入圖片描述

#!/usr/bin/env python 
# -*- coding: utf-8 -*-
# @Time    : 2018/11/5 18:06
# @Desc    : 爬取貓眼電影網前100的電影排名
import requests
import json
from pyquery import PyQuery as pq

headers = {
    'proxy': 'https: 219.135.169.85:47315',
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36'
                  ' (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'
}


def start_request(url):
    """發起請求 獲得頁面原始碼"""
    r = requests.get(url, headers=headers)
    return r.text


def parse(text):
    """解析原始碼 獲得資料"""
    doc = pq(text)
    # 找到頁面原始碼中的dd標籤
    infos = doc('dl.board-wrapper dd').items()
    for info in infos:
        refect = {}
        refect['rank'] = info.find('i.board-index').text()  # 排名
        refect['name'] = info.find('p.name a').text()   # 電影名字
        refect['actor'] = info.find('p.star').text()    # 演員
        refect['time'] = info.find('p.releasetime').text()  # 上映時間
        refect['score'] = info.find('p.score').text()   # 評分
        result_list.append(refect)
    return result_list


def write_json(result):
    """寫入json檔案"""
    s = json.dumps(result, indent=4, ensure_ascii=False)
    with open('cateye.json', 'w', encoding='utf8') as f:
        f.write(s)
    print("寫入完成")


def main():
    for i in range(10):
        """構造url"""
        url = "http://maoyan.com/board/4?offset={}".format(i * 10)
        text = start_request(url)
        result = parse(text)
    write_json(result)


if __name__ == "__main__":
    result_list = []
    main()

執行程式後來檢視json檔案:
在這裡插入圖片描述

OK 到此結束!