python爬虫精选04集(猫眼电影实战)

python爬虫精选04集(猫眼电影实战)

python学习目录传送门

爬取猫眼电影信息 :猫眼电影-榜单-top100榜

  • 第1步完成:
    猫眼电影-第1页.html
    猫眼电影-第2页.html
    … …

  • 第2步完成:
    1、提取数据 :电影名称、主演、上映时间
    2、先打印输出,然后再写入到本地文件

一. 分析拆解

  • https://maoyan.com/board/4
    在这里插入图片描述
  • F12 【点击123…页查看请求头的数据变化】
    在这里插入图片描述

二.上码

import requests
import re
import time
import random


class MaoyanSpider(object):
    # 初始化请求参数
    def __init__(self):
        self.url = 'https://maoyan.com/board/4?offset={}'
        self.headers = {
    
    
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1'}
        self.i = 0

    # 获取html网页源码
    def get_html(self, url):
        html = requests.get(url=url, headers=self.headers).text
        # 直接调用解析函数
        self.parse_html(html)

    # 正则解析函数
    def parse_html(self, html):
        regex = '<div class="movie-item-info">.*?title="(.*?)".*?class="star">(.*?)</p>.*?releasetime">(.*?)</p>'
        pattern = re.compile(regex, re.S)
        # dd_list: [(),(),()]
        dd_list = pattern.findall(html)
        self.save_html(dd_list)

    # 保存数据函数
    def save_html(self, dd_list):
        
        item = {
    
    }
        for dd in dd_list:
            item['name'] = dd[0].strip()
            item['star'] = dd[1].strip()[3:]
            item['time'] = dd[2].strip()[5:15]
            print(item)
            self.i += 1

    # 启动函数
    def run(self):
        # 循环获取1-10页,切片具体参数【起始,结束,步长】
        for offset in range(0, 91, 10):
            url = self.url.format(offset)
            self.get_html(url)
            # 随机休眠3-5秒,控制抓取频率
            time.sleep(random.randint(3, 5))
        print('电影数量:', self.i)


if __name__ == '__main__':
    # 计算运行时间,并调用启动函数
    start_time = time.time()
    spider = MaoyanSpider()
    spider.run()
    end_time = time.time()
    print('执行时间:%.2f' % (end_time - start_time))

3.显示结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_38640052/article/details/107468382