"""""" ''' 爬取豆瓣电影信息: 电影排名、电影名称、电影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)