闲着在家想看电影,但是猛地不知道要看啥电影,脑子想半天也想不出来一个好电影名字!干脆直接在豆瓣电影上获取最近热门的电影,然后一个一个挨着看打发时间!

获取豆瓣电影信息也是学爬虫的一个入门例子,不知道为啥好多人学爬虫都拿豆瓣电影来练手,一个应该是爬取比较简单,另一个应该是这个平台反爬措施比较low,接下来让我们来看看怎么去实现获取豆瓣电影前200个热门电影信息!

1.请求数据

第一步先打开豆瓣电影网页,分析请求看怎样才能请求到数据。

刷新豆瓣电影网页,从浏览器自带的开发工具network中XHR可以看到各种请求,其中标黄的search_subject?type_movie这个请求就是请求电影信息,下面的type_tv就是请求电视剧信息的。从右边标黄的request url中看到是请求的链接,但参数信息都被编码,用urllib.parse.unquote()方法来进行解码:

解码后的请求连接如图所示,猜想page_limt为每次请求到的数据量,page_start为从第几页开始请求,将这个链接在浏览器中打开来验证一下猜想。

看到返回的是一个json字符串,里面包含50条电影信息,其中有名字,评分,链接等,将page_start = 0 变为1,就请求到下一个50条信息。根据链接的这个规律,可以对page_start 不断赋值,从而实现多条信息的获取!(公众号 ly戏说编程)

第二步构造请求头,即看看浏览器通过这个链接向服务器发送了什么请求参数才拿到这些json数据,打开浏览器开发者工具。

按照图中1到4步可以看到这个请求的request headers,将请求头里面的信息全部拿出来,构造为爬虫的请求头。

坑:请求头构造的时候Accept-Encoding要将br去掉。原因:Accept-Encoding用来声明浏览器支持的编码类型,一般有gzip,deflate,br 等等。但在python3的requests包中:response.content 字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩 类型:bytes

reponse.text 字符串方式的响应体,会自动根据响应头部的字符编码进行解码。类型:str

但偏偏不支持br的解码,如果加上br可能造成你请求回来的是乱码!所以要去掉br!

这样通过模拟浏览器请求数据,就可以得到服务器返回的json字符串,再解析json字符串得到每一个电影的详情链接。

2.提取信息

在得到每一个电影的链接后,依次访问每一个电影的链接,然后根据关键信息所在标签用xpath进行提取。这里只对电影名字、年份、导演、类型、评分进行提取。

例如提取1917,在网页右击“1917”,然后选择检查,在Elements中1917所在位置右击,选择Copy,然后Copy XPath即可拿到1917的Xpath路径,其它信息的提取操作步骤一样。

但是不同电影网页里面相同类型的信息所在的XPath路径可能不同,这就需要找到他们的相同处,提取相同的XPath路径,从而进行大批量提取。

比如电影类型,用直接copy xpath的方法就不好使,不同电影网页里面电影类型所处的标签位置不同,用copy xpath拷贝出来的路径有差异,这就需要根据所在标签的property属性来获取。主要代码如下:

对每一网页链接里面的信息进行提取,这里每提取一个就停1s,为的是避免平台检测到异常访问,这样就拿到每一个电影的信息,然后再将这信息保存到excel中,效果如图所示

前几名都是奥斯卡得奖电影有木有!感兴趣的小伙伴快来试试!话不多说,挨着去看电影咯!去哪看?去公众号 ly戏说编程 首页vip影院看,里面还有各种学习资源免费分享!

python 爬虫 小电影 不会告诉网址_想看电影不知道看啥,python爬虫告诉你!相关推荐

  1. python程序中的空格和空行可有可无_为了让代码更加紧凑,编写Python程序时应尽量避免加入空格和空行。_学小易找答案...

    [判断题]Python 代码的注释只有一种方式,那就是使用#符号. [判断题]为了让代码更加紧凑,编写Python程序时应尽量避免加入空格和空行. [多选题]脱水后的污泥可采取( )方法进行最终处理. ...

  2. python嵩天第二版第五章_如何避免从入门到放弃——python小组学习复盘

    2019年春节python学习行动复盘2019-02-09 为了主攻python,没有参加心理学晨读.对心理学也不敢兴趣,怕耽误学习python的时间. 那么没学习心理学的情况下,python学的怎么 ...

  3. python金融分析小知识(21)——如何计算股票、基金的收益净值曲线并通过python绘制

    Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助! 今天给大家讲讲如何计算股票或者基金的净值曲线, ...

  4. python单机小游戏大全手机版宫殿_用Python实现童年小游戏俄罗斯方块!别说还挺好玩!...

    存储图书的相关信息,包括书名,作者,类型,数量.主码是name和author. 2.2 borrow表 借书单,存储借书人ID,书名,作者,借书时间.主码是name和author. 2.3 user表 ...

  5. python考试怎么过_想准备2021年三月份的Python考试,应该怎么准备呢?

    Python作为编程语言,在近几年大火起来,18年便被列为计算机二级考试科目之一,在计算机二级考试上.很多同学应该会选择python程序设计进行报考,下面分享一下如何准备考试. 具体内容 一.试题类型 ...

  6. python程序员年薪百万_想要成为年薪百万的Python程序员,这套面试题别错过

    近几年来,Python的运用范围越来越广,发展势头十分强劲.小到网页建设.网站搭建,大到人工智能AI.云计算.人脸识别.大数据分析等等尖端技术,都基于Python编程语言来实现. 在小伙伴们通过参加培 ...

  7. python列表元组字符串都属于有序数列_列表、元组、字符串是Python的__________(有序、无序?)序列。...

    [简答题]朗读d教科书第35页"貿易レターコラム 消費価格値上げ再考のお願い"的李文,直接读标题,然后读"拝啓"和全文.注意作业提交截止日期. [多选题]以下语 ...

  8. 怎么用python生成带二维码的照片_怎么制作二维码图片-Python 生成个性二维码

    一.实验介绍1.1 实验内容 本课程通过调用MyQR接口来实现生成个人所需二维码,并可以设置二维码的大小.是否在现有图片的基础上生成.是否生成动态二维码. 1.2 知识点 Python3基础 MyQR ...

  9. 以下选项中不是python对文件的写操作方法的是_以下选项中,不是 Python 对文件的读操作方法的是...

    以下选项中,不是 Python 对文件的读操作方法的是 答:readtext 中国大学MOOC: 温度升高,生物大分子容易降解.为防止变性和降解,对于具有活性的蛋白质和酶,提取时一般在0℃-5℃的低温 ...

最新文章

  1. WPF TabControl Unload俩次的解决方案
  2. php框架 zend,模型部分的php设计模式[php zend框架]
  3. linux release 版本的区别,编译debug版本和编译release版本的区别
  4. css毛玻璃效果白边_使用css模拟vista毛玻璃效果
  5. run gender find mistake
  6. 大数据分析在医疗行业的作用
  7. QuartZ 配置第一次不执行后续正常执行
  8. python二次开发ug_CAD二次开发(UG/Proe/其他) - 随笔分类 - 白途思 - 博客园
  9. Zune WIFI无线同步教程
  10. PyTorch - 27 - 带PyTorch的CNN Confusion Matrix - 神经网络编程
  11. 《Ogre一步一步学开发》 一、Ogre源码编译与安装,从源代码开始构建Ogre图文教程(Ogre 1.12.1 Source + VS2019 + Windows10)
  12. linux mod jk.so,linux - mod_jk无法连接Apache和tomcat - SO中文参考 - www.soinside.com
  13. 高企认定评分标准有哪些?
  14. grep(模式匹配器)详解
  15. js实现图片瀑布流布局
  16. Linux(Ubuntu)下,生成C语言可执行文件和汇编文件
  17. Java实现远程桌面连接
  18. 黑科技!!你想要的它都有!!
  19. 从2022看2023年发展趋势
  20. 软件无线电之数字下变频(Matlab实例)

热门文章

  1. 柔性输送带运行时跑偏了怎么办?
  2. 如何查看mysql的日志
  3. 神策军丨​每天起床第一句:你配得上 3000 万企业吗?
  4. Redis --- 学习 NoSQL 五大类型
  5. 为华为路由器创建用户名密码及接口登录详细配置
  6. STM32CubeMX配置串口
  7. 阿里云SSL证书到期怎么办
  8. 初识操作系统(OS)
  9. 「Python条件结构」根据输入数量对应的折扣率计算应付金额
  10. obs媒体源没有声音_最常用的直播软件OBS使用教程图解