爬虫,爬吗?咋爬?

发布于:2022-12-19 ⋅ 阅读:(516) ⋅ 点赞:(0)

爬虫

现在提起爬虫,都会想到 python,python 爬虫等。但如果抛开语言层面来看,啥是爬虫呢?写一个爬虫程序都需要啥技术背景呢?本篇会以我对爬虫的的一些理解来谈谈这些事,不足之处,还望指正。

爬虫的定义

网络爬虫,是一种按照一定的规则,自动地抓特定网站或多个网站信息的程序或者脚本。例如各大搜索引擎爬虫,电影的评论分析、房价分析、工资分析等专门针对某些网站写的爬虫。

爬虫的用途

  • 收录网站打造搜索引擎。如:百度、谷歌、搜狗等各大搜索引擎利用的就是爬虫技术
  • 快速的、批量的下载你喜欢的内容。比如妹子的图片,大姐姐们的视频,给她们打造一个自己的家
  • 收集各种你想要的数据。数据有了,是分析还是展示还是收藏还是贩卖,你说了算

爬吗?

大家听到爬虫,对比web前端、App前端、游戏前端、服务端程序员可能会觉得很上不得台面,但我不这样想,我认为掌握了爬虫相关知识,会对知识的广度有很全面的提升,比如页面爬虫,肯定会要一些前端html的知识,代码肯定要会一门编程语言,web逆向肯定要会JavaScript,存储数据肯定要知道数据库的知识,部署爬虫慢慢肯定要学一些运维相关的知识,至于网络协议方面就是更要了解的了。正因为爬虫的技术广度很大,所以在学的过程中,也能够大大提升个人的学习能力。

咋爬?

爬虫的技术栈

  1. 一些不需要太深的 web 前端技术。如 html、css 表达式、xpath 表达式。不要求太过精通,最起码能看懂,查查资料能会写。打开一个网页能分析出一个元素的位置,写出 css 或 xpath 表达式
  2. 基本的网络知识,HTTP 协议。如各类请求的区别,请求头、响应头、请求体、响应体、cookies、代理等
  3. JavaScript 的基本知识。有一些网站会对关键的信息进行加密,这时会用到 JavaScript 来进行解密,然后进行后续操作
  4. 掌握一门或几门数据库。数据弄下来了肯定是要想法办法保存的,这时掌握一门数据库就很有必要了
  5. 一门或几门编程语言。编程语言这个是最重要的,也是最不重要的。因为没有语言都没办法去实现,不重要是因为任何语言都是相通的,不必要进行纠结,所以也不那么太重要
  6. 一些运维部署相关的知识。爬虫要想长久的运行起来,肯定不是本地跑一个脚本那么简单,是要了解一些运维部署相关知识的

爬取一个网站的步骤

  1. 确定爬取目标及要爬取内容。

首先要确定你要爬取的网站是哪个?以及在该网站上面要获取哪些信息和字?这些信息和字段存在于哪些个页面中?这几个页面的入口的什么?是否需要登录?

  1. 分析网页,确定目标信息在网站中的位置及取得方式。

信息在网页中存在的方式大体可以分为三种:

  • 直接存在于静态网页中。这时可以通过xpthcss 或正则等方式直接提取出来
  • 通过 GET 或 POST 动态请求数据,这时可以通过浏览器观察目标请求然后在代码中模拟,得到想要的数据
  • 目标数据也存在html页面中,但是是通过js代码渲染出来的,并且代码可能经过加密。这时就比较麻烦了,这个需要把js代码转换为目标语言来获取,或直接使用 js 环境执行 js 代码
  1. 确定数据存储方式。内存、redis、数据库、json、xml、xlsx 文件等

  2. 选择一门语言、框架进行编码

  3. 运行起来。或是监听爬取,或是定时爬取,或是一次性爬取,根据需要来决定。长时间运行的话,还有涉及日志的收集、错误报警的提醒等

学习及进阶

  1. 爬虫程序的健壮性。一个爬虫程序什么最重要?我认为字当排第一。一个非常健壮、稳如老狗的爬虫程序才是一个好程序。所以 ip 代理、访问频率、常用有效的 UA 库、Cookie 池、验证码、反反爬虫、反反反反爬虫等等技术需要慢慢掌握
  2. 各种逆向知识。爬虫考验的重来不只是编码的技能,更重要是逆向的知识,网页逆向、移动端逆向、PC端逆向、各种平台的抓包等
  3. 爬虫成功的速度。在保证一个程序的健壮性之后。重要的就是速度了。爬虫的根本目的就是为了减少人工操作的时间。多线程、多进程、异步、分布式等在相关语言中就需要多学习了
  4. 程序设计模式、数据结构、算法、架构、编码风格等。这个就不需要多说什么了,无论做什么都是需要的
  5. 持续学习。爬虫说深不深,说浅不浅。全看自己。
  6. 最重要的一点:刑法,一定不要触犯法律。

结语

这篇文章的内容不多,没有任何代码,只是浅谈了本人对爬虫的一些看法。

爬虫是一本技术,而语言是一个工具,没有最好用的,只有在什么时机最适合用的。有专门的爬虫程序,有嵌入到客户端中的爬虫,也有嵌入到服务器中的爬虫。

最后愿大家在爬虫的路上可以有所成,有所收获。


 


网站公告

今日签到

点亮在社区的每一天
去签到