【1、项目背景】javascript
豆瓣电影提供最新的电影介绍及评论包括上映影片的影讯查询及购票服务。能够记录想看、在看和看过的电影电视剧 、顺便打分、写影评。极大地方便了人们的生活。java
今天以电视剧(美剧)为例,批量爬取对应的电影,写入csv文档 。用户能够经过评分,更好的选择本身想要的电影。web
【2、项目目标】json
获取对应的电影名称,评分,详情连接,下载 电影的图片,保存文档。服务器
【3、涉及的库和网站】网络
一、网址以下:app
https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start={}
二、涉及的库:requests****、fake_useragent、json****、csv函数
三、软件:PyCharm优化
【4、项目分析】网站
一、如何多网页请求?
点击下一页时,每增长一页paged自增长20,用{}代替变换的变量,再用for循环遍历这网址,实现多个网址请求。
二、如何获取真正请求的地址?
请求数据时,发现页面上并无对应数据。其实豆瓣网采用javascript动态加载内容,防止采集。
1)F12右键检查,找到Network,左边菜单Name , 找到第五个数据,点击Preview。
2)点开subjects,能够看到 title 就是对应电影名称。rate就是对应评分。经过js解析subjects字典,找到须要的字段。
https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start=0 https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start=20 https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start=40 https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start=60
当点击下一页时,每增长一页page自增长20,用{}代替变换的变量,再用for循环遍历这网址,实现多个网址请求。
【5、项目实施】
一、咱们定义一个class类继承object,而后定义init方法继承self,再定义一个主函数main继承self。导入须要的库和请求网址。
二、随机产生UserAgent,构造请求头,防止反爬。
三、发送请求 ,获取响应,页面回调,方便下次请求。
四、json解析页面数据,获取对应的字典。
五、for遍历,获取对应的电影名、 评分、下详情页连接。
六、建立csv文件进行写入,定义对应的标题头内容,保存数据 。
七、图片地址进行请求。定义图片名称,保存文档。
八、调用方法,实现功能。
九、项目优化:
1)设置时间延时。
2)定义一个变量u, for遍历,表示爬取的是第几页。(更清晰可观)。
【6、效果展现】
一、点击绿色小三角运行输入起始页,终止页( 从0页开始 )。
二、将下载成功信息显示在控制台。
三、保存csv文档。
四、电影图片展现。
【7、总结】
一、不建议抓取太多数据,容易对服务器形成负载,浅尝辄止便可。
二、本文章就Python爬取豆瓣网,在应用中出现的难点和重点,以及如何防止反爬,作出了相对于的解决方案。
三、但愿经过这个项目,可以帮助了解json解析页面的基本流程,字符串是如何拼接,format函数如何运用。
四、本文基于Python网络爬虫,利用爬虫库,实现豆瓣电影及其图片的获取。实现的时候,总会有各类各样的问题,切勿眼高手低,勤动手,才能够理解的更加深入。
此文转载文,著做权归做者全部,若有侵权联系小编删除!
原文地址:https://www.tuicool.com/articles/muiIZj2
须要源代码或者想了解更多(点击这里查看)