""""""
'''
爬取豆瓣电影信息:
电影排名、电影名称、电影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('\n')
data = f'''
======== 欢迎观赏 ========
电影排名:{top}
电影url:{m_url}
电影名称:{name}
电影导演:{daoyan}
电影主演:{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)