1. 程式人生 > >利用request和re抓取貓眼電影排行

利用request和re抓取貓眼電影排行

offset requests url oar 復習 .com one text mozilla

import requests
import re
import time

def get_one_page(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0'  # User-Agent可以在網上搜一下,很多
    }
    response = requests.get(url, headers=headers)
    if response.status_code == 200:
        return response.text
    return None

def main():
    for page in range(0,10):
        url = 'https://maoyan.com/board/4'
        if page > 0:
            url += '?offset='+str(page*10)
        html = get_one_page(url)  # 抓取
        data = parse_one_page(html)  # 解析
        time.sleep(1)  # 限制抓取速度,避免觸發反爬
        for i in data:  # 輸出
            print(i)

def parse_one_page(html):
    pattern = re.compile(
    '<dd>.*?board-index.*?>(\d*)</i>'+  # 電影id
        '.*?data-src="(.*?)"'+  # 圖片鏈接
        '.*?title="(.*?)"'+  # 電影名稱
        '.*?<p class="star">.*?主演:(.*?)\n.*?</p>'  # 主演
        ,
    re.S)  # 【復習】re.S修飾符:使.匹配包括換行符在內的所有字符
    items = re.findall(pattern, html)
    for item in items:
        yield {
            'index':item[0],
            'image':item[1],
            'title':item[2],
            'actor':item[3]
        }
    
main()

輸出:

{'index': '1', 'image': 'https://p1.meituan.net/movie/[email protected]_220h_1e_1c', 'title': '霸王別姬', 'actor': '張國榮,張豐毅,鞏俐'}
{'index': '2', 'image': 'https://p0.meituan.net/movie/[email protected]_220h_1e_1c', 'title': '肖申克的救贖', 'actor': '蒂姆·羅賓斯,摩根·弗裏曼,鮑勃·岡頓'}
{'index': '3', 'image': 'https://p0.meituan.net/movie/[email protected]_220h_1e_1c', 'title': '羅馬假日', 'actor': '格利高裏·派克,奧黛麗·赫本,埃迪·艾伯特'}

...

{'index': '99', 'image': 'https://p0.meituan.net/movie/[email protected]_220h_1e_1c', 'title': '阿飛正傳', 'actor': '張國榮,張曼玉,劉德華'}
{'index': '100', 'image': 'https://p0.meituan.net/movie/[email protected]_220h_1e_1c', 'title': '龍貓', 'actor': '秦嵐,糸井重裏,島本須美'}

利用request和re抓取貓眼電影排行