上次爬取了百度图片,是分析解决ajax的json的响应的,对于一些网站的常见的翻页,是这次主要内容。
明确目标
爬取的是豆瓣电影,并保存到csv格式中
爬取豆瓣是非常的简单,因为没有任何反爬的机制
爬取的url :https://movie.douban.com/explore
分析网站

和上次一样的套路
爬取全代码
# -*- coding:utf-8 -*-
# time :2019/4/8 13:00
# author: 毛利
import json
import requests
def boudan(name,num,sort):
with open('douban.csv', 'a+') as f:
f.write('评分' + ',' + '标题' + ',' + 'url' + ',' + '图片url' + '\n')
map={
'1': '&sort=recommend',
'2':'&sort=time',
'3':'&sort=rank'
}
sorted = map[sort]
for i in range(int(num)):
url = 'https://movie.douban.com/j/search_subjects?type=movie&tag='+name+sorted+'&page_limit=20&page_start={}'.format(20*i)
print('正在爬取:'+url)
hearders = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
}
r = requests.get(url,headers = hearders)
r.encoding = 'utf-8'
result = json.loads(r.text)
if result['subjects']:
res = result['subjects']
for i in res:
rate = i['rate']
title = i['title']
url = i['url']
cover = i['cover']
f.write(rate+ ',' + title + ',' + url + ',' +cover + '\n')
if __name__ == '__main__':
name = input('爬什么电影,在[热门 最新 经典 可播放 豆瓣高分 冷门佳片 华语 欧美 韩国 日本 动作 喜剧 爱情 科幻 悬疑 恐怖 治愈]中选')
num = input('要爬几页{}电影'.format(name))
if name == '最新':
sort = 2
else:
sort = input('按照什么排序[1:按热度排序 2:按时间排序 3: 按评价排序] 输入对应的编号')
boudan(name,num,sort)
总结
- 如何构造json的url来不断的遍历
- 保存数据,个人认为不需要使用csv内置的模块
至此爬虫已经入门了,接下来的文章会详细讲解爬虫有关知识并不断提高难度
欢迎关注微信公众号

网友评论