爬虫是Python是一个很经典的方向,大多数的小伙伴看到的是Python爬虫的就业效果,确实Python爬虫学习成本低(学习快),就业效果好,特别适合新手入门,但是也要关注另外一个点,就是Python爬虫对编程能力提升方面也是很全面的,那么基于这些我们来聊聊Python爬虫的知识进阶流程。
爬虫流程
爬虫,首先要了解爬虫原理,爬虫是用来请求服务器(通常是WEB服务器)获取资源的程序,所以首先了解python爬虫的工作流程,然后根据流程我们来细化:
1)有一个网页上面有一步优美的霸道总裁文,我们想下载,但是页数太多,使用浏览器一页,一页的访问太麻烦了。所以想用程序解决。
2)首先找到小说的网址,网址代表的是小说内容在服务器的位置。
3)然后查看小说内容在网页里的位置,因为网页上面有广告,导航,推荐,这些不是我们需要的。
4)然后查看浏览器,看看浏览器当中成功的请求,看看请求网站浏览器携带了什么内容去请求服务器。
5)根据上面得到的消息,使用脚本模拟浏览器的行为,通过路由,访问服务器,获取资源。
6)但是获取到的资源是一个一个的HTML源码,有广告,导航,推荐,(因为服务器并没有特意为你提供一个刚刚好的接口),所以需要根据上面的分析将数据匹配出来。
7)好多人到了上面的步骤就觉得爬虫结束了,实际上不是的,首先,还得对数据进行处理啊,没有经过处理的数据和垃圾没有任何区别,常用的处理大概分为存储,分析两种
8)存储是将过滤清洗后的数据存入数据库,文件,下载到目录等
9)分析包括对数据进行分组,聚合,图像渲染等。
所以爬虫实际上看也是一种很牛的数据分析,因为懂分析的人才能做出更加精确高效的爬虫,总结上面的步骤,我们可以把爬虫分为以下的几个要点:
1、网站抓分析分析
2、数据请求
3、数据过滤清洗
4、数据存储
5、数据使用
爬虫基础知识
基于上一步来讨论爬虫基础知识点:
1、网站抓包分析
网站抓包分析是指分析浏览器请求服务器的请求,分析得到爬虫请求需要需要携带参数的步骤,基础的知识点包括:
1)HTTP协议,这个是WEB请求的核心协议,只有了解了这个才能真正的搞懂网站请求过程。
2)HTML 基本的HTML结构要懂,要不然爬取的内容不好过滤。
3)抓包工具,常用的浏览器F12,学会到哪里可以找到浏览器请求的记录和当中的内容
2、数据请求
数据请求这里更多说的是Python具体的功能模块和请求过程当中的原理,和第一步可能有重叠,但是这一步需要强调:
1)请求模块:urllib,request,selenium 3个,请求框架 scrapy 1个,这些东西需要先在掌握一个,然后慢慢入门其他的。
2)请求过程当中的回话技术(HTTP当中的一部分,这里强调),cookie,session技术原理
3、数据过滤清洗
这里需要的是将请求的html,或者数据进行清洗,具体的模块有:
这里首先使用最频繁的其实不是哪些神奇的模块,而是字符串的基本处理方法,这个使用的是真的多,作者就是通过爬虫这里把字符串的方法彻底掌握的(因为使用太频繁了)。
1)HTML匹配模块:re,lxml,beautifulsoup
2)数据清洗:Python基本的数据结构操作,json等格式化文字模块
4、数据存储
这一步是很好理解的:
1)Python文件操作,内置open方法
2)Python 数据库操作,PyMysql,redis等等…
5、数据使用
使用就更多了,不同的需求,不同的场景,使用也是不同的:
1)numpy 直接分析使用,
2)jinja2,pyecharts 渲染使用
…
爬虫进阶知识点
上面的知识点大家有所掌握之后,可能对一些简单的网站就可以爬取了,但是如果提高的话,还是需要几点思路:
1、让爬虫更加健壮
1)基于类,函数进行代码封装重写
2)添加异常捕获,断言,日志等功能
3)使用其他框架管理爬虫,比如,可视化界面,crontab定时等等
2、让爬虫更加高效
提高效率可能有很多种,为了方便说明还是按照上面的顺序来聊:
1)网站抓包首先说可以使用更加专业的工具,提高抓包效率,比如
PostMan请求,warshak等
2)数据请求,可以提高请求的频率,比如:
- 多线程爬虫
- 协程爬虫
- 多进程爬虫
分布式爬虫,这里强调,就是基于消息队列(redis,rabbitmq,kafka)接入设计模式(生产消费者模式),进行多台服务器同时运行爬虫。
这里要注意的是,请求的效率太快了,导致被请求服务器压力变大,可能引起服务器宕机或者承担法律责任,所以面向爬虫开发又叫做…
3)数据过滤,这里同样可以使用生成消费者模式和消息队列对数据进行批量处理,但是要注意逻辑顺序。
4)数据存储,除了刚才考虑到的文件和数据库之外,对于大数据可能出现的有ES或者HBASE数据库。
5)数据使用,需要根据具体的场景来讨论,这里就不一一列举了,上述就是我们今天总结的知识点,如有不当,多多指出。
最后
如果对Python感兴趣的话,可以试试我的学习方法以及相关的学习资料
👉Python学习路线汇总👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取哈)
👉Python必备开发工具👈
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉实战案例👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉100道Python练习题👈
检查学习结果。
👉面试刷题👈
资料领取
上述这份完整版的Python全套学习资料已经上传CSDN官方,朋友们如果需要可以微信扫描下方CSDN官方认证二维码输入“领取资料” 即可领取