上次爬取了百度图片,是分析解决ajax的json的响应的,对于一些网站的常见的数据的爬取,是这次主要内容。
明确目标
爬取的是豆瓣电影,并保存到csv格式中
爬取豆瓣是非常的简单,因为没有任何反爬的机制
https://movie.douban测试数据/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测试数据/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 (备注:学习交流)
最后,祝有所学习,有所成长
转发,好看支持一下,感谢
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did127891