当前位置: 首页 > 后端技术 > Python

【爬虫0基础知识】爬虫基本介绍

时间:2023-03-26 14:14:13 Python

大数据时代,各行各业对数据采集的需求越来越大,网络爬虫的使用也越来越广泛。越来越多的人开始学习网络爬虫,对于这项技术,K爬虫哥之前发布过很多爬虫进阶和逆向相关的文章。为做到从易到难全面覆盖,特设专栏【0爬虫基础】帮助小白快速上手爬虫。本期为爬虫基础介绍。一、爬虫概述爬虫又称网络蜘蛛、网络机器人。根据系统结构和实现技术,网络爬虫大致可以分为以下几种类型:可扩展网络爬虫:爬取互联网上的所有数据,爬取对象从一些种子URL扩展到整个Web,主要收集门户网站搜索的数据引擎和大型网络服务提供商,是搜索引擎抓取系统(百度、谷歌、雅虎等)的重要组成部分。FocusedCrawler:抓取互联网上的特定数据并根据预先定义的主题选择性地爬取网页,并将抓取的目标网页定位在与主题相关的页面中,选择性地抓取特定领域信息的爬虫。增量网络爬虫(IncrementalWebCrawler):抓取互联网上新更新的数据,采用增量更新,只抓取新生成或变化的网页,可以在一定程度上保证抓取的页面是尽可能新的页面,减少时间和空间消耗。DeepWebCrawler:SurfaceWeb是指可以被传统搜索引擎收录的页面,主要由超链接可以到达的静态网页组成;通过静态链接获取的网页,隐藏在搜索表单后面,只有在用户提交一些关键字时才可用。在互联网中,深层页面的数量往往远大于表层页面的数量。爬虫程序可以模拟浏览器请求站点的行为,将站点返回的HTML代码/JSON数据/二进制数据(图片、视频、音频)爬取到本地,然后提取自己需要的数据,并存储起来对于使用,每个程序都有自己的规则,网络爬虫也不例外。他们根据人们强加的规则收集信息。这些规则是网络爬虫算法。根据用户的目的,爬虫可以实现不同的功能,但所有爬虫的本质都是为了方便人们在海量的互联网信息中查找和下载自己想要的东西,提高信息获取效率。爬虫收集的是普通用户可以浏览的内容,而不是所谓的“入侵服务器”。每个人都可以达到这个水平~2.爬虫的使用现在大数据时代已经到来,网络爬虫技术已经成为这个时代不可或缺的一部分。企业需要数据来分析用户行为、自身产品的不足以及竞争对手。信息等等,而这一切的首要条件就是数据的收集。网络爬虫的价值其实就是数据的价值。在互联网社会,数据是无价之宝,一切都是数据。谁拥有大量有用的数据,谁就拥有决策的主动权。目前网络爬虫的主要应用领域有:搜索引擎、数据采集、数据分析、信息聚合、竞品监测、认知智能、舆情分析等。与爬虫业务相关的公司数不胜数,如百度、谷歌、天眼查、企业查查、信帮、飞瓜等。大数据时代,爬虫应用广泛,需求量大。举几个贴近生活的例子:求职需求:获取各个城市的招聘信息和薪资标准,轻松筛选出适合你的;租房需求:获取各个城市的租房信息,从而选择心仪的房源;美食需求:从各地获取美食,让吃货不迷路;购物需求:获取同一商品在各个商家的价格和折扣信息,让购物更实惠;购车需求:获取你喜欢的车辆近几年的价格波动,以及不同渠道的各款车型的价格,帮助你选车。3、URI和URL的含义URI(UniformResourceIdentifier),即统一资源标识符,URI(UniformResourceLocation),即统一资源定位符,如https://www.kuaidaili.com/,既是URI又是AURL。URL是URI的子集。对于一般的网页链接,习惯上称为URL。URL的基本格式如下:scheme://[用户名:密码@]host[:port][/path][;parameters][?query][#fragment]各部分含义如下:scheme:用于获取资源的协议,如http、https、ftp等,没有默认值,也叫scheme协议;username:password:用户名和密码,在某些情况下,URL需要提供用户名和密码才能访问。这是一个特殊的存在。一般在访问ftp时使用。明确表示访问资源的用户名和密码,可以不写,否则可能会要求你输入用户名和密码;host:主机地址,可以是域名或IP地址,如www.kuaidaili.com、112.66.251.209;port:端口,服务器设置的服务端口,http协议默认端口为80,https协议默认端口为443。例如https://www.kuaidaili.com/等同于https://www.kuaidaili.com:443;path:path指的是网络资源在服务器中的指定地址,通过host:port我们可以找到主机,但是主机上的文件很多,可以通过path来定位到具体的文件。比如https://www.baidu.com/file/in...,路径是/file/index.html,表示我们访问的是文件/file/index.html;parameters:参数,用来指定访问某个资源,主要作用是给服务器提供额外的参数,表示本次请求的一些特征,比如https://www.kuaidaili.com/dps;kspider,kspider是一个参数,现在很少用到。他们中的大多数使用查询部分作为参数;query:查询,因为查询某类资源,如果有多个查询,用&隔开,通过GET请求参数,例如:https://www.kuaidaili.com/dps。..,查询部分为username=kspider&type=spider,指定用户名为kspider,类型为spider;fragment:片段,是资源描述的一部分,用于标识二级资源,比如https://www.kuaidadaili.com/dps...,kspider是fragment:application:单页路由的值,HTML锚点;#不同于?,是在?之后的查询字符串将通过网络请求带到服务器,但不会将片段发送到服务器;片段的变化不会触发浏览器刷新页面,但会产生浏览历史;片段将由浏览器根据文件媒体类型(MIME类型)进行处理;默认情况下,谷歌的搜索引擎会忽略#及其后面的内容,如果你想被浏览器引擎读取,你需要在#后面加上一个!,Google会自动将其后面的内容转换为查询字符串_escaped_fragment_的值,如https://www.kuaidaili.com/dps#!kspider,转换为https://www.kuaidadaili.com/dps…。由于爬虫的目标是获取资源,而资源是存放在某个主机上的,所以爬虫在爬取数据时必须有一个目标URL来获取数据。所以,URL是爬虫获取数据的基本依据,准确理解URL的含义,对爬虫的学习很有帮助。4、爬虫的基本流程发起请求:通过URL向服务器发起Request请求(同打开浏览器输入URL浏览网页)。请求中可以包含h??eader、cookies、proxies、data等附加信息,Python提供了很多库来帮助我们实现这个过程,完成HTTP请求操作,比如urllib、requests等;获取响应内容:如果服务器正常响应,就会收到Response,就是我们请求的网页内容,包括HTML(网页源代码)、JSON数据或者二进制数据(视频、音频、图片)等。;解析内容:收到响应内容后,需要进行解析,提取出数据内容。如果是HTML(网页源代码),可以用网页解析器解析。如正则表达式(re)、BeautifulSoup、pyquery、lxml等;如果是JSON数据,可以转成JSON对象进行解析;如果是二进制数据,可以保存到文件中做进一步处理;保存数据:可以保存到本地文件(txt、json、csv等),也可以保存到数据库(MySQL、Redis、MongoDB等),也可以保存到远程服务器,比如用SFTP等操作5.爬虫的基本结构爬虫的基本结构主要由五部分组成,分别是爬虫调度器、URL管理器、网页下载器、网页解析器、信息收集器:爬虫调度器:相当于一台电脑的CPU,主要负责调度URL管理器、下载器和解析器之间的协调。它用于各个模块之间的通信。可以理解为爬虫的入口和核心。爬虫的执行策略定义在这个模块中;URL管理器:包括要爬取的URL地址和已经爬取的URL地址,防止重复爬取URL和循环爬取URL,实现URL管理器主要有三种方式,通过内存、数据库、缓存数据库;网页下载器:负责通过URL下载网页,主要是进行相应的伪装处理,模拟浏览器访问下载网页,常用的库有urllib、requests等;网页解析器:负责解析网页信息,可以根据需要提取有用的信息,也可以按照DOM树的解析方式进行解析。如正则表达式(re)、BeautifulSoup、pyquery、lxml等,可根据实际情况灵活使用;数据存储:负责存储和显示解析后的信息等数据处理。6、robots协议robots协议也叫爬虫协议、爬虫规则等,意思是一个网站可以建立一个robots.txt文件,告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,搜索引擎读取robots.txt文件来标识该页面是否允许被抓取。但是,此机器人协议不是防火墙,没有强制执行权。搜索引擎可以完全忽略robots.txt文件来抓取网页快照。如果你想单独定义搜索引擎机器人在访问子目录时的行为,你可以将你的自定义设置合并到根目录下的robots.txt中,或者使用机器人元数据(Metadata,也称为元数据)。robots协议不是一个规范,只是一个约定,因此不能保证网站的隐私,俗称“君子协议”。robots.txt文件内容的含义:User-agent:*,这里代表所有类型的搜索引擎,是一个通配符Disallow:/admin/,这里的定义是禁止抓取admin目录下的目录Disallow:/require/,这里定义是禁止爬取require目录下的目录Disallow:/ABC/,这里定义是禁止爬取ABC目录下的目录Disallow:/cgi-bin/*.htm,禁止访问以“.htm”为后缀的所有网址(包括子目录)Disallow:/*?*,禁止访问本站所有包含问号(?)的网址Disallow:/.jpg$,禁止抓取所有.jpg格式网页上的图片Disallow:/ab/adc.html,禁止爬取ab文件夹下的adc.html文件Allow:/cgi-bin/,这里的定义是允许爬取cgi-bin目录下的目录Allow:/tmp,这里的定义是AllowcrawloftheentiredirectoryoftmpAllow:.htm$,onlyal低访问后缀为“.htm”的URLAllow:.gif$,允许抓取gif格式的网页和图片Sitemap:Sitemap,告诉爬虫这个页面是sitemap查看网站robots协议,加上后缀robotst即可.txt到网站url,以快速代理为例:https://www.kuaidaidili.com/禁止所有搜索引擎访问网站任何部分,禁止抓取/doc/using/目录以下目录禁止爬取/doc/dev目录下所有sdk开头的目录和文件七.爬虫与法律近年来,与网络爬虫相关的法律案件和新闻报道层出不穷。爬虫界的人是不是都听过“好的爬虫,想吃多少就吃多少”这句话,甚至很多人认为爬虫本身就有问题,处于灰色地带,反抗到不敢不学习爬虫,但实际上他们不是。不会,爬虫作为一种计算机技术,本质上是中立的,法律也没有禁止爬虫技术。当今互联网上的许多技术都依赖于爬虫技术。公开数据,无商业用途,不涉及个人隐私,不让对方服务器崩溃,不接触违法产品,黄赌毒,你才不会违法。科技是无辜的,人是有罪的。切记不要触碰法律的红线!