python爬虫的工作原理


Posted in Python onMarch 05, 2017

1.爬虫的工作原理

网络爬虫,即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页的。从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。这样看来,网络爬虫就是一个爬行程序,一个抓取网页的程序。网络爬虫的基本操作是抓取网页。那么如何才能随心所欲地获得自己想要的页面?先从URL开始。

抓取网页的过程其实和读者平时使用IE浏览器浏览网页的道理是一样的。比如说你在浏览器的地址栏中输入www.baidu.com这个地址。打开网页的过程其实就是浏览器作为一个浏览的“客户端”,向服务器端发送了 一次请求,把服务器端的文件“抓”到本地,再进行解释、展现。HTML是一种标记语言,用标签标记内容并加以解析和区分。浏览器的功能是将获取到的HTML代码进行解析,然后将原始的代码转变成我们直接看到的网站页面。

简单的来讲,URL就是在浏览器端输入的http://www.baidu.com这个字符串。在理解URL之前,首先要理解URI的概念。

什么是URI?

Web上每种可用的资源,如 HTML文档、图像、视频片段、程序等都由一个通用资源标志符(Universal Resource Identifier, URI)进行定位。

URI通常由三部分组成:

  • 访问资源的命名机制;
  • 存放资源的主机名;
  • 资源自身 的名称,由路径表示。

如下面的URI:http://www.why.com.cn/myhtml/html1223/

  • 这是一个可以通过HTTP协议访问的资源,
  • 位于主机 www.webmonkey.com.cn上,
  • 通过路径“/html/html40”访问。 

2.  URL的理解和举例

URL是URI的一个子集。它是Uniform Resource Locator的缩写,译为“统一资源定位 符”。通俗地说,URL是Internet上描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。URL的一般格式为(带方括号[]的为可选项):

protocol :// hostname[:port] / path / [;parameters][?query]#fragment

URL的格式由三部分组成:

  • 第一部分是协议(或称为服务方式)。
  • 第二部分是存有该资源的主机IP地址(有时也包括端口号)。
  • 第三部分是主机资源的具体地址,如目录和文件名等。

第一部分和第二部分用“://”符号隔开,第二部分和第三部分用“/”符号隔开。第一部分和第二部分是不可缺少的,第三部分有时可以省略。

3、URL和URI简单比较

URI属于URL更低层次的抽象,一种字符串文本标准。换句话说,URI属于父类,而URL属于URI的子类。URL是URI的一个子集。URI的定义是:统一资源标识符;URL的定义是:统一资源定位符。二者的区别在于,URI表示请求服务器的路径,定义这么一个资源。而URL同时说明要如何访问这个资源(http://)。

下面来看看两个URL的小例子。

 1.HTTP协议的URL示例:

使用超级文本传输协议HTTP,提供超级文本信息服务的资源。

例:http://www.peopledaily.com.cn/channel/welcome.htm

其计算机域名为www.peopledaily.com.cn。

超级文本文件(文件类型为.html)是在目录 /channel下的welcome.htm。

这是中国人民日报的一台计算机。

例:http://www.rol.cn.NET/talk/talk1.htm

其计算机域名为www.rol.cn.Net。

超级文本文件(文件类型为.html)是在目录/talk下的talk1.htm。

这是瑞得聊天室的地址,可由此进入瑞得聊天室的第1室。

2.文件的URL

用URL表示文件时,服务器方式用file表示,后面要有主机IP地址、文件的存取路 径(即目录)和文件名等信息。

有时可以省略目录和文件名,但“/”符号不能省略。

例:file://ftp.yoyodyne.com/pub/files/foobar.txt

上面这个URL代表存放在主机ftp.yoyodyne.com上的pub/files/目录下的一个文件,文件名是foobar.txt。

例:file://ftp.yoyodyne.com/pub

代表主机ftp.yoyodyne.com上的目录/pub。

例:file://ftp.yoyodyne.com/

代表主机ftp.yoyodyne.com的根目录。

爬虫最主要的处理对象就是URL,它根据URL地址取得所需要的文件内容,然后对它 进行进一步的处理。

因此,准确地理解URL对理解网络爬虫至关重要。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Python 相关文章推荐
python编码总结(编码类型、格式、转码)
Jul 01 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
Oct 29 Python
Python实现的计算器功能示例
Apr 26 Python
python spyder中读取txt为图片的方法
Apr 27 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
May 16 Python
Python  unittest单元测试框架的使用
Sep 08 Python
python读取txt文件中特定位置字符的方法
Dec 24 Python
Python设计模式之外观模式实例详解
Jan 17 Python
python清空命令行方式
Jan 13 Python
pycharm 关掉syntax检查操作
Jun 09 Python
python中什么是面向对象
Jun 11 Python
AI:如何训练机器学习的模型
Apr 16 Python
python操作mysql数据库
Mar 05 #Python
Windows安装Python、pip、easy_install的方法
Mar 05 #Python
python入门教程之识别验证码
Mar 04 #Python
python 链接和操作 memcache方法
Mar 04 #Python
快速实现基于Python的微信聊天机器人示例代码
Mar 03 #Python
Python实现在线音乐播放器
Mar 03 #Python
python开发简易版在线音乐播放器
Mar 03 #Python
You might like
网页游戏开发入门教程二(游戏模式+系统)
2009/11/02 PHP
php实现复制移动文件的方法
2015/07/29 PHP
php删除数组指定元素实现代码
2017/05/03 PHP
PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解
2019/06/03 PHP
JavaScript 实现??打印?理
2007/04/28 Javascript
Jquery选择器 $实现原理
2009/12/02 Javascript
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
jQuery 如何先创建、再修改、后添加DOM元素
2014/05/20 Javascript
JS DOMReady事件的六种实现方法总结
2016/11/23 Javascript
ES2015 Symbol 一种绝不重复的值
2016/12/25 Javascript
JS简单验证上传文件类型的方法
2017/04/17 Javascript
纯js实现页面返回顶部的动画(超简单)
2017/08/10 Javascript
jQuery UI 实例讲解 - 日期选择器(Datepicker)
2017/09/18 jQuery
深入理解Node.js中通用基础设计模式
2017/09/19 Javascript
详解微信小程序Page中data数据操作和函数调用
2017/09/27 Javascript
新手快速上手webpack4打包工具的使用详解
2019/01/28 Javascript
Node.JS用纯JavaScript生成图片或滑块式验证码功能
2019/09/12 Javascript
vue组件中实现嵌套子组件案例
2020/08/31 Javascript
vue 手机物理监听键+退出提示代码
2020/09/09 Javascript
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
2021/01/08 Vue.js
[01:57]2018DOTA2亚洲邀请赛赛前采访-iG
2018/04/03 DOTA
[01:00:17]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第二场 1月25日
2021/03/11 DOTA
Python Web框架Pylons中使用MongoDB的例子
2013/12/03 Python
Python实现ssh批量登录并执行命令
2016/10/25 Python
python直接获取API传递回来的参数方法
2018/12/17 Python
Python3+Appium安装及Appium模拟微信登录方法详解
2021/02/16 Python
Rockport乐步美国官网:风靡美国的白宫鞋
2016/11/24 全球购物
英国现代家具和照明购物网站:Heal’s
2019/10/30 全球购物
犯错检讨书
2014/02/21 职场文书
中韩经贸翻译专业大学生职业生涯规划范文
2014/09/18 职场文书
2014年“世界无车日”活动方案
2014/09/21 职场文书
2015年小学语文教师工作总结
2015/10/23 职场文书
《鸡兔同笼》教学反思
2016/02/19 职场文书
SpringBoot工程下使用OpenFeign的坑及解决
2021/07/02 Java/Android
CSS3实现360度循环旋转功能
2022/02/12 HTML / CSS
一篇文章带你掌握SQLite3基本用法
2022/06/14 数据库