python获取豆瓣电影
打开豆瓣,点击选电影
到这里你会发现很简单,直接用xpath不久很容易获取到电影名及评分了吗。其实我们看到的页面是经js渲染过的,真正数据的网页在⬇
当你点击加载更多时,会发现这个网址的前部分不变,0变成20。
我们先来获取热门这一类。
用requests获取到的是json格式的数据,也就是python中的字典。
获取‘subjects’对应的值,是一个包含电影信息的列表。
遍历列表,即可获取对应的影片信息,择需保存。
完成一页后,判断这一页是否获取到信息。若有,则继续下一页获取。
获取方式,增加20计数器,递归自身。
base_url = 'https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start='
count = 0def download():url = base_url + str(count)result = requests.get(url=url, headers=header)result_json = json.loads(result.text)['subjects']print(result_json)for item in result_json:film_name = item['title']rate = item['rate']url = item['url']content = '影片名:' + film_name + '\n豆瓣评分:' + rate + '\n网址:' + url + '\n\n'with open('豆瓣电影/' + self.target + '.txt', 'a', errors='ignore') as f:f.write(content)if result_json:count += 20download()
其它几大类除了base_url不一样,其它一致。
完整代码
import requests, json, osclass DouBanSpider:def __init__(self):print('现有分类:热门、经典、豆瓣高分、冷门佳作、华语、喜剧、悬疑、最新、动作')self.target = input('请输入要获取影片的类别:')self.count = 0def confirm_base_url(self):if not os.path.exists('豆瓣电影'):os.makedirs('豆瓣电影')if os.path.exists('豆瓣电影/' + self.target + '.txt'):os.remove('豆瓣电影/' + self.target + '.txt')if self.target == '热门':self.base_url = 'https://movie.douban.com/j/search_subjects?type=movie&tag=' \'%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start='elif self.target == '经典':self.base_url = 'https://movie.douban.com/j/search_subjects?type=movie&' \'tag=%E7%BB%8F%E5%85%B8&sort=time&page_limit=20&page_start='elif self.target == '豆瓣高分':self.base_url = 'https://movie.douban.com/j/search_subjects?type=movie&tag=' \'%E8%B1%86%E7%93%A3%E9%AB%98%E5%88%86&sort=time&page_limit=20&page_start='elif self.target == '冷门佳作':self.base_url = 'https://movie.douban.com/j/search_subjects?type=movie&tag=' \'%E5%86%B7%E9%97%A8%E4%BD%B3%E7%89%87&sort=time&page_limit=20&page_start='elif self.target == '最新':self.base_url = 'https://movie.douban.com/j/search_subjects?type=movie&tag=' \'%E6%9C%80%E6%96%B0&page_limit=20&page_start='elif self.target == '华语':self.base_url = 'https://movie.douban.com/j/search_subjects?type=movie&tag=' \'%E5%8D%8E%E8%AF%AD&sort=time&page_limit=20&page_start='elif self.target == '悬疑':self.base_url = 'https://movie.douban.com/j/search_subjects?type=movie&tag=' \'%E6%82%AC%E7%96%91&sort=time&page_limit=20&page_start='elif self.target == '喜剧':self.base_url = 'https://movie.douban.com/j/search_subjects?type=movie&tag=' \'%E5%96%9C%E5%89%A7&sort=time&page_limit=20&page_start='elif self.target == '动作':self.base_url = 'https://movie.douban.com/j/search_subjects?type=movie&tag=' \'%E5%8A%A8%E4%BD%9C&sort=time&page_limit=20&page_start='else:print('输入有误')self.target = input('请重新输入要获取影片的类别:')self.confirm_base_url()self.download()def download(self):url = self.base_url + str(self.count)result = requests.get(url=url, headers=header)result_json = json.loads(result.text)['subjects']print(result_json)for item in result_json:film_name = item['title']rate = item['rate']url = item['url']content = '影片名:' + film_name + '\n豆瓣评分:' + rate + '\n网址:' + url + '\n\n'with open('豆瓣电影/' + self.target + '.txt', 'a', errors='ignore') as f:f.write(content)if result_json:self.count += 20self.download()if __name__ == '__main__':header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ''(KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}t = DouBanSpider()t.confirm_base_url()
python获取豆瓣电影相关推荐
- 【Python练习】如何使用Pandas获取“豆瓣电影”相关数据,并生成Excel表格
使用Python获取"豆瓣电影"相关数据,并生成Excel表格 本文使用了requests和pandas第三方库,对豆瓣电影各相关数据进行爬取,并记录至Excel表格内.但发现存在 ...
- Python自定义豆瓣电影种类,排行,点评的爬取与存储(高阶上)
Python 2.7 IDE Pycharm 5.0.3 Firefox 47.0.1 豆瓣电影系列: - 基础抓取(限于"豆瓣高分"选项电影及评论)请看↓ Python自定义豆瓣 ...
- Python自定义豆瓣电影种类,排行,点评的爬取与存储(进阶下)
Python 2.7 IDE Pycharm 5.0.3 Firefox 47.0.1 如有兴趣可以从如下几个开始看起,其中有我遇到的很多问题: 基础抓取(限于"豆瓣高分"选项电影 ...
- python爬虫-豆瓣电影Top250
豆瓣电影Top250 一.准备环境 idea+python插件/python 一.需求分析 1. 运用代码获取豆瓣电影Top250里面电影的相关信息: 影片详情链接: 影片名称: 影片图片链接: 影片 ...
- Python自定义豆瓣电影种类,排行,点评的爬取与存储(进阶上)
Python 2.7 IDE Pycharm 5.0.3 Firefox 47.0.1 具体Selenium及PhantomJS请看Python+Selenium+PIL+Tesseract真正自 ...
- python爬虫—豆瓣电影海报(按类别)
原文地址:http://www.alannah.cn/2019/04/06/getdouban/ python爬虫-豆瓣电影海报 目标:通过python爬虫在豆瓣电影上按类别对电影海报等数据进行抓取, ...
- Python爬虫实战,pyecharts模块,Python实现豆瓣电影TOP250数据可视化
前言 利用Python实现豆瓣电影TOP250数据可视化.废话不多说. 让我们愉快地开始吧~ 开发工具 Python版本: 3.6.4 相关模块: pandas模块 pyecharts模块: 以及一些 ...
- python pandas 豆瓣电影 top250 数据分析
python pandas 豆瓣电影 top250 数据分析 豆瓣电影top250数据分析 数据来源(豆瓣电影top250) 爬虫代码比较简单 数据较为真实,可以进行初步的数据分析 可以将前面的几篇文 ...
- 爬虫:获取豆瓣电影爱情片榜单封面图片
电影中单纯而美好的爱情总是让人陷入美好无瑕的幻想. 代码已上传至个人GitHub,可供查看:获取豆瓣电影爱情片榜单封面图片 爬虫:获取豆瓣电影爱情片榜单封面图片 目的:获取豆瓣电影爱情片榜单封面图片, ...
最新文章
- FPGA(3)验证数字逻辑(与门、与非门、二选一数据选择器、2-4译码器、半加器、全加器)
- 数据竞赛Tricks集锦
- FPGA之道(10)布线资源与接口资源
- Docker之docker简介及其优势
- 【简便解法】1084 外观数列 (20分)_24行代码AC
- LabVIEW设计模式系列——移位寄存器
- WORD文档的超链接无法打开——“由于本机的限制该操作已被取消”的解决方法
- matlabapp窗口图像_matlab – 如何自定义App Designer图形的背景?
- 深度学习与TensorFlow:FCN论文学习笔记
- php 查询和redis,php如何查询redis
- Eclipse 构建Maven项目--普通web项目 复制另外一个项目的配置文件导致的问题
- MVC3中Ajax.ActionLink用法
- 成功要素:富兰克林的13条必要美德! 与 狗熊掰棒子
- Windows + Ubuntu双系统开机选择界面美化
- C++实现一个线程池
- 【续】关于对MSB/LSB写0时的步骤
- vue自定义指令—directive详解
- python计算机视觉:创建缩略图
- Java的API(Scanner\Object\Date区\Math\Random\Arrays\String区\regex\包装类...)一般是parse(String)
- 基于用户的协同过滤推荐算法原理和实现