Python爬虫知识点梳理

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

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

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

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

网络请求框架都是对 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 等代理工具的使用。

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

从数据的抓取到清洗再到存储的基本流程都走完了,也算是基本入门了,接下来就是考验内功的时候了,很多网站都设有反爬虫策略,他们想方设法阻止你用非正常手段获取数据,比如会有各种奇奇怪怪的验证码限制你的请求操作、对请求速度做限制,对IP做限制、甚至对数据进行加密操作,总之,就是为了提高获取数据的成本。这时你需要掌握的知识就要更多了,你需要深入理解 HTTP 协议,你需要理解常见的加解密算法,你要理解 HTTP 中的 cookie,HTTP 代理,HTTP中的各种HEADER。进行大规模爬虫,通常都是从一个URL开始爬,然后把页面中解析的URL链接加入待爬的URL集合中,我们需要用到队列或者优先队列来区别对待有些网站优先爬,有些网站后面爬。每爬去一个页面,是使用深度优先还是广度优先算法爬取下一个链接。每次发起网络请求的时候,会涉及到一个DNS的解析过程(将网址转换成IP)为了避免重复地 DNS 解析,我们需要把解析好的 IP 缓存下来。URL那么多,如何判断哪些网址已经爬过,哪些没有爬过,简单点就是是使用字典结构来存储已经爬过的的URL,但是如果碰过海量的URL时,字典占用的内存空间非常大,此时你需要考虑使用 Bloom Filter(布隆过滤器),用一个线程逐个地爬取数据,效率低得可怜,如果提高爬虫效率,是使用多线程,多进程还是协程,还是分布式操作。

原文地址:https://www.cnblogs.com/xiniudaili/p/10209026.html

时间: 2024-10-08 19:12:09

Python爬虫知识点梳理的相关文章

Python 学习知识点梳理

一.Python在各大知名公司的应用 谷歌:Google App Engine.code.google.com.Google earth.谷歌爬虫.Google广告等项目都在大量使用Python开发.(Python的创始人最初工作在此,俗称龟叔) CIA:美国中情局网站使用Python开发. NASA:美国航天局(NASA)大量使用Python进行数据分析和运算. YouTube:世界上最大的视频网站YouTube就是用Python开发的.(创始人是华人陈士俊) DropBox:美国最大的在线云

Python 爬虫知识点 - 淘宝商品检索结果抓包分析(续)

通过前一节得出地址可能的构建规律,如下: https://s.taobao.com/search?data-key=s&data-value=44&ajax=true&_ksTS=1481814489094_902&callback=jsonp903&q=Python%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0&imgfile=&js=1&stats_click=search_radio_all%3A1&i

Python爬虫知识点四--scrapy框架

一.scrapy结构数据 解释: 1.名词解析: o??引擎(Scrapy Engine)o??调度器(Scheduler)o??下载器(Downloader)o??蜘蛛(Spiders)o??项目管道(Item Pipeline)o??下载器中间件(Downloader Middlewares)o??蜘蛛中间件(Spider Middlewares)o??调度中间件(Scheduler Middlewares) 2.具体解析 绿线是数据流向??从初始URL开始,Scheduler会将其交给Do

Python 爬虫知识点 - 淘宝商品检索结果抓包分析(续二)

一.URL分析 通过对“Python机器学习”结果抓包分析,有两个无规律的参数:_ksTS和callback.通过构建如下URL可以获得目标关键词的检索结果,如下所示: https://s.taobao.com/search?data-key=s&data-value=44&ajax=true&_ksTS=1482325509866_2527&callback=jsonp2528&q=Python机器学习&imgfile=&js=1&stat

Python爬虫知识点——请求

请求 :请求方法.请求网址.请求头.请求体 请求方法: 常见的为:GET.POST GET与POST主要区别: GET请求参数包含在URL,可从URL中看出.POST请求的URL不包含参数,都是通过表单的形式传输的,包含在请求体中 GET请求提交的数据最多只有1024字节,POST无限制 其他还有HEAD.PUT.DELETE.CONNECT.OPTIONS.TRACE 请求的网址: 即URL,我们想要请求的资源 请求头: 用来说明服务器要使用的附加信息,比较总要的有Cookie.Referer

Python爬虫知识点——爬虫的基本原理

爬虫的基本原理 爬虫就是获取网页并提取和保存信息的自动化程序 获取网页: 获取网页就是获取网页的源码,只要把源码获取下来,就可以从中提取想要的消息 爬虫的流程:想网站的服务器发送一个请求,返回的响应体就是网页的源代码. ? ==>1,构造请求发送给服务器===>2.接受响应并解析 提取信息: 通过分析网页结构,提取网页信息.通常使用的解析库有:BeautifulSoup.lxml.pyquery,也可以使用正则,但是构造正则表达式比较复杂且易错 保存数据: 将提取的数据保存到某处以便后续利用.

Python爬虫知识点——响应

响应: 响应状态码.响应头.响应体 响应状态码: **表2-3常见的错误代码及错误原因** 状态码 说明 详情 100 继续 请求者应当继续提出请求.服务器返回此代码表示已收到请求的第一部分,正在等待其余部分. 101 切换协议 请求者已要求服务器切换协议,服务器已确认并准备切换. 200 成功 服务器已成功处理了请求.通常,这表示服务器提供了请求的网页. 201 已创建 请求成功并且服务器创建了新的资源. 202 已接受 服务器已接受请求,但尚未处理. 203 非授权信息 服务器已成功处理了请

python爬虫知识点总结(八)Selenium库详解

一.什么是Selenium? 答:自动化测试工具,支持多种浏览器.用来驱动浏览器,发出指令让浏览器做出各种动作,如下拉,跳转等. 爬虫中主要用来解决JavaScript渲染的问题. 注:如果用requests,urllib这些库无法正常获取网页内容,可以用Selenium来完成渲染 二.安装 pip3 install selenium 三.基本使用 原文地址:https://www.cnblogs.com/cthon/p/9410796.html

Python 爬虫知识点

一.基础知识 1.HTML分析 2.urllib爬取 3.urllib保存网页 4.urllib保存图片 5.模拟浏览器 6.正则表达式 7.IP代理 8.抓包分析 9.多线程爬取 10.异常处理 11.XPath 二.Scrapy安装关联包 PyCharm--->File--->Settings--->Project..........