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