zoukankan      html  css  js  c++  java
  • day02.1 爬取豆瓣网电影信息

    """"""
    '''
    爬取豆瓣电影信息:
        电影排名、电影名称、电影url、电影导演
        电影主演、电影年份、电影类型
        电影评分、电影评论、电影简介
        
    1、分析所有主页的url
    第一页:
    https://movie.douban.com/top250?start=0&filter=
    第二页:
    https://movie.douban.com/top250?start=25&filter=
    第三页:
    https://movie.douban.com/top250?start=50&filter=
    
    '''
    import requests
    import re
    # 爬虫三部曲
    # 1、发送请求
    def get_page(url):
        response = requests.get(url)
        # print(response.text)
        return response
    
    
    # 2、解析数据
    def parse_index(html):
        ''''''
        '''
        电影排名、电影url、电影名称、电影导演、电影主演
        电影年份/电影类型、电影评分、电影评论、电影简介
        <div class="item">.*?<em class="">(.*?)</em>.*?<a href="(.*?)">
        .*?<span class="title">(.*?)</span>.*?导演: (.*?)主演: (.*?)<br>(.*?)</p>
        .*?<span class="rating_num".*?>(.*?)</span>.*?<span>(.*?)人评价</span>
        .*?<span class="inq">(.*?)</span>
        
        <div class="item">.*?<em class="">(.*?)</em>.*?<a href="(.*?)">.*?<span class="title">(.*?)</span>.*?导演: (.*?)主演: (.*?)<br>(.*?)</p>.*?<span class="rating_num".*?>(.*?)</span>.*?<span>(.*?)人评价</span>.*?<span class="inq">(.*?)</span>
        '''
        movie_list = re.findall('<div class="item">.*?<em class="">(.*?)</em>.*?<a href="(.*?)">.*?<span class="title">(.*?)</span>.*?导演: (.*?)主演: (.*?)<br>(.*?)</p>.*?<span class="rating_num".*?>(.*?)</span>.*?<span>(.*?)人评价</span>.*?<span class="inq">(.*?)</span>',
                   html,
                   re.S)
    
        return movie_list
    
    # 3、保存数据
    def save_data(movie):
        # 电影排名、电影url、电影名称、电影导演、电影主演
        # 电影年份 / 电影类型、电影评分、电影评论、电影简介
        top, m_url, name, daoyan, actor, year_type, 
        point, commit, desc = movie
        year_type = year_type.strip('
    ')
        data = f'''
                    ======== 欢迎观赏 ========
                            电影排名:{top}
                            电影url:{m_url}
                            电影名称:{name}
                            电影导演:{daoyan}
                            电影主演:{actor}
                            年份类型:{year_type}
                            电影评分:{point}
                            电影评论:{commit}
                            电影简介:{desc}
                    ======== 下次再来哟 ========
                    
    
                    
    
                    '''
        print(data)
    
        with open('douban_top250.txt', 'a', encoding='utf-8') as f:
            f.write(data)
    
        print(f'电影: {name} 写入成功...')
    
    if __name__ == '__main__':
        # 拼接所有主页
        num = 0
        for line in range(10):
            url = f'https://movie.douban.com/top250?start={num}&filter='
            num += 25
            print(url)
    
            # 1.往每个主页发送请求
            index_res = get_page(url)
    
            # 2.解析主页获取电影信息
            movie_list = parse_index(index_res.text)
    
            for movie in movie_list:
                # print(movie)
    
                # 3.保存数据
                save_data(movie)
  • 相关阅读:
    Oracle插入特殊字符问题
    Oracle数据库中IN参数个数超过1000的问题
    解决tomcat 内存溢出问题
    IDEA 最新版本 破解教程(windows,mac皆可用)(新版本已失效)
    javascript将字符串中的多个空格替换为一个空格的正则实例
    删除一个表中重复的数据
    mac/linux 解决启动命令行出现declare问题
    iftop 安装以及相关参数及说明(转载自csdn)
    centos安装与卸载postgresql
    jquery实现自动补全邮箱地址
  • 原文地址:https://www.cnblogs.com/jiangbaoyabo/p/11121863.html
Copyright © 2011-2022 走看看