【python实现网络爬虫(2)】网络爬虫基础-python 网络爬虫

710次阅读
没有评论


网络爬虫是啥

网络和爬虫: 当今最大的网络是互联网,最大的爬虫就是就是各类搜索引擎,包括谷歌、百度等

网络爬虫: 就是按照一定的规则去爬取人类所需要信息的程序,主要通过去URL的请求来实现

网络爬虫作用

数据监控、数据收集、信息集合、资源采集

浏览网页的过程

(1)输入网址
(2)浏览器向DNS服务商发送请求
(3)找到对应服务器
(4)服务器解析请求
(5)服务器处理请求得到最终结果发回去
(6)浏览器解析返回的数据
(7)展示给用户

DNS(Domain name resolution )域名解析,是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。(记住ip地址比较麻烦,但是记住网址就相对比较简单)

域名

这里以豆瓣为例

http://movie.douban.com/subject/4920389/?from=showing

其中一级域名为douban,二级域名为movie,网址参数from=showing(一般是?之后,由key和value组成)

爬虫原理

浏览器的一次请求,网站服务器的一次响应,就构成了一次网络爬虫行为,在python中,有许多库可以帮助我们实现这个操作,比如urllib、requests库,

我们只需要操作网站返回的Body就可以了,也就是 处理网页的源代码

【python实现网络爬虫(2)】网络爬虫基础-python

网络爬虫分类

全网爬虫: 各大搜索引擎

主题爬虫: 只选择需要相关信息

增量式爬虫: 只爬取数据库中改变的部分

深层网络爬虫: 隐藏在表单后的页面

一般情况下主要和“主题爬虫”和“深层网络爬虫”打交道较为常见

提取信息

获取网页源代码是没有什么意义的,必须提取出我们需求的信息来,才能为数据分析以及后续处理做准备。网页都是有规则的,我们只要找出规则,写好一条URL的爬取代码,就可以不断循环迭代其他网页代码上了

常见的页面解析库有BeautifulSoup,Lxml,pyquery等,安装方式(推荐)

pip install bs4 i https://pypi.tuna.tsinghua.edu.cn/simple

数据保存

除了直接保存为我们熟悉的文本格式,比如csv,txt,word,excel等,还可以将数据储存在各类数据库中,他们不占用空间,易于管理,方便统一化,规范化编写,是实际开发中的不二之选。比如MYSQL,Mongo,Redis数据库等。

爬虫有道(君子协定)

并不是所有的网站都可以爬取的,在进行爬虫时候需要注意。robots.txt(统一小写)是存放在网站根目录下的ASCII编码的文本文件,它通常告诉网络引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应该被搜索引擎的漫游器获取的,哪些事可以被获取的。

因为一些系统中的URL是对大小写敏感的,因此robots协议的对应文件名统一为小写,这个协议不是一个规范,而是一个约定俗成的,所以并不能保证网站的隐私,比如访问百度的协议

【python实现网络爬虫(2)】网络爬虫基础-python

可以爬取的数据

Json结构数据、picture(图片)、movie(电影)等

爬虫策略

广度优先、深度优先、 聚焦爬虫三大类

广度优先算法(Breadth-First-Search)

也叫广义优先搜索,又称为宽度优先搜索,或横向优先搜索,简称BFS,是一种图形搜索演算法。简单的说,BFS就是从根节点开始,沿着树的宽度遍历树的节点,如果发现目标,则演算终止。广度优先搜索的实现一般采用open-closed表

拆解步骤一、获取一个页面的所有URL,将URL按顺序存入列表

拆解步骤二、整个页面URL爬取完毕,从列表中按顺序取出URL,再次重复第一步

拆解步骤三、直至列表为空

深度优先算法(Depth-First-Search)

是一种用于遍历或者搜索树或图的算法,沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都已经探寻过,搜索将回溯到发现节点v那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止(树的前序遍历)


神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

相关文章:

版权声明:Python教程2022-11-01发表,共计1668字。
新手QQ群:570568346,欢迎进群讨论 Python51学习