Python爬虫知识点梳理

简介:

学任何一门技术,都应该带着目标去学习,目标就像一座灯塔,指引你前进,很多人学着学着就学放弃了,很大部分原因是没有明确目标,所以,在你准备学爬虫前,先问问自己为什么要学习爬虫。有些人是为了一份工作,有些人是为了好玩,也有些人是为了实现某个黑科技功能。不过可以肯定的是,学会了爬虫能给你的工作提供很多便利。

作为零基础小白,大体上可分为三个阶段去实现,第一阶段是入门,掌握必备基础知识,比如Python基础、网络请求的基本原理等,第二阶段是模仿,跟着别人的爬虫代码学,弄懂每一行代码,熟悉主流的爬虫工具,第三阶段是自己动手,到了这个阶段你开始有自己的解题思路了,可以独立设计爬虫系统。

爬虫涉及的技术包括但不限于熟练一门编程语言(这里以 Python 为例) HTML 知识、HTTP 协议的基本知识、正则表达式、数据库知识,常用抓包工具的使用、爬虫框架的使用、涉及到大规模爬虫,还需要了解分布式的概念、消息队列、常用的数据结构和算法、缓存,甚至还包括机器学习的应用,大规模的系统背后都是靠很多技术来支撑的。数据分析、挖掘、甚至是机器学习都离不开数据,而数据很多时候需要通过爬虫来获取,因此,即使把爬虫作为一门专业来学也是有很大前途的。

那么是不是一定要把上面的知识全学完了才可以开始写爬虫吗?当然不是,学习是一辈子的事,只要你会写 Python 代码了,就直接上手爬虫,好比学车,只要能开动了就上路吧,写代码可比开车安全多了。

用 Python 写爬虫,首先需要会 Python,把基础语法搞懂,知道怎么使用函数、类、list、dict 中的常用方法就算基本入门。接着你需要了解 HTML,HTML 就是一个文档树结构,网上有个 HTML 30分钟入门教程 https://deerchao.net/tutorials/html/html.htm 够用了。然后是关于 HTTP 的知识,爬虫基本原理就是通过网络请求从远程服务器下载数据的过程,而这个网络请求背后的技术就是基于 HTTP 协议。作为入门爬虫来说,你需要了解 HTTP协议的基本原理,虽然 HTTP 规范用一本书都写不完,但深入的内容可以放以后慢慢去看,理论与实践相结合。

网络请求框架都是对 HTTP 协议的实现,比如著名的网络请求库 Requests 就是一个模拟浏览器发送 HTTP 请求的网络库。了解 HTTP 协议之后,你就可以专门有针对性的学习和网络相关的模块了,比如 Python 自带有 urllib、urllib2(Python3中的urllib),httplib,Cookie等内容,当然你可以直接跳过这些,直接学习 Requests 怎么用,前提是你熟悉了 HTTP协议的基本内容,数据爬下来,大部分情况是 HTML 文本,也有少数是基于 XML 格式或者 Json 格式的数据,要想正确处理这些数据,你要熟悉每种数据类型的解决方案,比如 JSON 数据可以直接使用 Python自带的模块 json,对于 HTML 数据,可以使用 BeautifulSoup、lxml 等库去处理,对于 xml 数据,除了可以使用 untangle、xmltodict 等第三方库。

爬虫工具里面,学会使用 Chrome 或者 FireFox 浏览器去审查元素,跟踪请求信息等等,现在大部分网站有配有APP和手机浏览器访问的地址,优先使用这些接口,相对更容易。还有 Fiddler 等代理工具的使用。

入门爬虫,学习正则表达式并不是必须的,你可以在你真正需要的时候再去学,比如你把数据爬取回来后,需要对数据进行清洗,当你发现使用常规的字符串操作方法根本没法处理时,这时你可以尝试了解一下正则表达式,往往它能起到事半功倍的效果。Python 的 re 模块可用来处理正则表达式。这里也推荐一个教程:Python正则表达式指南 https://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html

数据清洗完最终要进行持久化存储,你可以用文件存储,比如CSV文件,也可以用数据库存储,简单的用 sqlite,专业点用 MySQL,或者是分布式的文档数据库 MongoDB,这些数据库对Python都非常友好,有现成的库支持,你要做的就是熟悉这些 API 怎么使用。

从数据的抓取到清洗再到存储的基本流程都走完了,也算是基本入门了,接下来就是考验内功的时候了,很多网站都设有反爬虫策略,他们想方设法阻止你用非正常手段获取数据,比如会有各种奇奇怪怪的验证码限制你的请求操作、对请求速度做限制,对IP做限制、甚至对数据进行加密操作,总之,就是为了提高获取数据的成本。这时你需要掌握的知识就要更多了,你需要深入理解 HTTP 协议,你需要理解常见的加解密算法,你要理解 HTTP 中的 cookie,HTTP 代理,HTTP中的各种HEADER。爬虫与反爬虫就是相爱相杀的一对,道高一次魔高一丈。如何应对反爬虫没有既定的统一的解决方案,靠的是你的经验以及你所掌握的知识体系。这不是仅凭21天入门教程就能达到的高度。

进行大规模爬虫,通常都是从一个URL开始爬,然后把页面中解析的URL链接加入待爬的URL集合中,我们需要用到队列或者优先队列来区别对待有些网站优先爬,有些网站后面爬。每爬去一个页面,是使用深度优先还是广度优先算法爬取下一个链接。每次发起网络请求的时候,会涉及到一个DNS的解析过程(将网址转换成IP)为了避免重复地 DNS 解析,我们需要把解析好的 IP 缓存下来。URL那么多,如何判断哪些网址已经爬过,哪些没有爬过,简单点就是是使用字典结构来存储已经爬过的的URL,但是如果碰过海量的URL时,字典占用的内存空间非常大,此时你需要考虑使用 Bloom Filter(布隆过滤器),用一个线程逐个地爬取数据,效率低得可怜,如果提高爬虫效率,是使用多线程,多进程还是协程,还是分布式操作。


转自:https://mp.weixin.qq.com/s?__biz=MjM5MzgyODQxMQ==&mid=2650367313&idx=1&sn=85f7e54a623c626ddb2605df5156a7c3&chksm=be9cde0589eb5713b36ada31389e4f35439a44b4fd0f852c4acfb3e4f8594ae4ff21824724e0&scene=21#wechat_redirect

目录
相关文章
|
2月前
|
数据采集 Web App开发 数据安全/隐私保护
实战:Python爬虫如何模拟登录与维持会话状态
实战:Python爬虫如何模拟登录与维持会话状态
|
3月前
|
数据采集 Web App开发 自然语言处理
新闻热点一目了然:Python爬虫数据可视化
新闻热点一目了然:Python爬虫数据可视化
|
4月前
|
数据采集 数据挖掘 测试技术
Go与Python爬虫实战对比:从开发效率到性能瓶颈的深度解析
本文对比了Python与Go在爬虫开发中的特点。Python凭借Scrapy等框架在开发效率和易用性上占优,适合快速开发与中小型项目;而Go凭借高并发和高性能优势,适用于大规模、长期运行的爬虫服务。文章通过代码示例和性能测试,分析了两者在并发能力、错误处理、部署维护等方面的差异,并探讨了未来融合发展的趋势。
391 0
|
2月前
|
数据采集 监控 数据库
Python异步编程实战:爬虫案例
🌟 蒋星熠Jaxonic,代码为舟的星际旅人。从回调地狱到async/await协程天堂,亲历Python异步编程演进。分享高性能爬虫、数据库异步操作、限流监控等实战经验,助你驾驭并发,在二进制星河中谱写极客诗篇。
Python异步编程实战:爬虫案例
|
3月前
|
数据采集 存储 XML
Python爬虫技术:从基础到实战的完整教程
最后强调: 父母法律法规限制下进行网络抓取活动; 不得侵犯他人版权隐私利益; 同时也要注意个人安全防止泄露敏感信息.
769 19
|
2月前
|
数据采集 存储 JSON
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
|
2月前
|
数据采集 存储 JavaScript
解析Python爬虫中的Cookies和Session管理
Cookies与Session是Python爬虫中实现状态保持的核心。Cookies由服务器发送、客户端存储,用于标识用户;Session则通过唯一ID在服务端记录会话信息。二者协同实现登录模拟与数据持久化。
|
3月前
|
数据采集 存储 Web App开发
处理Cookie和Session:让Python爬虫保持连贯的"身份"
处理Cookie和Session:让Python爬虫保持连贯的"身份"
|
4月前
|
数据采集 存储 JSON
地区电影市场分析:用Python爬虫抓取猫眼/灯塔专业版各地区票房
地区电影市场分析:用Python爬虫抓取猫眼/灯塔专业版各地区票房
|
3月前
|
数据采集 Web App开发 前端开发
处理动态Token:Python爬虫应对AJAX授权请求的策略
处理动态Token:Python爬虫应对AJAX授权请求的策略

推荐镜像

更多