我的编程空间,编程开发者的网络收藏夹
学习永远不晚

网络爬虫的原理介绍

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

网络爬虫的原理介绍

这篇文章主要介绍“网络爬虫的原理介绍”,在日常操作中,相信很多人在网络爬虫的原理介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”网络爬虫的原理介绍”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

认识浏览器和服务器

大家对浏览器应该一点都不陌生,可以说,只要上过网的人都知道浏览器。可是,明白浏览器各种原理的人可不一定多。

作为要开发爬虫的小伙伴,是一定一定要明白浏览器的工作原理的。这是你写爬虫的必备工具,别无他。

大家在面试的时候,有没有遇到这么一个非常宏观而又处处细节的解答题:

  • 请说说从你在浏览器地址栏输入网站到你看到网页中间都发生了什么?

这真是一个考验知识面的题啊,经验老道的老猿既可以滔滔不绝的讲上三天三夜,也可以提炼出几分钟的精华讲个大概。大家恐怕对整个过程就一知半解了。

巧的是,对这个问题理解的越透彻,越对写爬虫有帮助。换句话说,爬虫是一个考验综合技能的领域。那么,大家准备好迎接这个综合技能挑战了吗?

废话不多说,我们就从解答这个题目开始,认识浏览器和服务器,看看这中间有哪些知识是爬虫要用到的。

前面也说过,这个问题可以讲上三天三夜,但我们没那么多时间,其中一些细节就略过,把大致流程结合爬虫讲一讲,分成三部分:

  1. 浏览器发出请求

  2. 服务器做出响应

  3. 浏览器接收响应

1. 浏览器发出请求

在浏览器地址栏输入网址后回车,浏览器请服务器提出网页请求,也就是告诉服务器,我要看你的某个网页。
上面短短一句话,蕴藏了无数玄机啊,让我不得不费点口舌一一道来。主要讲述:

  • 网址是不是有效的?

  • 服务器在哪里?

  • 浏览器向服务器发送了些什么?

  • 服务器返回了些什么?

1) 网址是不是有效的?

首先,浏览器要判断你输入的网址(URL)是否合法有效。对应URL,小猿们并不陌生吧,以http(s)开头的那一长串的字符,但是你知道它还可以以ftp, mailto, file, data, irc开头吗?下面是它最完整的语法格式:

URI = scheme:[//authority]path[?query][#fragment]# 其中, authority 又是这样的:authority = [userinfo@]host[:port]# userinfo可以同时包含user name和password,以:分割userinfo = [user_name:password]

用图更形象的表现处理就是这样的:

网络爬虫的原理介绍

经验之谈:要判断URL的合法性

Python里面可以用urllib.parse来进行URL的各种操作

In [1]: import urllib.parse In [2]: url = 'http://dachong:the_password@www.yuanrenxue.com/user/info?page=2'In [3]: zz = urllib.parse.urlparse(url)Out[4]: ParseResult(scheme='http', netloc='dachong:the_password@www.yuanrenxue.com', path='/user/info', params='', query='page=2', fragment='')

我们看到,urlparse函数把URL分析成了6部分:
scheme://netloc/path;params?query#fragment
需要主要的是 netloc 并不等同于 URL 语法定义中的host

2) 服务器在哪里?

上面URL定义中的host,就是互联网上的一台服务器,它可以是一个IP地址,但通常是我们所说的域名。域名通过DNS绑定到一个(或多个)IP地址上。浏览器要访问某个域名的网站就要先通过DNS服务器解析域名,得到真实的IP地址。
这里的域名解析一般是由操作系统完成的,爬虫不需要关心。然而,当你写一个大型爬虫,像Google、百度搜索引擎那样的爬虫的时候,效率变得很主要,爬虫就要维护自己的DNS缓存。
老猿经验:大型爬虫要维护自己的DNS缓存

3) 浏览器向服务器发送些什么?

浏览器获得了网站服务器的IP地址,就可以向服务器发送请求了。这个请求就是遵循http协议的。写爬虫需要关心的就是http协议的headers,下面是访问 en.wikipedia.org/wiki/URL 时浏览器发送的请求 headers:

网络爬虫的原理介绍

可能已经从图中看出来些端倪,发送的http请求头是类似一个字典的结构:

  • authority: 就是访问的目标机器;

  • method: http请求的方法有很多:

    • GET

    • HEAD

    • POST

    • PUT

    • DELETE

    • CONNECT

    • OPTIONS

    • TRACE

    • PATCH
      一般,爬虫使用最多的是GET和POST

  • path: 访问的网站的路径

  • scheme: 请求的协议类型,这里是https

  • accept: 能够接受的回应内容类型(Content-Types)

  • accept-encoding: 能够接受的编码方式列表

  • accept-language: 能够接受的回应内容的自然语言列表

  • cache-control: 指定在这次的请求/响应链中的所有缓存机制 都必须 遵守的指令

  • cookie: 之前由服务器通过 Set- Cookie发送的一个 超文本传输协议Cookie
    这是爬虫很关心的一个东东,登录信息都在这里。

  • upgrade-insecuree-requests: 非标准请求字段,可忽略之。

  • user-agent: 浏览器身份标识

这也是爬虫很关心的部分。比如,你需要得到手机版页面,就要设置浏览器身份标识为手机浏览器的user-agent。

经验之谈: 通过设置headers跟服务器沟通

4) 服务器返回了些什么?

如果我们在浏览器地址栏输入一个网页网址(不是文件下载地址),回车后,很快就看到了一个网页,里面包含排版文字、图片、视频等数据,是一个丰富内容格式的页面。然而,我通过浏览器查看源代码,看到的却是一对文本格式的html代码。

没错,就是一堆的代码,却让浏览器给渲染成了漂亮的网页。这对代码里面有:

  • css: 浏览器根据它来排版,安排文字、图片等的位置;

  • JavaScript: 浏览器运行它可以让用户和网页交互;

  • 图片等链接: 浏览器再去下载这些链接,最终渲染成网页。

而我们想要爬取的信息就藏在html代码中,我们可以通过解析方法提取其中我们想要的内容。如果html代码里面没有我们想要的数据,但是在网页里面却看到了,那就是浏览器通过ajax请求异步加载(偷偷下载)了那部分数据。

这个时候,我们就要通过观察浏览器的加载过程来发现具体是哪个ajax请求加载了我们需要的数据。

到此,关于“网络爬虫的原理介绍”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

网络爬虫的原理介绍

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

网络爬虫的原理介绍

这篇文章主要介绍“网络爬虫的原理介绍”,在日常操作中,相信很多人在网络爬虫的原理介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”网络爬虫的原理介绍”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!认识浏览器
2023-06-02

关于Python网络爬虫requests库的介绍

这篇文章主要介绍了关于Python网络爬虫requests库,而很多时候这些数据存储在网页中,手动下载需要花费的时间太长,这时候我们就需要网络爬虫帮助我们自动爬取这些数据,需要的朋友可以参考下
2023-05-18

Python网络爬虫之HTTP原理

在写爬虫之前,我们还需要了解一些基础知识,如HTTP原理、网页的基础知识、爬虫的基本原理、Cookies的基本原理等。本文中,我们就对这些基础知识做一个简单的总结,需要的朋友参考一下
2023-05-15

Python网络爬虫之HTTP原理是什么

今天小编给大家分享一下Python网络爬虫之HTTP原理是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。HTTP 基本原
2023-07-06

爬虫的基本原理

爬虫是什么?如果我们把互联网比作一张大的蜘蛛网,数据便是存放于蜘蛛网的各个节点,而爬虫就是一只小蜘蛛,沿着网络抓取自己的猎物(数据)爬虫指的是:向网站发起请求,获取资源后分析并提取有用数据的程序;从技术层面来说就是 通过程序模拟浏览器请求站
2023-01-30

网络爬虫的常见方式

本篇内容主要讲解“网络爬虫的常见方式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“网络爬虫的常见方式”吧!IP代理是一个网络信息的中转站,代理客户的真实IP进行访问,代理IP有三种形式,普通IP
2023-06-20

爬虫中网络ip的用法

这篇文章主要讲解了“爬虫中网络ip的用法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“爬虫中网络ip的用法”吧!对于网络操作,不同领域的用户会有相应的技术工具和习惯。1、在爬虫中,ip限制问
2023-06-20

Python3网络爬虫实战-19、代理基

我们在做爬虫的过程中经常会遇到这样的情况,最初爬虫正常运行,正常抓取数据,一切看起来都是那么的美好,然而一杯茶的功夫可能就会出现错误,比如 403 Forbidden,这时候打开网页一看,可能会看到“您的 IP 访问频率太高”这样的提示。出
2023-01-31

python爬虫的工作原理

1.爬虫的工作原理 网络爬虫,即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页的。从网站某一个页面(通常是首页)开始,读取网页的内容,找到
2022-06-04

Android编写简单的网络爬虫

一、网络爬虫的基本知识 网络爬虫通过遍历互联网络,把网络中的相关网页全部抓取过来,这体现了爬的概念。爬虫如何遍历网络呢,互联网可以看做是一张大图,每个页面看做其中的一个节点,页面的连接看做是有向边。图的遍历方式分为宽度遍历和深度遍历,但是深
2022-06-06

python网络爬虫的流程步骤

本文将为大家详细介绍“python网络爬虫的流程步骤”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“python网络爬虫的流程步骤”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去收获
2023-06-08

python网络爬虫指的是什么

小编给大家分享一下python网络爬虫指的是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pillow;4.twisted;5
2023-06-14

网络爬虫如何使用http代理api

本篇内容主要讲解“网络爬虫如何使用http代理api”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“网络爬虫如何使用http代理api”吧!大数据时代,大量的网络爬虫项目正在进行,因为通过数据的采
2023-06-20

无线网络的介绍

  今天,小编这篇文章主要给大家介绍当前可以使用的不同无线标准以及每种标准的特点,无线网络中的硬件组成、部署,还有应该如何加强无线网络的安全性以及相关的安全协议和特点等等。  (一)无线网络介绍  (1)无线网络分类  无线网络根据连接范围分有下面这几种类型:个人网(PAN)、局域网(LAN)、城域网(MAN)、广域网
无线网络的介绍
2024-04-17

网络爬虫结合ip代理的使用方法

这篇文章主要讲解了“网络爬虫结合ip代理的使用方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“网络爬虫结合ip代理的使用方法”吧!说到网络爬虫,大家都会很熟悉,因为网络爬虫实际上一直在我们
2023-06-20

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录