Python爬虫实战案例一:爬取猫眼电影

在这里插入图片描述

背景

笔者上一篇文章《基于猫眼票房数据的可视化分析》中爬取了猫眼实时票房数据,用于展示近三年电影票房概况。由于数据中缺少导演/演员/编剧阵容等信息,所以爬取猫眼电影数据进行补充。关于爬虫的教学内容,网络上一搜就有很多了,这里我以个人的爬虫习惯,介绍此次过程中所用到的库和代码。流程图,如下图所示:

在这里插入图片描述

抓包

Ajax异步加载的网页,加载数据的URL需要通过抓包获取。一般确认是否异步加载,只需要右键打开网页源代码,如果源码文字内容与前端展示的结果不一致,则属于异步加载。这时需要按F12打开开发者工具的Network,重新刷新网页,就能看到真正的URL。如下图所示,开发者工具中红色框的URL才是真正加载数据的URL。
在这里插入图片描述

  • concurrent.futures库

    • 利用多核CPU提升执行速度。主要包含两个类:ThreadPoolExecutor和ProcessPoolExecutor,当执行属于IO密集型时,使用ThreadPoolExecutor开启多线程。当执行属于CPU密集型时,使用ProcessPoolExecutor开启多线程。
  • requests库

    • 用于发送网络请求。网络请求有get和post两种方式,get()可以直接获取数据,post()需要传递参数后才能获取数据。一般网站都是get方式,若需要登录后才能看到数据的网页则属于post方式。而爬虫中post()通常和session()搭配使用,session()用于保存登录后的cookie。
  • Beautifulsoup库

    • 用于解析HTML。爬虫需要懂得基本的HTML语言,通过定位不同的标签来提取数据。
  • re库

    • 正则表达式,用来检索或替换符合某个模式(规则)的文本。爬虫过程中如果遇到不能直接提取的脏数据时,一般采用re解决。re功能非常强大,而且上手不难,很多方面都可以运用它,所以掌握re也是一个必备技能。
  • redis数据库

    • 非关系型数据库,可以存储多种抽象数据类型。由于读写简单快捷,所以笔者将其当做缓存数据库,用于存储待爬取URL,再配合ThreadPoolExecutor多线程进行爬取,满足高并发需求。
  • Mysql数据库

    • 关系型数据库,用于存储最终结果。

实例

首先,确认URL是否需要抓包获取,还是可以直接手工构建。如下图所示,源码内容与前端展示是一致的,所以可以根据传递的参数内容,直接构建URL。

在这里插入图片描述

在这里插入图片描述
然后,再根据类型、区域、年代这三个参数,构建首页URL。
在这里插入图片描述

接着,获取每种分类的页面数量,再构建页面URL,再存到redis中。这么做的原因是猫眼页面查看数量是有限制的,通过遍历所有分类构建URL可以绕过这个限制。

在这里插入图片描述

然后,爬取每个页面中影片的ID,再构建详情页URL。由于多线程爬取速度很快,会导致IP暂时被限制登录,所以需要进行判断。通过while语句识别队列是否为空,来决定是否继续执行。此外,暂无评分的影片不属于考虑范围,所以剔除。
在这里插入图片描述

最后,爬取每条详情页URL的信息,同时也需要判断IP是否被限制。由于无票房的影片不属于考虑范围,所以剔除。将结果直接保存到Mysql中。

在这里插入图片描述

猫眼电影中,2011年至今,有评分有票房的影片有10746条。

在这里插入图片描述

结语

爬虫入门并不难,熟悉之后爬取一般网站都是非常容易的,难处在于有爬虫就会有反爬虫,主流网站都是有限制爬虫的,如何解决反爬虫机制才是难点。

福利:如果你对Python感兴趣,小编便准备了这套python学习资料

对于0基础小白入门:

如果你是零基础小白,想快速入门Python是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。 二方面是可以找到适合自己的学习方案

包括:Python永久使用安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习等学习教程。带你从零基础系统性的学好Python!

零基础Python学习资源介绍

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、Python学习软件

工欲善其事,必先利其器。学习Python常用的开发软件都在这里了!
在这里插入图片描述

三、Python入门学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~在这里插入图片描述

四、Python练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述

五、Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。这份资料也包含在内的哈~在这里插入图片描述

六、Python面试资料

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

七、资料领取

上述完整版Python全套学习资料已经上传CSDN官方,需要的小伙伴可自行微信扫描下方CSDN官方认证二维码输入“领取资料”免费领取!!

  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
很好的问题!以下是一些 Python 爬虫开源项目,可以用来爬取多种网站,包括微信、淘宝、豆瓣、知乎、微博等。 1. Scrapy:一个高效的Python爬虫框架,可用于从多个网站获取数据。 2. Beautiful Soup:一个用于解析HTML和XML文档的Python库,可用于爬取网站。 3. Selenium:一个自动化测试工具,也可用于模拟用户行为进行网站爬取。 4. Requests:一个Python HTTP库,可用于向网站发送请求并获取响应。 5. PyQuery:一个用于解析HTML文档的Python库,类似于jQuery。 6. Pyspider:一个强大的爬虫框架,可用于爬取多个网站。 7. Crawlera:一个智能代理池,可用于绕过网站的反爬虫机制。 8. Frontera:一个高效的分布式爬虫框架,可用于爬取大规模数据。 9. Newspaper:一个Python库,可用于从新闻网站中提取文章和元数据。 10. Feedparser:一个Python库,可用于解析RSS和Atom新闻源。 11. Grab:一个Python爬虫框架,可用于爬取多个网站。 12. ParseHub:一个基于云端的数据提取工具,可用于从网站中提取结构化数据。 13. Webbot:一个用于模拟用户行为的Python库,可用于爬取网站。 14. PySpider:一个基于分布式架构的Python爬虫框架,可用于爬取多个网站。 15. Grablib:一个Python爬虫框架,可用于爬取多个网站。 16. Python-Goose:一个Python库,可用于从新闻网站中提取文章和元数据。 17. Scrapy-redis:一个基于Redis的分布式爬虫框架,可用于爬取多个网站。 18. Scrapy-splash:一个基于Splash的JavaScript渲染爬虫框架,可用于爬取JavaScript动态生成的网页。 19. Scrapy-UserAgents:一个Scrapy中的中间件,可用于随机更换用户代理。 20. Scrapy-Proxies:一个Scrapy中的中间件,可用于随机更换代理IP。 21. Scrapy-rotating-proxies:一个Scrapy中的中间件,可用于随机更换代理IP。 22. Scrapy-selenium:一个Scrapy中的中间件,可用于使用Selenium进行网站爬取。 23. Scrapy-fake-useragent:一个Scrapy中的中间件,可用于随机更换用户代理。 希望这些开源项目能够帮助你进行网站爬取

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值