五年前,我写了第一个网络爬虫系列教程,一年之内累计阅读量近 900 万,作为网络爬虫的启蒙教材,帮助了大多数人成为了网络爬虫开发方面的程序员。
随着技术日新月异的发展,网络爬虫方面的技术栈已经非常成熟,这次,我准备把网络爬虫方面涉及到的知识点全部写出来,并且附带各种丰富的案例,以零基础为起点,循序渐进,最终让你成为网络爬虫方面的专家。
免费、中文、零基础,丰富的项目案例,基于最新版 Python 3 语言,各种主流网络爬虫库和解析库,带你从零开始一步步成为网络爬虫专家。
本教程在讲解每个知识点时,都附带一个丰富并实用的项目,让你在学习过程中,不知不觉中成为网络爬虫方面的高手,无论以后去企业从事网络爬虫开发,还是自己接项目赚外快,都游刃有余。
网络爬虫又被称为网页蜘蛛,网络机器人,网络爬虫是一种按照一定的规则,自动的抓取互联网信息的程序或者脚本。换一种说话就是:用程序模拟人上网操作浏览器,也就是你想在浏览器做的事情都通过爬虫程序去做。当然,你通过浏览器做不到的事情,网络爬虫程序也做不到。
要学习 Python 网络爬虫,我们要学习的共有以下几点。
Python 基础知识:首先,我们要用 Python 写爬虫,肯定要了解 Python 的基础,万丈高楼平地起,不能忘啦那地基,前面在第一部分 Python 核心基础知识中我们已经学习了全面的学习了 Python 的基础知识。如果你对 Python 语言不太熟悉,可以参考 Python3 教程。
Python 自带的网络库 urllib:urllib 库是学习 Python 爬虫最基础的库,利用这个库我们可以很容易爬取网页的内容,理论上来说,使用该网络库可以爬取任何网页的内容。
正则表达式:正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。对于爬取的网页内容,我们可以通过正则表达式对内容进行提取分析,得到我们想要的结果。当然,实际项目开发中,我们一般很少使用正则表达式,我们一般都是用专业易用的 HTML 解析库,比如 Beautifulsoup 和 Xpath 等等。
Python 第三方网络库 requests:requests 库要比 urllib 库更加好用,功能更强大,并且自带 Cookie 处理的 API,在企业开发中,requests 库使用最多。
万能爬虫库 Selenium:Selenium 可以驱动浏览器去访问网站,通过浏览器拿到网站的内容,所以,任何可以通过浏览器访问的网站,通过 Selenium 都可以爬取下来,所以,Selenium 又称为万能爬虫库。当然,如果你浏览器都没法访问的网站,你无论使用什么技术也拿不到。我专门写了一个 Selenium 教程,如果你想更详细的学习 Selenium,请参考 selenium 教程。
可以做
Python 爬虫框架 Scrapy:我们不用网络爬虫框架也可以做出企业级项目爬虫需求,但在开发爬虫项目过程中,我们会做很多重复工作,比如网页 DOM 树解析,规则匹配,user-agent 模拟,数据入库等等。Scrapy 网络爬虫框架会帮我们建立结构式的框架,提供丰富的功能完成项目需求,大大简化了我们的项目流程。以下是 Scrapy 网络爬虫框架的官网:https://doc.scrapy.org/en/latest/
HTML 解析库 Beautifulsoup 和 Xpath:HTML 文档格式解析是个繁重的工作,如果我们只使用正则表达式进行解析,不但写起来困难,而且代码可读性太差,项目基本难以维护,而 Beautifulsoup 和 Xpath 提供丰富易懂的 API 可以完全解析 HTML 文档,我们只需要调用几个函数就可以从 HTML 文档中提取出来我们想要的任何东西。所以,在企业开发中,我们基本上不会使用正则表达式,而是使用这些功能强大且易用的 DOM 解析库。
HTTP 协议相关知识:我们使用的所有网络爬虫库都是基于 HTTP 协议的,我们的网络爬虫程序,就是通过网络爬虫库使用 HTTP 协议和网站后台通信获取网站的内容。就如我们使用浏览器访问网站一样,浏览器就是通过 HTTP 协议和网站后台通信获取网页内容,并显示在浏览器上。
网站前端和后端运行原理:学习网络爬虫,想使用好网络爬虫库,就需要对网站后端开发有一定的了解。同样想更熟练的提取网页内容就需要对前端有一定的了解。
异步并发编程:如果我们想做异步高并发的网络爬虫程序, 对异步网络编程就需要有一定的了解,比如多进程,多线程和协程。 相关知识可以参考 多进程、多线程和协程。
知道网络爬虫的概念。
知道做网络爬虫需要学习哪些知识。
该评论已被屏蔽