上次爬取了百度图片,是分析解决ajax的json的响应的,对于一些网站的常见的数据的爬取,是这次主要内容。
明确目标
爬取的是豆瓣电影,并保存到csv格式中
爬取豆瓣是非常的简单,因为没有任何反爬的机制
https://movie.douban.com/explore
分析网站
和上次一样的套路
代码非常的简单
1# -*- coding:utf-8 -*-
2# time :2019/4/8 13:00
3# author: 毛利
4
5import json
6import requests
7
8def boudan(name,num,sort):
9 with open('douban.csv', 'a+') as f:
10 f.write('评分' + ',' + '标题' + ',' + 'url' + ',' + '图片url' + '\n')
11 map={
12 '1': '&sort=recommend',
13 '2':'&sort=time',
14 '3':'&sort=rank'
15 }
16
17 sorted = map[sort]
18 for i in range(int(num)):
19 url = 'https://movie.douban.com/j/search_subjects?type=movie&tag='+name+sorted+'&page_limit=20&page_start={}'.format(20*i)
20 print('正在爬取:'+url)
21 hearders = {
22 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
23 }
24 r = requests.get(url,headers = hearders)
25 r.encoding = 'utf-8'
26 result = json.loads(r.text)
27 if result['subjects']:
28 res = result['subjects']
29 for i in res:
30 rate = i['rate']
31 title = i['title']
32 url = i['url']
33 cover = i['cover']
34 f.write(rate+ ',' + title + ',' + url + ',' +cover + '\n')
35
36if __name__ == '__main__':
37 name = input('爬什么电影,在[热门 最新 经典 可播放 豆瓣高分 冷门佳片 华语 欧美 韩国 日本 动作 喜剧 爱情 科幻 悬疑 恐怖 治愈]中选')
38 num = input('要爬几页{}电影'.format(name))
39 if name == '最新':
40 sort = 2
41 else:
42 sort = input('按照什么排序[1:按热度排序 2:按时间排序 3: 按评价排序] 输入对应的编号')
43 boudan(name,num,sort)


总结
如何构造json的url来不断的遍历
保存数据,个人认为不需要使用csv内置的模块
至此爬虫已经入门了,接下来的文章会详细讲解爬虫有关知识并不断提高难度
▼往期精彩回顾▼
如果学习遇到问题,加毛利微信:maori01(备注:学习交流)
最后,祝有所学习,有所成长
转发,好看支持一下,感谢