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

news2024/11/26 2:43:38

爬虫是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.coloradmin.cn/o/345963.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

iTerm2 + Oh My Zsh 打造舒适终端体验

最终效果图: 因为powerline以及homebrew均需要安装command line tool,网络条件优越的同学在执行本文下面内容之前,可以先安装XCode并打开运行一次(会初始化安装components),省去以后在iterm2中的等待时间。…

LeetCode 234. 回文链表 | C语言版

LeetCode 234. 回文链表 | C语言版LeetCode 234. 回文链表题目描述解题思路思路一:使用快慢双指针代码实现运行结果参考文章:[https://leetcode.cn/problems/palindrome-linked-list/solutions/1011052/dai-ma-sui-xiang-lu-234-hui-wen-lian-bia-qs0k/?…

这几款高效办公神器,职场大神都在用(建议收藏)

都快2023年了,还不知道怎么用网站来提高工作和生活质量?还不快搬好小板凳,听我来安利这几个实用网站! 一、做图神器 1.创可贴:国内最火的在线设计工具 链接:https://www.chuangkit.com/designtools/desi…

基于深度学习的三维重建(一):三维重建简介、patchmatchNet环境部署、用colmap如何测试自己的数据集

目录 1.什么是三维重建 2.MVS是什么 3.传统MVS的局限性和为什么基于深度学习的MVS性能好于传统三维重建 4.基础概念 5. patchmatchNet环境配置 6.如何测试自己的数据集(位姿计算) 6.1 colmap导出位姿 6.2 将colmap位姿转换成MVS读取的数据格式 1.…

Linux安装Docker配置docker-compose 编排工具【超详细】

一、介绍Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有…

面试官:什么是性能测试计划?(内含干货)

引言在进入今天的内容前, 先想几个问题:什么是测试计划?什么是性能测试计划?在你的性能知识领域中, 你认为性能测试计划应该包含哪些内容?因为作为企业的金牌面试官, 经过我面试的求职者&#x…

一文搞懂:JS严格模式“use strict”

什么是JS的严格模式 JS严格模式概念是在ES5中引入的,在此模式下,JS对语法的要求会变的严格,某些不太严谨的代码在严格模式下将不能运行。 如何启用严格模式 只需要JS代码的起始添加 "use strict"即可。如: "use…

Spring Boot邮件发送(powernode CD2207)(内含教训视频+源代码)

Spring Boot邮件发送(powernode CD2207)(内含教训视频源代码) 教学视频源代码下载链接地址:https://download.csdn.net/download/weixin_46411355/87452056 目录Spring Boot邮件发送(powernode CD2207&…

图解LeetCode——1233. 删除子文件夹(难道:中等)

一、题目 你是一位系统管理员,手里有一份文件夹列表 folder,你的任务是要删除该列表中的所有 子文件夹,并以 任意顺序 返回剩下的文件夹。 如果文件夹 folder[i] 位于另一个文件夹 folder[j] 下,那么 folder[i] 就是 folder[j] …

Redis学习【4】之简单动态字符串

文章目录一 简单动态字符串 SDS1.1 SDS简介1.2 SDS结构1.3 SDS优势1.3.1 防止”字符串长度获取”性能瓶颈1.3.2 保障二进制安全1.3.3 减少内存再分配次数1.3.4 兼容C函数1.4 常用的 SDS 操作函数一 简单动态字符串 SDS 1.1 SDS简介 无论是 Redis 的 Key 还是 Value&#xff0…

《系统架构设计》-01-架构和架构师概述

文章目录1. 架构的基本定义1.1 架构组成理论1.1.1 系统元素1)概念2)静态结构和动态结构1.1.2 基本系统属性1.1.3 设计和发展原则1.2 架构的决策理论1.2.1 统一软件过程(Rational Unified Process,统一软件过程)1.2.2 决…

《手把手教你》系列基础篇(七十三)-java+ selenium自动化测试-框架设计基础-TestNG实现启动不同浏览器(详解教程)

1.简介 上一篇文章中,从TestNg的特点我们知道支持变量,那么我们这一篇就通过变量参数来启动不同的浏览器进行自动化测试。那么如何实现同时启动不同的浏览器对脚本进行测试,且听我娓娓道来。 2.项目实战 2.1创建一个TestNg class 1.首先按…

深入工厂|高精密多层板是如何被智造出来的?

或许有很多人从网络上见过各种教程,告诉你单层板是什么,多层板是什么,他们该如何做出来,但是在具体制造时却全凭想象,今天,就让我们来实地看看,精密的多层板是如何被制造出来的!今天…

大数据---zookeeper集群搭建

zookeeper集群搭建 跳过安装jdk的方法就是找到安装jdk环境的虚拟机克隆 克隆之后的虚拟机根据台数直接修改ip地址,重新配置免密登录,确保每台机器能够互相连接,然后安装zookeeper 文章目录zookeeper集群搭建前期工作服务器划分修改hostname设…

【java】Spring Boot -- Spring AOP原理及简单实现

文章目录一、AOP基本概念1.1、Filter、Interceptor、AOP1.2、AOP中的一些概念1).通知(Advice): AOP 框架中的增强处理。通知描述了切面何时执行以及如何执行增强处理;通知类型,主要有以下几种:2).连接点(Jo…

Acwing---1246. 等差数列

等差数列1.题目2.基本思想3.代码实现1.题目 数学老师给小明出了一道等差数列求和的题目。 但是粗心的小明忘记了一部分的数列,只记得其中 N个整数。 现在给出这 N个整数,小明想知道包含这 N 个整数的最短的等差数列有几项? 输入格式 输入…

ChatGPT 接入微信,最强聊天机器人来了

最近的 ChatGPT 又再次火热起来了,各种周边工具也是层出不穷,今天我们就一起来做一个基于 ChatGPT 的微信聊天机器人,来感受 AI 世界的快乐吧~ 我们先来看几个我比较关心的问题吧 Python 语言算法 什么是 ChatGPT 人工智能会统治世界吗&a…

【Kubernetes】【二】环境搭建 环境初始化

本章节主要介绍如何搭建kubernetes的集群环境 环境规划 集群类型 kubernetes集群大体上分为两类:一主多从和多主多从。 一主多从:一台Master节点和多台Node节点,搭建简单,但是有单机故障风险,适合用于测试环境多主…

带你玩转Jetson之Deepstream简明教程(四)DeepstreamApp如何使用以及用于工程验证。

1.DeepstreamApp是什么? 如果你安装完毕deepstream整体框架,会在你的系统执行目录内有可执行文件,文件名字是deepstream-app。这是一个可执行脚本文件,通过deepstream框架中的代码在安装的时候编译后install到系统根目录内。 此脚…

家政服务小程序实战教程11-首页跳转到分类页面

小程序的分类页面,通常会以侧边栏导航显示内容,我们使用了侧边选项卡和数据列表组件实现了分类展示的功能 还有个需求是从首页点击某个分类的时候,跳转到分类页时候需要选中对应的类别 01 增加页面参数 页面如果跳转时候需要这种接收参数并实…