Python爬虫开发:从入门到实战(微课版)
上QQ阅读APP看书,第一时间看更新

1.3 爬虫开发技术

开发爬虫,既简单又困难。简单是因为在Python这一门语言的帮助下,要入门开发爬虫几乎没有门槛,几行代码就能写出一个爬虫。而爬虫相关的框架更是多如牛毛,稍稍配置一下就能实现非常不错的爬取效果。困难在于目前大多数的爬虫书籍,还停留在工具的讲解上,只告诉读者怎么用工具,却不告诉读者在遇到各种情况时应该如何举一反三,通过思考,用学过的技艺来处理第一次遇到的问题。

爬虫的开发有两个层面。一个是“技”的层面,也就是各种语言和框架的使用。这种层面更像是软件文档,现在市面上大部分的爬虫书籍还停留在这个层面。而另一个层面是“术”的层面,遇到各种反爬虫问题时,应该如何突破,如何隐藏爬虫,如何模拟人的行为,以及遇到没有见过的反爬虫策略时,应该如何思考及如何使用爬虫爬取非网页内容等。在“术”的层面,框架和工具都不是问题,用任何框架甚至Python自带的模块都能够处理,“术”的层面更强调思想、流程和调度。

本书只会使用少量的篇幅来讲解必须掌握的基础知识和框架用法。在此之上,将会着重介绍各种爬虫思想,力图做到让读者举一反三。

本书使用Python作为爬虫的开发语言。由于Python具有语法简单、入门容易等特点,现在已经成为众多领域的首选语言。由于Python的语法接近原生的英语语法,因此只要能看懂单词就能看懂Python代码,这使得Python学习者能够很容易地通过学习别人的代码得到提高。

本书第2章会讲到Python的基本语法。学习并掌握第2章的内容,可为后面的爬虫开发打好基础。

爬虫的主要目的是获取网页内容并解析。只要能达到这个目的,用什么方法都没有问题。关于获取网页,本书主要介绍了Python的两个第三方模块,一个是requests,另一个是爬虫框架Scrapy。关于解析网页内容,本书主要介绍了3种方式——正则表达式、XPath和BeautifulSoup。两种网页获取方式和3种网页解析方式可以自由搭配,随意使用。

由于网站必然不会这么轻易地让人把数据全给拿走,因此很多网站都会采取各种反爬虫措施。应对各种反爬虫措施正是本书所要讲到的重点。常规的反爬虫措施包括但不限于访问频率检查、验证码、登录验证、行为检测。本书对这些反爬虫策略都会进行一一破解。除此之外,本书还会将中间人攻击技术与爬虫结合在一起,再把Android自动化测试技术与爬虫结合在一起,从而构造一个超级自动化爬虫,做到几乎无法被网站发现,也无法被封锁,同时不需要人工干预就能实现数据的爬取。

在成功突破了网站的封锁以后,就需要提高爬虫的爬取效率了,于是本书将会讲到分布式爬虫框架Scrapy。由于本书的宗旨是“术”,而不是“技”,因此对Scrapy这个框架,并不会像其官方文档一样讲解每一个功能。本书在介绍完Scrapy的基本功能以后,将着重讲解使用Scrapy来实现自动化的重试,自动修改爬虫的头部信息,自动更换IP,自动处理异常和批量部署。

最后,本书会用一章来讲解和爬虫相关的法律问题,希望读者在爬虫开发领域不要触碰法律。