1、特点 :滚动鼠标滑轮加载,页面局部刷新
2、目标 :电影名称、评分
直接上代码:
# 发请求模块
import requests
# 解析json格式的模块,因为ajax返回的数据是json串格式的,
# 要将它转为python的字典格式
import json
class DoubanSpider(object):
def __init__(self):
# 设置爬取地址
self.url = 'https://movie.douban.com/j/chart/top_list?'
# 设置请求头
self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
# 获取页面
def get_page(self,params):
# 发起请求
res = requests.get(self.url,params=params,
headers=self.headers)
# 接收响应
html = res.text
# html(json格式的字符串) : [{},{},{},{}]
# 将获取的响应传给解析页面的函数做解析
self.parse_page(html)
# 解析页面
def parse_page(self,html):
# 把json格式的字符串转为python数据类型
r_list = json.loads(html)
# 遍历整个字典,再依次取值
for r in r_list:
name = r['title']
score = r['score']
print(name,score)
self.write_page(name,score)
# 保存页面
def write_page(self,name,score):
#此案例写为文本文件
with open('猫眼电影.txt', 'w', encoding='utf-8') as f:
f.write(f'电影名称:{name},电影评分:{score}')
# 主函数
def work_on(self):
n = input('请输入要爬取的电影数量:')
params = {
'type': '11',
'interval_id': '100:90',
'action': '',
'start': '0',
'limit': n
}
self.get_page(params)
if __name__ == '__main__':
spider = DoubanSpider()
spider.work_on()