Python 网络爬虫开发实战
人类社会已经进入大数据时代,大数据深刻改变着我们的工作和生活。随着互联网、移动互联网社交网络等的迅猛发展,各种数量庞大、种类繁多、随时随地产生和更新的大数据,蕴含着前所未有的社会价值和商业价值。大数据成为21世纪最为重要的经济资源之一。正如马云所言:未来最大的能源不是石油而是大数据。对大数据的获取、处理与分析,以及基于大数据的智能应用,已成为提高未来竞争力的关键要素。
但如何获取这些宝贵数据呢?网络爬虫就是一种高效的信息采集利器,利用它可以快速、准确地采集我们想要的各种数据资源。因此,可以说,网络爬虫技术几乎已成为大数据时代IT从业者的必修课程。
我们需要采集的数据大多来源于互联网的各个网站。然而,不同的网站结构不一、布局复杂、渲染方式多样,有的网站还专门采取了一系列“反爬”的防范措施。因此,为准确高效地采集到需要的数据,我们需要采取具有针对性的反制措施。网络爬虫与反爬措施是矛与盾的关系,网络爬虫技术就是在这种针锋相对、见招拆招的不断斗争中,逐渐完善和发展起来的。
本书介绍了利用 Python3进行网络爬虫开发的各项技术,从环境配置、理论基础到进阶实战、分布式大规模采集,详细介绍了网络爬虫开发过程中需要了解的知识点,并通过多个案例介绍了不同场景下采用不同爬虫技术实现数据爬取的过程。
我坚信,每位读者学习和掌握了这些技术之后,成为一个爬虫高手将不再是梦想!
众所周知,人工智能的这次浪潮和深度学习技术的突破密不可分,却很少有人会谈论另一位幕后英雄,即数据。如果不是网络上有如此多的图片,李飞飞教授也无法构建近千万的标注图片集合[mageNet,从而成就深度学习技术在图像识别领域的突破。如果不是在网络上有了如此多的聊天数据小冰也不会学习到人类的情商,在聊天中带给人类惊喜、欢笑和抚慰。人工智能的进步离不开数据和算法的结合,人类无意间产生的数据却能够让机器学习到超乎想象的“智慧”,反过来服务人类。
在互联网时代,强大的爬虫技术造就了很多伟大的搜索引擎公司,让人类的记忆搜索能力得到巨大的延展。今天在移动互联网时代,爬虫技术仍然是支撑一些信息融合应用(如今日头条)的关键技术。但是,今天爬虫技术面临着更大的挑战。与互联网的共享机制不同,很多资源只有在登录之后才能访问,还采取了各种反爬虫措施,这就让爬虫不那么容易访问这些资源。无论是产品还是研究,都需要大量的优质数据来让机器更加智能。因此,在这个时代,大量的从业者急需一本全面介绍爬虫技术的书。如果你需要了解全面和前沿的爬虫技术,而且想迅速地上手实战,这本书就是首选。
本书内容
本书一共分为15章,归纳如下
口第1章介绍了本书所涉及的所有环境的配置详细流程,兼顾Windows、Linux、Mac三大平台。本章不用逐节阅读,需要的时候查阅即可。
口第2章介绍了学习爬虫之前需要了解的基础知识,如 HTTP、爬虫、代理的基本原理、网页基本结构等内容,对爬虫没有任何了解的读者建议好好了解这一章的知识。口第3章介绍了最基本的爬虫操作,一般学习爬虫都是从这一步学起的。这一章介绍了最基本的两个请求库(urllib和requests)和正则表达式的基本用法。学会了这一章,就可以掌握最基本的爬虫技术了。
口第4章介绍了页解析库的基本用法,包括BeautifulSoup、XPath、pyquery的基本使用方法它们可以使得信息的提取更加方便、快捷,是爬虫必备利器。口第5章介绍了数据存储的常见形式及存储操作,包括TXT、JSON、CSV各种文件的存储,以及关系型数据库MySQL和非关系型数据库MongoDB、Redis存储的基本存储操作。学会了这些内容,我们可以灵活方便地保存爬取下来的数据。口第6章介绍了 Ajax数据爬取的过程,一些网页的数据可能是通过Ajax请求 API接口的方式加载的,用常规方法无法爬取,本章介绍了使用 Aiax进行数据爬取的方法。口第7章介绍了动态渲染页面的爬取,现在越来越多的网站内容是经过JavaScript渲染得到的而原始HTML文本可能不包含任何有效内容,而且渲染过程可能涉及某些JavaScript 加密算法,可以使用 Selenium、Splash等工具来实现模拟浏览器进行数据爬取的方法。口第8章介绍了验证码的相关处理方法。验证码是网站反爬虫的重要措施,我们可以通过本章了解到各类验证码的应对方案,包括图形验证码、极验验证码、点触验证码、微博宫格验证码的识别。
口第9章介绍了代理的使用方法,限制正的访问也是网站反爬虫的重要措施。另外,我们也可以使用代理来伪装爬虫的真实IP,使用代理可以有效解决这个问题。通过本章,我们了解到代理的使用方法,还学习了代理池的维护方法,以及ADSL拨号代理的使用方法。口第10章介绍了模拟录爬取的方法,某些网站需要录才可以看到需要的内容,这时就需要用爬虫模拟登录网站再进行爬取了。本章介绍了最基本的模拟登录方法以及维护一个Cookies池的方法。
口第11章介绍了 App的爬取方法,包括基本的Charles、mitmproxy抓包软件的使用。此外,还介绍了 mitmdump对接Python脚本进行实时抓取的方法,以及使用Appium完全模拟手机 ApP的操作进行爬取的方法。
口第12章介绍了pyspider爬虫框架及用法,该框架简洁易用、功能强大,可以节省大量开发爬虫的时间。本章结合案例介绍了使用该框架进行爬虫开发的方法。
口第13章介绍了Scrapy爬虫框架及用法。Scrapy是目前使用最广泛的爬虫框架,本章介绍了它的基本架构、原理及各个组件的使用方法,另外还介绍了Scrapy通用化配置、对接Docker的一些方法。
口第14章介绍了分布式爬虫的基本原理及实现方法。为了提高爬取效率,分布式爬虫是必不可少的,本章介绍了使用 Scrapy和Redis实现分布式爬虫的方法。口第15章介绍了分布式爬虫的部署及管理方法。方便快速地完成爬虫的分布式部署,可以节省开发者大量的时间。本章结合Scrapy、Scrapyd、Docker、Gerapy等工具介绍了分布式爬虫部署和管理的实现。