什么是爬虫和爬虫的基本流程

什么是爬虫和爬虫的基本流程,第1张

随着互联网的飞速发展,越来越多的数据充斥着这个时代。而获取和处理数据就成为我们生活中必不可少的部分,爬虫也是应运而生。

众多语言都能进行爬虫,但基于python的爬虫显得更加简洁,方便。爬虫也成了python语言中必不可少的一部分。

本篇讲解的是什么是爬虫和爬虫的基本流程的介绍,下一期将进一步深入了解爬虫的基本流程,Request和Response。

什么是爬虫?

爬虫即网络爬虫,英文是Web Spider。翻译过来就是网络上爬行的蜘蛛,如果把互联网看作一张大网,那么爬虫就是在大网上爬来爬去的蜘蛛,碰到想要的食物,就把他抓取出来。

我们在浏览器中输入一个网址,敲击回车,看到网站的页面信息。这就是浏览器请求了网站的服务器,获取到网络资源。那么,爬虫也相当于模拟浏览器发送请求,获得到HTML代码。HTML代码里通常包含了标签和文字信息,我们就从中提取到我们想要的信息。

通常爬虫是从某个网站的某个页面开始,爬取这个页面的内容,找到网页中的其他链接地址,然后从这个地址爬到下一个页面,这样一直不停的爬下去,进去批量的抓取信息。那么,我们可以看出网络爬虫就是一个不停爬取网页抓取信息的程序。

爬虫的基本流程:

1发起请求:

通过HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers等信息,然后等待服务器响应。这个请求的过程就像我们打开浏览器,在浏览器地址栏输入网址:wwwbaiducom,然后点击回车。这个过程其实就相当于浏览器作为一个浏览的客户端,向服务器端发送了 一次请求。

2获取响应内容:

如果服务器能正常响应,我们会得到一个Response,Response的内容便是所要获取的内容,类型可能有HTML、Json字符串,二进制数据(,视频等)等类型。这个过程就是服务器接收客户端的请求,进过解析发送给浏览器的网页HTML文件。

3解析内容:

得到的内容可能是HTML,可以使用正则表达式,网页解析库进行解析。也可能是Json,可以直接转为Json对象解析。可能是二进制数据,可以做保存或者进一步处理。这一步相当于浏览器把服务器端的文件获取到本地,再进行解释并且展现出来。

4保存数据:

保存的方式可以是把数据存为文本,也可以把数据保存到数据库,或者保存为特定的jpg,mp4 等格式的文件。这就相当于我们在浏览网页时,下载了网页上的或者视频。

可以。

服务器是网络爬虫程序的重要输入来源之一,存储了大量需要获取和处理的数据资源。爬虫程序中,使用各种技术和工具来从服务器获取资源。HTTP或HTTPS协议是常用于从Web服务器上获取网页内容、、视频等多媒体文件以及其他类型文件的协议。

欲精通Python网络爬虫,必先了解网络爬虫学习路线,本篇经验主要解决这个问题。部分内容参考自书籍《精通Python网络爬虫》。

作者:韦玮

转载请注明出处

随着大数据时代的到来,人们对数据资源的需求越来越多,而爬虫是一种很好的自动采集数据的手段。

那么,如何才能精通Python网络爬虫呢?学习Python网络爬虫的路线应该如何进行呢?在此为大家具体进行介绍。

1、选择一款合适的编程语言

事实上,Python、PHP、JAVA等常见的语言都可以用于编写网络爬虫,你首先需要选择一款合适的编程语言,这些编程语言各有优势,可以根据习惯进行选择。在此笔者推荐使用Python进行爬虫项目的编写,其优点是:简洁、掌握难度低。

2、掌握Python的一些基础爬虫模块

当然,在进行这一步之前,你应当先掌握Python的一些简单语法基础,然后才可以使用Python语言进行爬虫项目的开发。

在掌握了Python的语法基础之后,你需要重点掌握一个Python的关于爬虫开发的基础模块。这些模块有很多可以供你选择,比如urllib、requests等等,只需要精通一个基础模块即可,不必要都精通,因为都是大同小异的,在此推荐的是掌握urllib,当然你可以根据你的习惯进行选择。

3、深入掌握一款合适的表达式

学会了如何爬取网页内容之后,你还需要学会进行信息的提取。事实上,信息的提取你可以通过表达式进行实现,同样,有很多表达式可以供你选择使用,常见的有正则表达式、XPath表达式、BeautifulSoup等,这些表达式你没有必要都精通,同样,精通1-2个,其他的掌握即可,在此建议精通掌握正则表达式以及XPath表达式,其他的了解掌握即可。正则表达式可以处理的数据的范围比较大,简言之,就是能力比较强,XPath只能处理XML格式的数据,有些形式的数据不能处理,但XPath处理数据会比较快。

4、深入掌握抓包分析技术

事实上,很多网站都会做一些反爬措施,即不想让你爬到他的数据。最常见的反爬手段就是对数据进行隐藏处理,这个时候,你就无法直接爬取相关的数据了。作为爬虫方,如果需要在这种情况下获取数据,那么你需要对相应的数据进行抓包分析,然后再根据分析结果进行处理。一般推荐掌握的抓包分析工具是Fiddler,当然你也可以用其他的抓包分析工具,没有特别的要求。

5、精通一款爬虫框架

事实上,当你学习到这一步的时候,你已经入门了。

这个时候,你可能需要深入掌握一款爬虫框架,因为采用框架开发爬虫项目,效率会更加高,并且项目也会更加完善。

同样,你可以有很多爬虫框架进行选择,比如Scrapy、pySpider等等,一样的,你没必要每一种框架都精通,只需要精通一种框架即可,其他框架都是大同小异的,当你深入精通一款框架的时候,其他的框架了解一下事实上你便能轻松使用,在此推荐掌握Scrapy框架,当然你可以根据习惯进行选择。

6、掌握常见的反爬策略与反爬处理策略

反爬,是相对于网站方来说的,对方不想给你爬他站点的数据,所以进行了一些限制,这就是反爬。

反爬处理,是相对于爬虫方来说的,在对方进行了反爬策略之后,你还想爬相应的数据,就需要有相应的攻克手段,这个时候,就需要进行反爬处理。

事实上,反爬以及反爬处理都有一些基本的套路,万变不离其宗,这些后面作者会具体提到,感兴趣的可以关注。

常见的反爬策略主要有:

IP限制

UA限制

Cookie限制

资源随机化存储

动态加载技术

……

对应的反爬处理手段主要有:

IP代理池技术

用户代理池技术

Cookie保存与处理

自动触发技术

抓包分析技术+自动触发技术

……

这些大家在此先有一个基本的思路印象即可,后面都会具体通过实战案例去介绍。

7、掌握PhantomJS、Selenium等工具的使用

有一些站点,通过常规的爬虫很难去进行爬取,这个时候,你需要借助一些工具模块进行,比如PhantomJS、Selenium等,所以,你还需要掌握PhantomJS、Selenium等工具的常规使用方法。

8、掌握分布式爬虫技术与数据去重技术

如果你已经学习或者研究到到了这里,那么恭喜你,相信现在你爬任何网站都已经不是问题了,反爬对你来说也只是一道形同虚设的墙而已了。

但是,如果要爬取的资源非常非常多,靠一个单机爬虫去跑,仍然无法达到你的目的,因为太慢了。

所以,这个时候,你还应当掌握一种技术,就是分布式爬虫技术,分布式爬虫的架构手段有很多,你可以依据真实的服务器集群进行,也可以依据虚拟化的多台服务器进行,你可以采用urllib+redis分布式架构手段,也可以采用Scrapy+redis架构手段,都没关系,关键是,你可以将爬虫任务部署到多台服务器中就OK。

至于数据去重技术,简单来说,目的就是要去除重复数据,如果数据量小,直接采用数据库的数据约束进行实现,如果数据量很大,建议采用布隆过滤器实现数据去重即可,布隆过滤器的实现在Python中也是不难的。

以上是如果你想精通Python网络爬虫的学习研究路线,按照这些步骤学习下去,可以让你的爬虫技术得到非常大的提升。

至于有些朋友问到,使用Windows系统还是Linux系统,其实,没关系的,一般建议学习的时候使用Windows系统进行就行,比较考虑到大部分朋友对该系统比较数据,但是在实际运行爬虫任务的时候,把爬虫部署到Linux系统中运行,这样效率比较高。由于Python的可移植性非常好,所以你在不同的平台中运行一个爬虫,代码基本上不用进行什么修改,只需要学会部署到Linux中即可。所以,这也是为什么说使用Windows系统还是Linux系统进行学习都没多大影响的原因之一。

本篇文章主要是为那些想学习Python网络爬虫,但是又不知道从何学起,怎么学下去的朋友而写的。希望通过本篇文章,可以让你对Python网络爬虫的研究路线有一个清晰的了解,这样,本篇文章的目的就达到了,加油!

本文章由作者韦玮原创,转载请注明出处。

70个Python 项目列表:

1、[Python转字符画)

2、[200行 Python 代码实现 2048)

3、[Python3 实现火车票查询工具]

4、[高德 API+Python 解决租房问题]

5、[Python3 色情识别]

6、[Python 破解验证码]

7、[Python 实现简单的 Web 服务器

8、[pygame 开发打飞机游戏]

9、[Django 搭建简易博客]

10、[Python 基于共现提取《釜山行》人物关系]

11、[基于 scrapy 爬虫的天气数据采集(python)]

12、[Flask 开发轻博客]

13、[Python3 隐写术]

14、[Python 实现简易 Shell]

15、[使用 Python 解数学方程)

16、[PyQt实现简易浏览器]

17、[神经网络实现手写字符识别系统)

18、[Python 实现简单画板]

19、[Python 实现3D 建模工具]

20、[NBA常规赛结果预测一利用 Python 进行比赛数据分析

[Python文本解析器]

[Python3 & OpenCV 视频转字符动画]

[Python3 实现淘女郎照片爬虫 ]

[Python3实现简单的FTP认证服务器

[基于 Flask 与 MySQL 实现番剧推荐系统

[Python 实现端口扫描器]

[使用Python3编写系列实用脚本]

[Python 实现康威生命游戏]

[Python 3 实现 Markdown 解析器]

[Python 气象数据分析-- 《Python 数据分析实战》

[Python实现键值数据库]

[k-近邻算法实现手写数字识别系统]

[ebay在线拍卖数据分析]

[Python 实现英文新闻摘要自动提取][Python实现简易局域网视频聊天工具]

39、[Python实现Python解释器]

40、[Python3基于Scapy实现DDos]

[Python 实现密码强度检测器]41、

42[使用 Python 实现深度神经网络

不[Python实现从excel读取数据并绘制成精美图像][人机对战初体验:Python基于Pygame实现四子棋游双[Python3 实现可控制肉鸡的反向Shell]

似低城机城根弧引江汉M红纸红致致

[Python打造漏洞扫描器]

[Python应用马尔可夫链算法实现随机文本生成)

[数独游戏的Python实现与破解]

[使用Python定制词云]

[Python开发简单计算器

[Python 实现 FTP 弱口令扫描器

[Python实现Huffman编码解压缩文件]

[Python实现Zip文件的暴力破解]

[Python3 智能裁切]

[Python实现网站模拟登陆

[给Python3爬虫做一个界面妹子图网实战]、[Python 3 实现转彩色字符]

[自联想器的 Python 实现]

[Python 实现简单滤镜]

60(Flask 实现简单聊天室

61、

R

[Python实现模板引擎]

63[Python实现遗传算法求解n-queens问题]

64、[Python3 实现命令行动态进度条]

65、[Python 获取挂号信息并邮件通知

66

、[Python实现java web项目远端自动化更新部署67、[使用 Python3编写 Github 自动周报生成器)

68、[使用 Python 生成分形]

69、[Python 实现 Redis 异步客户端

70、[Python 实现中文错别字高亮系统

云服务器可以搭建网站或者博客、搭建属于自己的论坛、搭建自己私人网盘、做自己的小程序或App服务器、运行各种脚本。

1、搭建网站或者博客

拥有个人博客在上面发表自己的心得见解和专业知识,可以吸引更多同频的人,写在简历上对找工作大有帮助,如果平时更新比较频繁的话访问用多起来之后,可以申请个谷歌联盟的广告在网站上挂个广告。

2、搭建属于自己的论坛

拥有自己的论坛和志同道合的一起在网上交流。

3、搭建自己私人网盘

安装NextCloud开源网盘程序,搭建自己私人网盘,支持离线下载,比如网上一些资源如果下载慢,直接扔上去下载,下载好能直接在平板手机在线观看。

4、做自己的小程序或App服务器

现在小程序一些细分的类目还大有可为,没有什么竞争对手。

5、运行各种脚本

比如可以在自己的服务器跑Python爬虫脚本,爬取到的各种信息用途很多,可以用做数据分析和统计图表,可以某宝搜索一下爬虫服务,很多人有这一方面的需求。

爬虫技术是做从网页上抓取数据信息并保存的自动化程序,它的原理就是模拟浏览器发送网络请求,接受请求响应,然后按照一定的规则自动抓取互联网数据。分析如下:

1、获取网页

获取网页可以简单理解为向网页的服务器发送网络请求,然后服务器返回给我们网页的源代码,其中通信的底层原理较为复杂,而Python给我们封装好了urllib库和requests库等,这些库可以让我们非常简单的发送各种形式的请求。

2、提取信息

获取到的网页源码内包含了很多信息,想要进提取到我们需要的信息,则需要对源码还要做进一步筛选。可以选用python中的re库即通过正则匹配的形式去提取信息,也可以采用BeautifulSoup库(bs4)等解析源代码,除了有自动编码的优势之外,bs4库还可以结构化输出源代码信息,更易于理解与使用。

3、保存数据

提取到我们需要的有用信息后,需要在Python中把它们保存下来。可以使用通过内置函数open保存为文本数据,也可以用第三方库保存为其它形式的数据,例如可以通过pandas库保存为常见的xlsx数据,如果有等非结构化数据还可以通过pymongo库保存至非结构化数据库中。

4、让爬虫自动运行

从获取网页,到提取信息,然后保存数据之后,我们就可以把这些爬虫代码整合成一个有效的爬虫自动程序,当我们需要类似的数据时,随时可以获取。

现在采集信息通常情况下使用爬虫采集,耗时短,能够提升工作的效率。爬虫想要高效完成工作,必须是要使用代理IP的,这是为什么?

一、爬虫用代理IP采集信息效果

例如使用爬虫采集某一的店铺信息,假如一个IP一秒一个进行采集,可能用不了多长的时间就不能再使用了,如果IP被冻结了,也代表着不能继续进行工作了,剩下的工作怎么弄?而爬虫使用代理IP,能够在采集一定的数量后,在IP被冻结之前,进行IP切换,并不影响采集工作,这样IP还能够循环使用。因此使用代理IP,既可以提高工作效率,也能够节省IP资源。这就是采集信息为什么要用代理IP的原因。

二、使用爬虫代理能够进行下列的操作

1搭建服务器

效果最稳定,时效和地区完全可控,能够根据自己的要求来搞,深度匹配产品。但是需要爬虫爱好者有维护代理服务器的能力,且需要花费大量维护时间,相对而言投入跟产出不成正比,而且成本投入非常高。

2收费代理IP

需要一定的花费,成本没有自己搭建服务器贵,要便宜很多,也不用自己去维护代理服务器;IP比较稳定,速度比较快,有效率比较高,十分适合企业级用户。现在的代理IP商太多,在选代理商要认真的选择。

3免费代理IP

免费,不用花钱。IP不稳定,速度慢,经常掉线,IP通过率也不高,大部分都是不可用IP,总之你需要大量时间去挨个试,看似免费,其实昂贵,因为需要浪费大量时间成本,效率十分低下,不适合爬取数据量大的企业级用户。

由上文可知,采集信息为什么要用代理IP的原因,至于爬虫使用什么代理IP好,可以根据自己的需求选择。

分布式爬虫:将一个项目拷贝到多台电脑上,同时爬取数据。

1必须保证所有电脑上的代码是相同的配置。

2在其中一台电脑上启动redis和MySQL的数据库服务。

3同时将所有的爬虫项目运行起来。

4在启动redis和MySQL的电脑上, 向redis中添加起始的url。

q = queue()

url = qget() # 如果队列是空的,那么get()方法会一直阻塞,直到能取到url,才会继续向下执行。

单机爬虫:一台电脑运行一个项目。去重采用了set()和queue(),但是这两个都是在内存中存在的。

1>其他电脑是无法获取另外一台电脑内存中的数据的。

2>程序终止,内存消失。

分布式问题:

1多台电脑如何统一的对URL进行去重?

2多台电脑之间如何共用相同的队列?多台电脑获取的request,如何在多台电脑之间进行同步?

3多台电脑运行同一个爬虫项目,如果有机器爬虫意外终止,如何保证可以继续从队列中获取新的request,而不是从头开始爬取?

前两个问题可以基于Redis实现。相当于将set()和queue()从scrapy框架中抽离出来,将其保存在一个公共的平台中(Redis)。

第三个问题:scrapy_redis已经实现了,重启爬虫不会从头开始重新爬取,而是会继续从队列中获取request。不用担心爬虫意外终止。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 什么是爬虫和爬虫的基本流程

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情