利用request和re抓取猫眼电影排行

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/20803f59291c47e1e116c11963ce019e68711.jpg@160w_220h_1e_1c', 'title': '霸王别姬', 'actor': '张国荣,张丰毅,巩俐'}
{'index': '2', 'image': 'https://p0.meituan.net/movie/283292171619cdfd5b240c8fd093f1eb255670.jpg@160w_220h_1e_1c', 'title': '肖申克的救赎', 'actor': '蒂姆·罗宾斯,摩根·弗里曼,鲍勃·冈顿'}
{'index': '3', 'image': 'https://p0.meituan.net/movie/289f98ceaa8a0ae737d3dc01cd05ab052213631.jpg@160w_220h_1e_1c', 'title': '罗马假日', 'actor': '格利高里·派克,奥黛丽·赫本,埃迪·艾伯特'}

...

{'index': '99', 'image': 'https://p0.meituan.net/movie/885fc379c614a2b4175587b95ac98eb95045650.jpg@160w_220h_1e_1c', 'title': '阿飞正传', 'actor': '张国荣,张曼玉,刘德华'}
{'index': '100', 'image': 'https://p0.meituan.net/movie/c304c687e287c7c2f9e22cf78257872d277201.jpg@160w_220h_1e_1c', 'title': '龙猫', 'actor': '秦岚,糸井重里,岛本须美'}

猜你喜欢

转载自www.cnblogs.com/lokvahkoor/p/10763952.html
今日推荐