写给小白,Python 爬虫学习思路

爬虫是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官方认证二维码输入“领取资料” 即可领取

在这里插入图片描述


http://www.niftyadmin.cn/n/64850.html

相关文章

自定义bean 加载到spring IOC容器中

自定义bean加载到spring容器中的两种方式: 1.在类上添加注解Controller、RestController(本质是Controller)、Service、Repository、Component2.使用Configuration和Bean 这篇文章主要介绍第二种方式原理(因为在实际使用中&#…

看透react源码之感受react的进化

写在前面 网上有许多关于react源码解读的文章,其中有很多都只是单纯贴源码,罗列变量名。其实大家都知道这个英文怎么读,直译也大概知道意思,但是这个英文在react中起到什么作用,并没有说的很通俗明白。 对于刚刚接触…

力扣上多到习题

1.二分搜索力扣上的704题:https://leetcode.cn/problems/binary-search/2.数组移除元素双指针:定义两个指针,一个快指针一个慢指针,快指针用来获取数组元素,慢指针用来更新数组元素。力扣上的27体:https://…

【C语言】编程初学者入门训练(10)

文章目录91. N个数之和92. 最高分和最低分之差93. 有序序列判断94. 序列中删除指定数字95. 序列中整数去重96. 有序序列合并97. 班级成绩输入输出98. 矩阵元素定位99. 序列重组矩阵100. 最高身高91. N个数之和 问题描述:输入数字N,然后输入N个数&#x…

leetcode.1124 表现良好的最长时间段 - 类单调栈 + 前缀和

1124. 表现良好的最长时间段 题目: 给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数。我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。所谓「表现良好的时间段」,意味在这段时…

如何排查网页在哪里发生了内存泄漏?

今天我们来学习用 devtool 的 Performance 和 Memory 工具来找出网页哪里发生了内存泄漏。 Performace 面板 首先我们打开浏览器的 devtool,选择 Performance(性能)面板,然后将 Memory 选项勾选上。不勾选的话,就不会…

【ros bag 包的设计原理、制作、用法汇总】

ros bag 包的设计原理 序列化和反序列化 首先知道Bag包就是为了录制消息,而消息的保存和读取就涉及到一个广义上的问题序列化和反序列化,它基本上无处不在,只是大部分人没有注意到,举个简单的例子,程序运行的时候,是直接操作的内存,也就是一个结构体或者一个对象,但内…

【软件测试】资深8年测试,总结的测试经验。职场如战场......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 精力有限&#xff0…