90%的人都不算会爬虫,这才是真正的技术,从0到高手的进阶
很多人以为学会了urlib模块和xpath等几个解析库,学了Selenium就会算精通爬虫了,但到外面想靠爬虫技术接点私活,才发现寸步难行。
龙叔我做了近20年的程序员,今天就告诉你,真正的爬虫高手应该学哪些东西,就算你毫无基础,你也能知道应该怎么去学习。
话不多说,我们直接进入正题。
1.语言基础Python
能做爬虫的工具有很多,但业内公认的最方便做爬虫的语言还得是Python,那么如果是为了学爬虫才去学的Python,应该学到什么程度呢?
这里给大家列举了一些必备的python的知识点,不用多学也不能少学,基本上一两周就能搞定。
2.爬虫基础和常用模块
语言基础打好之后,我们就可以正式进入爬虫的学习了。
首先应该学的就是一些爬虫的基础知识,比如说:
- 爬虫的概念和原理
- HTTP的请求原理
- GET请求和POST请求
- User_Agent和Cookie
有了对爬虫的大致了解之后,就可以从常用的模块开始学起来了,urllib和request是爬虫必学的两个模块,比如说refer和状态码,你得清楚你的程序请求返回的是个什么状态,是成功了还是失败了。
等于说这一部分,你应该学会如何让你的程序模拟用户的操作自动给网站或者其他对象发送请求,这是比较基础的。
为什么是很基础的?因为很多网站都是有验证的,所以肯定要学Selenium,一个非常常用的模拟人为的浏览器行为的工具,在验证方面有奇效。
3.解析库
学会了模拟用户行为给爬虫对象发送请求之后,我们肯定得学会把拿到的东西解析出来,不然拿到一堆乱码,耶稣看了也一脸懵逼。
那么解析库要掌握哪些东西,这几个很重要:
- CSV(文件读写操作)
- Xpath
- BS4(Beatiful Soup)
- PyQuery
4.Scrapy框架
何为框架?就相当于一个封装了很多功能的结构体,它帮我们把主要的结构给搭建好了,我们只需往骨架里添加内容就行。
Scrapy框架是一个为了爬取网站数据,提取数据的框架,我们熟知爬虫总共有四大部分,请求、响应、解析、存储,scrapy框架都已经搭建好了。
那么Scrapy要学哪些东西?
- 基本工作流程
- 管道文件、items文件和settings文件
- 翻页和详情页
- scrapy-shell的使用
- scrapy-redis
学会使用框架之后的爬虫能够节省很多时间,不用自己手写全部功能,何乐而不为呢?
5.数据库
对于爬虫高手而言,数据库也是必须掌握的,如果是企业爬虫的话,你爬下来的数据你自己是清楚,但如果还要给其他人去调用,那么多半是整理好之后存放在数据库中,便于大家去调用了。
那么数据库要学什么?不管是SQL还是NOSQL数据库,起码你得会一个,可以是MySQL,也可以是MongoDB,看自己的情况来把。
6.移动端爬虫
很多小伙伴都止步于只会爬爬网页的数据,对于移动端的数据无可奈何,这其实就是典型的爬虫技术还没到家。
那么移动端爬虫要学什么东西?我给大家也列举一下:
7.爬虫技术提升
如果前面的技术你都会了,起码可以应付60%的爬虫对象,但随着反扒机制的不断提升,现在很多爬虫对象都给自己多道城墙,那么普通爬虫师和爬虫高手的区别就在于高端技术。
如果想成为爬虫高手,你还需要学习以下几个方面:
- IP代理和打码平台
同一个IP频繁去爬指定对象,多半会被检测出来是爬虫程序,所以IP代理和打码平台肯定是要会的。
- 复杂验证码的处理
现在的验证码是越来越考验智商了,所以这一块咱们也得掌握,比如说速度算法、OpenCV和行为验证等技术。
- 字体反爬
什么是字体反爬?
简单的说,字体反爬指的就是浏览器页面上的字符和调试窗口或者源码中的内容,显示的不一样,这就是字体反爬。
复杂点来说就是,网页开发者自己创造一种字体,因为在字体中每个文字都有其代号,那么以后在网页中不会直接显示这个文字的最终的效果,而是显示他的代号,因此即使获取到了网页中的文本内容,也只是获取到文字的代号,而不是文字本身。
所以这个技术也可以作为提升的方向。
- JS逆向
出于对数据安全的考虑,现代化的网站/APP通常会对数据接口做加密处理。而分析这些接口的加密算法并实现模拟调用的过程就叫做逆向。
逆向对于爬虫工程师来说是一个永远绕不开的话题,也逐渐成为各企业招聘时,JD 中的一个必备技能要求。
结语
最后给大家总结一下文章中提到的所有技术,都在下方的爬虫学习路线图了:
如果你能学会上面所提的90%以上的技术栈,那么你就能成为一个爬虫高手。
技术无罪,但行为却是可以判刑的,希望大家掌握真正的技术后,用在正途之上。
相关文章:
90%的人都不算会爬虫,这才是真正的技术,从0到高手的进阶
很多人以为学会了urlib模块和xpath等几个解析库,学了Selenium就会算精通爬虫了,但到外面想靠爬虫技术接点私活,才发现寸步难行。 龙叔我做了近20年的程序员,今天就告诉你,真正的爬虫高手应该学哪些东西,就…...
排序之损失函数List-wise loss(系列3)
排序系列篇: 排序之指标集锦(系列1)原创 排序之损失函数pair-wise loss(系列2)排序之损失函数List-wise loss(系列3) 最早的关于list-wise的文章发表在Learning to Rank: From Pairwise Approach to Listwise Approach中,后面陆陆续续出了各种变形&#…...
js对象和原型、原型链的关系
JS的原型、原型链一直是比较难理解的内容,不少初学者甚至有一定经验的老鸟都不一定能完全说清楚,更多的"很可能"是一知半解,而这部分内容又是JS的核心内容,想要技术进阶的话肯定不能对这个概念一知半解,碰到…...
【SpringBoot高级篇】SpringBoot集成Sharding-JDBC分库分表
【SpringBoot高级篇】SpringBoot集成Sharding-JDBC分库分表Apache ShardingSphere分库分表分库分表的方式垂直切分垂直分表垂直分库水平切分水平分库水平分表分库分表带来的问题分库分表中间件Sharding-JDBCsharding-jdbc实现水平分表sharding-jdbc实现水平分库sharding-jdbc实…...
Shell特殊字符
shell语言,一些字符是有特殊意义的。 根据作用分为几种特殊符号 一、空白 shell调用函数,不像c语言那样用把参数放到括号里,用逗号分隔。而是用空格作为参数之间,参数与函数名之间的分隔符。 换行符也是特殊字符。换行符用作一条命…...
【计算机二级python】综合题目
计算机二级python真题 文章目录计算机二级python真题一、德国工业战略规划二、德国工业战略规划 第一问三、德国工业战略规划 第二问一、德国工业战略规划 描述:在右侧答题模板中修改代码,删除代码中的横线,填写代码,完成考试答案。…...
字节直播leader面
设计评论系统(缓存怎么做) mysql是否有主从延迟,如何解决 mysql有主从延迟 主从延迟主要因为mysql主从同步的机制,mysql有三种同步机制 同步复制:事务线程等待所有从库复制成功响应异步复制:事务不等待…...
PIC 单片机的时钟
注意:本文的内容无法保证绝对精确,后续可能会做改动,只是自己的笔记。这里的资料均源自数据手册本身。PIC18系列单片机的参考时钟可以选择三个基础时钟源:Primary Clock, OSC1 or OSC2,Secondary Clock,Inner clock.时钟源分为两个…...
【数据结构】关于二叉树你所应该知道的数学秘密
目录 1.什么是二叉树(可以跳过 目录跳转) 2.特殊的二叉树(满二叉树/完全二叉树) 2.1 基础知识 2.2 满二叉树 2.3 完全二叉树 3.二叉树的数学奥秘(主体) 3.1 高度与节点个数 3.2* 度 4.运用二叉树的…...
哈希表题目:猜数字游戏
文章目录题目标题和出处难度题目描述要求示例数据范围解法一思路和算法代码复杂度分析解法二思路和算法代码复杂度分析题目 标题和出处 标题:猜数字游戏 出处:299. 猜数字游戏 难度 4 级 题目描述 要求 你在和朋友一起玩猜数字(Bulls…...
项目请求地址自动加上了本地ip的解决方式
一般情况下来说都是一些粗心大意的问题导致的 场景一:少加了/ 场景二:前后多加了空格 场景三:拼接地址错误![...
Vue3 企业级项目实战:项目须知与课程约定
本节内容很重要,希望大家能够耐心看完。 Vue3 企业级项目实战 - 程序员十三 - 掘金小册Vue3 Element Plus Spring Boot 企业级项目开发,升职加薪,快人一步。。「Vue3 企业级项目实战」由程序员十三撰写,2744人购买https://s.ju…...
传导EMI抑制-Π型滤波器设计
1 传导电磁干扰简介 在开关电源中,开关管周期性的通断会产生周期性的电流突变(di/dt)和电压突变(dv/dt),周期性的电流变化和电压变化则会导致电磁干扰的产生。 图1所示为Buck电路的电流变化,在Buck电路中上管电流和下…...
如何在excel中创建斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:…...
遮挡检测--基于角度的遮挡检测方法
文章目录1基于角度的遮挡检测方法2遮挡检测遍历方法2.1方法1--自适应径向扫描方法2.2方法2--螺旋扫描法参考1基于角度的遮挡检测方法 在基于角度的方法中,通过依次分析DSM中沿径向方向的投影光线的角度来识别遮挡。定义α\alphaα角:DSM三维点与相机中心…...
【luogu CF1098D】Eels(结论)
Eels 题目链接:luogu CF1098D 题目大意 有一个可重集,每次操作会放进去一个数或者取出一个数。 然后每次操作完之后,问你对这个集合进行操作,每次选出两个数 a,b 加起来合并回去,直到集合中只剩一个数,要…...
【java】遍历文件夹输出所有文件的文件名与绝对路径,在windows环境
【java】遍历文件夹输出所有文件的文件名与绝对路径,在windows环境 String filepath "D:\\CloudMusic\\";//D盘下的file文件夹的目录File file new File(filepath);//File类型可以是文件也可以是文件夹File[] fileList file.listFiles();//将该目录下的…...
Window问题详解(下)
建议先看一下 Window问题详解(上) 思路② 既然会超时,那该怎么办呢? 显然需要一个更快速的方法来解决这个问题! 我们先来观察一下图片: 我们发现,每一次选中的数都会增加下一个。 !!!!! 因此,我们可以根据此特性优化时间!! 第一次先求出前 k − 1 k-1 k−...
Kafka部署与SpringBoot集成
Kafka与ZooKeeper Apache ZooKeeper是一个基于观察者模式的分布式服务管理框架,即服务注册中心。同时ZooKeeper还具有存储数据的能力。Kafka的每台服务器作为一个broker注册到ZooKeeper,多个broker借助ZooKeeper形成了Kafka集群。同时ZooKeeper会保存一…...
c++11 标准模板(STL)(std::unordered_set)(十三)
定义于头文件 <unordered_set> template< class Key, class Hash std::hash<Key>, class KeyEqual std::equal_to<Key>, class Allocator std::allocator<Key> > class unordered_set;(1)(C11 起)namespace pmr { templ…...
【2023】DevOps、SRE、运维开发面试宝典之ELKStack相关面试题
文章目录 1、elasticsearch的应用场景2、elasticsearch的特点3、Elasticsearch集群三种状态分别是什么?代表什么?4、Elasticsearch集群的优化方面5、Elasticsearch集群防止脑裂的配置参数?6、ELK日志采集平台架构组件介绍?7、Logstash组件的作用?8、收集Kubernetes集群程序…...
Hive中的高阶函数(二)
1、UDTF之explode函数 explode(array)将array列表里的每个元素生成一行; explode(map)将map里的每一对元素作为一行,其中key为一列,value为一列; 一般情况下,explode函数可以直接使用即可,也可以根据需要结…...
Java集合知识点总结
ArrayListLinkedListLinkedHashSetHashSetTreeSetHashTableHashMapTreeMap是否有序有序有序有序无序自然排序(Comparator)进行排序,默认升序使用的是重写comparTo方法无序无序自动排序元素是否为空可为null可为null不允许可为null不允许键允许…...
培训班出身的同学简历怎么做?面试要注意哪些?来自资深大厂HR的忠告
目录 1 不少培训班候选人的简历中,缺乏足够的商业项目年限 2 直接描述培训班学习经历会带来的负面影响 3 大龄转行Vs年轻的初级程序员,公司一般会如何选择? 4 经过培训班突击后,可以先面试小公司 5 面试官怎么面试有培训班经历…...
Hive3.1.3安装部署_最小化部署_元数据MySQL部署_Hiveserver2部署_metastore部署---大数据之Hive工作笔记0012
hbase 实时分析 hive 离线分析 这里是新版本的hive3.1.3的安装 关于hive的原理之前的博客已经详细说了 可以看到上面是hive运行的原理图 词法分析 语法分析...
javascript:void(0) 含义
我们经常会使用到 javascript:void(0) 这样的代码,那么在 JavaScript 中 javascript:void(0) 代表的是什么意思呢?javascript:void(0) 中最关键的是 void 关键字, void 是 JavaScript 中非常重要的关键字,该操作符指定要计算一个表…...
不用机器学习不用大数据,给你讲通ChatGPT的深层原理
ChatGPT现在看来已经异常火爆了,很多人已经熟知,并且开始练习使用或者开始利用他开始实践了。但仍然有很多人在观望,在疑惑,今天狗哥不用那些高端大气的机器学习亦或是大数据还给你讲通ChatGPT深层到底是个啥逻辑。 目录 1. 聊家…...
JavaScript中的循环类型
JavaScript 中有三种主要的循环类型: for、while 和 do...while。 for: 循环指定次数。 例如: for (let i 0; i < 5; i) {console.log(i); } while: 当条件为真时循环。 例如: let i 0; while (i < 5) {console.log(i);i; } do...while: 先执…...
Spring Boot+Vue前后端分离项目练习02之网盘项目利用token进行登陆验证
1.添加依赖 首先需要添加jwt对应的依赖。 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></dependency>2.添加配置 JWT由三部分构成,分别是 header, pa…...
springcloud常见面试题(2023最新)
目录前言一.微服务1.微服务是什么?2.你知道哪些RPC框架3.springCloud和Dubbo有什么区别4. SpringCloud由什么组成二.Spring Cloud Eureka1.Eureka包含几个组件2.Eureka的工作原理3.说一下什么是Eureka的自我保护机制4.什么是CAP原则5.都是服务注册中心,E…...
专业烟台房产网站建设/百度推广代理
通常word文件可以通过另存为html/htm的方式把图片从内容中拆分出来,网上一搜一大堆。 上述操作主要是针对.doc文件进行操作才能得到原图,现在我有.docx文件,使用这种方式就只能得到文档中被编辑过的图片,并且编辑过的图片拿出来会…...
龙华做网站的公司/百度收录接口
[TOC] 1. 什么是碎片 碎片,是Android 3.0(API 11)提出的,为了兼容低版本,support-v4库中也开发了一套Fragment API,最低兼容Android 1.6。 过去support-v4库是一个jar包,24.2.0版本开始&…...
建云购网站/2022年百度seo
文章目录理论知识单链表双链表循环链表链表的存储方式链表的代码定义链表的操作删除节点添加节点性能分析链表的一些题目单链表的一些题目单循环链表有序双向链表的题目双向循环链表刷题跟随carl代码随想录,牛客刷题总结 理论知识 链表是一种通过指针串联在一起的线…...
泰安网站建设公司/怎么找关键词
全景制作其实并不难,掌握要点你也能成为制作高手,下面为大家盘点一下制作流程。首先了解一下全景图片是什么.全景图片是指从多种角度拍摄的一组或多组图片经过后期加工制作而成的图像,制作全景图片分为前期拍摄和后期制作两个部分。 1.前期拍…...
重庆电商网站建设费用/手机百度搜索引擎入口
异步初步了解: 今天学es6中碰到关于异步(Asynchronous)的问题,然后觉得听到异步这个词自己知道是个什么意思,但是如果要自己用代码解释出来的话.....所以慢慢整理了一些东西如下: 1. 说到异步,肯…...
如何快速建设自适应网站/深圳网络营销策划
本节书摘来自华章计算机《大数据架构和算法实现之路:电商系统的技术实战》一书中的第2章,第2.4节,作者 黄 申,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 2.4 案例实践 2.4.1 使用R进行K均值聚类 在实践部分&…...