Python爬虫高效学习路线

作者: 云中布衣   分类:  学习笔记    热度: (286℃)   时间: 2018-9-3 11:01   标签: #Python  #网络爬虫    

在写此文之前,笔者已经写过一些实际的爬虫应用。比如:帮助中科院政策所同学做过一个爬取淘宝拍卖网拍卖商品信息的工具,用于获取科研数据;用爬虫爬取某网站交换中心的数据,用以分析互联网交换中心的发展历程以及分布情况等等。由于没有对爬虫技术系统的总结过,所以比较零散。

今天希望借本文好好的梳理下Python爬虫的学习路线,以便对Python爬虫所涉及到的技术点有一个宏观的把握。

1-1.png
一、流程
从流程上讲,其实爬虫还是非常简单的,无非就是通过程序模拟人去访问网页的过程,其流程可以概括为3步:1获取页面->2提取数据->3存储数据
第一步:获取页面
这一步可以通过urllib2、requests这些库向网站发起请求,并获取到返回的网页。
第二步:提取数据
对第一步中获取到的网页数据(一般来说是HTML),进行处理,可以借助Xpath,BeautifulSoup4这些库按需提取数据。
第三步:存储数据
拿到数据后,如果量不大,可以直接写道文件中,比如csv,如果比较大可以选择用一些数据库存储数据,比如MongoDB、Redis、Mysql等等。

二、反爬
对于一般性的页面,依照上面三步走,随意选取组合就可以写出一个符合要求的爬虫,去获取自己所需要的数据。
笔者一开始上车选择的是urllib2+BeautifulSoup+Redis组合,分别用于,第一步、第二步、第三步。
然后现实中,总会遇到一些网站,不希望你们随意的去爬取网站的数据,如果爬取过于频繁,会影响网站的性能,进而影响到网站真实用户的正常访问。(有研究表明,当前网络的大部分流量是由爬虫产生的
我们把网站对爬虫做的限制,称为反爬,经常看到的由访问权限限制、验证码、封IP、动态加载等等。

那遇到这样的情况,我们是不是就是束手无策了呢?
不!!!!
我们有秘密武器来应对每一种反爬措施,访问权限控制可以通过模拟用户登录验证码可以通过OCR处理封IP可以通过控制访问频次或者使用代理IP池动态加载可以通过phantomJS加selenium本地加载
诸如此类,还有更多的解决方法等待我们去发现。
总之,只要技术够硬,没有爬不到的数据。(温馨提示:对于一些敏感的数据,最好不要动,你的爬虫可能会有触犯法律的风险。爬虫有风险,且爬且珍惜!

三、工程
有了前面两步,你的爬虫基本上可以在Internet上横着走了,没人管得住你的爬虫。
但是当项目比较大的时候,遇到的情况非常复杂的时候,或者你的爬虫需要进行实际的工程应用的时候,上面的方法就像是野战军,离正规军还差个Scrapy的距离。
有了Scrapy,我们就可以自己去搭建一些爬虫框架,把爬虫工程化、模块化,做一个实实在在的工业级爬虫应用

四、速度
有了前面三步,你基本上可以写一个工业级的爬虫了。
慢慢的我们可能就会发现,当爬取的数据量越来越大的时候,我们希望爬取的速度能够更快一点,再快一点,让爬取的时间进一步缩短。
于是便有了一个牛X的词出现了:分布式爬虫,再大的网站碰到它都会颤抖,如果你的爬虫能够成功避开对方的反爬措施的话。
分布式爬虫,听着很玄乎,通俗点解释,就是同时让N个爬虫帮你爬数据
单机上可以通过Python的多线程,实现伪分布式爬虫,或者Scrapy+MonogoDB+Redis复杂点实现,进而提高爬虫的爬取数据的速度,这样的速度提升已经可以满足大多数人的要求了。
到此Python爬虫的学习路线已经基本明朗,按照流程、反爬、工程、速度四个部分来,你的爬虫老司机的名号便指日可待。

技术的探索永远是无止境,人类对于速度的追求也是无止境的
想想Google、百度这样的搜索引擎就知道了,他俩本质上就是一个巨型的分布式爬虫,但又不仅仅只是爬虫,里面还有自然语言处理、机器学习等内容。
对于当前的搜索引擎技术在这里笔者就不过多的讨论了,已经超出了本文的范畴,毕竟笔者也仅仅只是知道皮毛而已。
以后有机会再作搜索引擎技术相关的分享吧。

<完 20180830>
56.8K

发表评论:

© 云中布衣 2015 | Driven by EMLOG  | SiteMap | RunTime: 7.31ms RSS  | MORE  |   | TOP

文章数量【258】 评论数量【238】 稳定运行【1208天】

Visitor IP Address【54.196.190.32】

Email:ieeflsyu#outlook.com