'''
爬取豆瓣TOP250电影信息
第1页:
https://movie.douban.com/top250?start=0&filter=
...
第9页:
https://movie.douban.com/top250?start=200&filter=
第10页:
https://movie.douban.com/top250?start=225&filter=
爬蟲四部原理:
1.发送请求: requests
2.获取响应数据: 对方机器直接返回的
3.解析并提取想要的数据: re
4.保存提取后的数据: with open()
爬蟲三部曲:
1.发送请求
2.解析数据
3.保存数据
# 往10个链接发送请求获取响应数据
- requests模块 ---》 请求库
'''
import requests
import re
# 爬蟲三部曲:
# 1.发送请求
def get_page(url):
response = requests.get(url)
# response.content # 获取二进制流数据,比如图片、视频、音频
# response.text # 获取响应文本,比如html代码
return response
# 2.解析数据
# 伪代码:
# response = get_page('url地址')
# parser_page(response.text)
def parser_page(text): # response.text
# re.findall('正则表达式', '过滤的文本')
res_list = re.findall(
'<div class="item">.*?<a href="(.*?)">.*?<span class="title">(.*?)</span>.*?<span class="rating_num".*?>(.*?)</span>.*?<span>(.*?)人评价',
text,
re.S)
for movie_tuple in res_list:
# print(movie_tuple)
yield movie_tuple
# 3.保存数据
# 伪代码:
# res_list = parser_page(text)
# save_data(res_list)
def save_data(res_list_iter):
with open('douban.txt', 'a', encoding='utf-8') as f:
for movie_tuple in res_list_iter:
movie_url, movie_name, movie_point, movie_num = movie_tuple
# 写入文件前的模样
str1 = f'''
电影地址: {movie_url}
电影名字: {movie_name}
电影评分: {movie_point}
评价人数: {movie_num}
'''
f.write(str1)
# 获取10个链接
n = 0
for line in range(10):
url = f'https://movie.douban.com/top250?start={n}&filter='
n += 25
print(url)
response = get_page(url)
res_list_iter = parser_page(response.text)
# print(res_list_iter)
save_data(res_list_iter)
爬取豆瓣TOP250电影信息
最新推荐文章于 2022-02-04 23:35:51 发布