day02 爬取豆瓣电影top250

'''
爬取豆瓣电影信息:
    电影排名、电影名称、电影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,daoyao,actor,year_type,\
    point,commit,desc = movie
    year_type = year_type.strip('\n')
    data = f'''
                ========欢迎观赏========
                    电影排名:{top}
                    电影url:{m_url}
                    电影名称:{name}
                    电影导演:{daoyao}
                    电影主演:{actor}
                    年份类型:{year_type}
                    电影评分:{point}
                    电影评论:{commit}
                    电影简介:{desc}     
                ========谢谢观赏========
                \n
                \n
                '''
    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)

猜你喜欢

转载自www.cnblogs.com/zaccheo/p/11118717.html