我:好无聊鸭~有没有好电影推荐一下鸭?

惨绿青年:你不是会制作python爬虫了吗?自己去豆瓣top250爬一下呗。

我:诶,居然还有这样的网站,让我赶紧去瞧瞧。

于是Paradoxical就打开了豆瓣top250的网址https://movie.douban.com/top250,然后就开始制作爬虫了。按照之前小哥哥教的步骤,先获取页面,再提取数据,然后保存下来。

诶(#°Д°)……这个418是啥东东鸭???

惨绿青年:大概是触发了反爬虫机制,这是程序猿和你开的小玩笑。先在get()里加个headers参数试试吧。

我:headers参数是啥鸭???

惨绿青年:打开浏览器,按F12查看网络请求,刷新一下页面,然后在Network里随便点击一个请求看一下Request Headers。创建一个headers字典,把Request Headers里面的User-Agent和值放进字典。最后把headers字典放到get()里面就行了。这个User-Agent表示发出请求的设备。按照小哥哥的指示来做成功了!

接下来就是获取电影的数据了,Paradoxical观察了页面,决定获取电影的名字、评分和简介。然后观察页面的html代码,词条信息部分在

里,评分在里,简介在里。接下来开始写代码吧~

这次使用css选择器去提取数据。虽然不太熟悉,花的时间比较多,但还是不难的嘛¯ω¯

获取了一部电影怎么够呢,去获取一页数据吧~我真聪明¯ω¯

然后就是获取所有页面的数据了,冲鸭~

翻到第二页发现页面链接后面多了个“?star=25&filter=”字符串,再翻回第一页页面链接后面多了个“?star=0&filter=”字符串,看来中间的数字就是关键了。数了一下一页刚好有25部电影,我真是个小机灵鬼鸭~可以看到红框部分是重复的

嗯?怎么回事?怎么每一页的数据都是一样的?(#°Д°)在浏览器输入格式化后的url也是一样……在多次尝试后只能去请教惨绿青年小哥哥了。

惨绿青年:对于你说的问题,我也去验证了一下,确实通过url直接访问只能得到第一页的数据。我现在没什么时间去研究,教你一个粗暴的方法吧,挺适合用于这种数据比较少的情况。

我:是什么鸭?

惨绿青年:Python有一个叫做selenium的库,这个库是用来自动化测试的。因为这个库可以通过代码模拟人操作浏览器并且能获取html代码,所以也能用来做爬虫。但是这个要操作浏览器的话就会消耗一些电脑资源(内存、cpu),所以不会优先考虑。

惨绿青年:你先去装这个库吧,跟以前一样在命令行输入“pip install selenium”就行。

惨绿青年:安装完成后,还要去下载一个驱动器,Python代码就是通过驱动器去控制浏览器的。selenium支持市面上大多数主流浏览器,要根据浏览器和对应的版本去下载。我记得你安装了谷歌浏览器吧?打开这个网址网址栏输入“chrome://version”或者点击右上角的省略号然后在弹出的菜单点击“设置”查看)。下载后解压到Python的安装路径里。其他浏览器可以在百度搜“浏览器名+driver”,下载方式是类似的。在网址栏查看版本在设置查看版本寻找对应版本的driver对应自己的系统下载解压到python的安装路径

惨绿青年:selenium的使用也比较简单,如下图所示:出现上面的画面就是成功启动了和requests一样用get()

惨绿青年:接下来教你一些常用的获取html标签的方法吧。find_element_by_id()是通过标签的id属性去获取标签,此外把id改为name或class即可以通过对应的属性和属性值去获取。find_element_by_xpath()和find_element_by_css_selector()分别通过xpath和css选择器获取标签。

find_element_by_link_text(),find_element_by_partial_link_text()这个两个方法是专门用于标签的,第一个方法需要传入里的完整文字内容,第二个方法只需要传入里的部分文字内容。

惨绿青年:以上的方法都是返回第一个找到的标签,如果要找全部标签的话,可以在element后面加个s,例如find_element_by_css_selector()改为find_elements_by_css_selector()。对了,你可以把代码里的css选择器内容搬到find_element_by_css_selector(),就不用重新写了。

我:哇,好厉害鸭,我赶紧试试。真的可以诶

我:emmm……那怎么换页鸭?我刚刚试过在网址栏输入网址但是只能获取第一页。

惨绿青年:这时候就可以使用click()方法了,当找到标签时使用该方法可以模拟人用鼠标点击这个标签,达到换页的目的。

我:嗯嗯,我这就去找换页的标签。找到了哈哈我真是个小机灵鬼

接下来就把代码优化一下,首先传入的是第一页的url,然后还剩9页,也就是说重复9次就行了。emmm……好像还有第一页要获取,那就加个判断好了。然后把数据加入一个字典,把字典存入一个列表,最后保存起来。最终结果

刚学爬虫就遇到这么多坑,真是困难鸭~幸好没有放弃,最终还是成功了~

今天也学到了很多东西呢,明天有什么新知识呢?真期待鸭~如果喜欢文章可以关注我哦~

豆瓣python源码_(附源码)Python爬虫之豆瓣攻坚战相关推荐

  1. cvtcolor python opencv_13行代码实现:Python实时视频采集(附源码)

    程序逻辑 Python实时视频采集程序主要流程共分为10个步骤,具体如下图所示: 流程描述: 库文件导入:导入程序依赖的python安装包: 摄像头管理对象创建和初始化:是对opencv VideoC ...

  2. VC++利用笔记本自带摄像头扫二维码功能(附源码demo)

      VC++开发常用功能一系列文章 (欢迎订阅,持续更新...) 第8章:VC++利用笔记本自带摄像头扫二维码功能(附源码demo) 源代码demo已上传到百度网盘:永久生效  ,代码实现了打开笔记本 ...

  3. 用java实现表白二维码(附源码)

    用java实现表白二维码(附源码) 以下源码可以实现生成一个表白二维码,扫描二维码就能看到二维码里蕴藏的信息. import com.google.zxing.BarcodeFormat;import ...

  4. python编程基础_月隐学python第2课

    python编程基础_月隐学python第2课 学习目标 掌握变量的输入和输出 掌握数据类型的基本概念 掌握算数运算 1.变量的输入和输出 1.1 变量输入 使用input输入 input用于输入数据 ...

  5. 查看Python的版本_查看当前安装Python的版本

    一.查看Python的版本_查看当前安装Python的版本 具体方法: 首先按[win+r]组合键打开运行: 然后输入cmd,点击[确定]: 最后执行[python --version]命令即可. 特 ...

  6. python编程选股_随笔吧量化投资选股的python程序实践(附源码)

    量化投资选股的python程序实践(附源码) 首先选取沪深股票市场,本人比较关注的12只股票: 000002 万科A,600566 济川药业,300051 三五互联,002039 黔源电力,60087 ...

  7. Python实现物流管理系统(附源码)

    前言 基于Django实现的物流管理系统,工作时忙里偷闲写的练手项目. 特点 前端基于Bootstrap 4框架和AdminLTE框架. 使用MySQL作为数据库后端. 实现了运单录入.发车出库.到货 ...

  8. python 搜索引擎 实验楼的源码_【如何入门 Python 爬虫?】-看准网

    匿名用户 学会一门语言的捷径只有一个: Getting Started!¶ 起步阶段 任何一种编程语言都包含两个部分:硬知识和软知识,起步阶段的主要任务是掌握硬知识.°1 硬知识 "硬知识& ...

  9. 【Python】一文弄懂python装饰器(附源码例子)

    目录 前言 一.什么是装饰器 二.为什么要用装饰器 三.简单的装饰器 四.装饰器的语法糖@ 五.装饰器传参 六.带参数的装饰器 七.类装饰器 八.带参数的类装饰器 九.装饰器的顺序 总结 写在后面 前 ...

  10. 13行代码实现:Python实时视频采集(附源码)

    一.前言 本文是<人脸识别完整项目实战>系列博文第3部分:程序设计篇(Python版),第1节<Python实时视频采集程序设计>,本章内容系统介绍:基于Python+open ...

最新文章

  1. Halcon知识:如何用mfc显示halcon读入图象
  2. C++判断一个数是否为回文数palindrome的算法(附完整源码)
  3. 【数据结构与算法】之深入解析“石子游戏II”的求解思路与算法示例
  4. 七大新品集中亮相,腾讯云AI大数据全线升级!
  5. 有这样的开发,产品经理跪着帮你擦汗!
  6. 人工智能切入垂直领域 风口已至?
  7. leetcode 84 python
  8. 如何才能通过设置将excel单元格内的14位数字转换为日期格式
  9. 对比了上百个python程序员的开发习惯,这10个方法最节省时间!
  10. excanvas让canvas兼容ie7,8
  11. 关于sts与eclipse版本对应的插件图
  12. 梦想、执行力与新起点
  13. c语言题目详解——打印3的倍数的数
  14. 【软件设计师中级】设计模式之原型模式学习笔记(c++)
  15. php工具箱mysql启动不_解决php工具箱(phpStudy)Apache启动成功,MySql无法启动的问题...
  16. PHP中一个好玩的性别判断扩展
  17. 【Python】计算任意位数的圆周率π(Machin Formula)
  18. android 软电话 开发包-JNI 封装 SIP 协议,可进行二次开发应用于VOIP
  19. 2022年“研究生科研素养提升”系列公益讲座在线测评试题及解析
  20. 备考通信复试过程中的一些知识点总结梳理——移动通信系统Ⅱ

热门文章

  1. 图片压缩软件工具下载列表大全
  2. HBase 在爱奇艺的应用实践
  3. 第2章 第一个Spring Boot项目
  4. mac下创建第一个flutter项目以及遇到的问题
  5. 牛客算法周周练8 「金」点石成金 暴力
  6. window 10获取当前语言c,如何显示“获取windows10应用”,分享我的经验
  7. ORB-SLAM2构建稠密地图 ros-kinetic 深度相机
  8. 通俗易懂的解释一下,面向过程和面向对象的区别
  9. 维也纳国际酒店11家门店陆续开业,加速布局中高端酒店市场
  10. 软件工程 期末考试与总结 测试题(下)