Python 爬虫快速入门实战指南
前言
本文主要针对入门,如果寻求进阶,或者在爬虫方面走的更远,本文提供的帮助是微乎其微的。本文的主要目的就是用简单的方式、简单的语言帮助对网页爬虫感兴趣的同学。
目前网上有关网页爬虫的指导有很多,但是套路却是千篇一律,基本都是围绕以下内容进行展开:
- CSS/html 等网页知识
- requests 或 urllib
- BeautifulSoup 或正则表达式
- Selenium 或者 Scrapy
对于我来说,学习爬虫知识是一项获取数据的工具,而不是工作的主要内容,因此,没有太多的时间花费在上述知识成体系的学习上面。上述提到的每块都涉及大量的知识,一段时间的学习之后容易让人陷入"云里雾里",然后就丧失了学习的兴趣,没有全局观、没有重点,最终使得学习效率非常低下。
本文不详细的讲解什么是 CSS/html,怎么用 requests 或者 urllib,本文主要目的是介绍怎么去爬取一个网站、爬取我们需要的资源,可能会用到上述一个或几个模块里的知识,对我们用到的功能了解即可,没有必要从头至尾的学习一遍,希望能够用这种方法让对爬虫感兴趣的同学对这项技术有一个统筹的认识,能够满足日常获取数据的需求。
准备工作
很多网页爬虫的教程中使用或者提及到很多工具,本文选择以下几项工具:
- 网页浏览器 (Google Chrome)
- BeautifulSoup4
- requests
网页浏览器主要用于查看网页 html 源码和检查网页单元使用,浏览器有很多,谷歌、火狐、IE 等,每个人的喜好不同,可以根据自己的日常习惯进行选择,本文以 Google Chrome 为例进行讲解。
BeautifulSoup4 是一个 HTML、XML 的解析器,它能够轻而易举的解析 web 网页,从中获取我们想要的单元和信息,能够避免筛选信息时的麻烦,它能够提供用于迭代、搜索、修改解析树的用法。在网页匹配过程中 BeautifulSoup 的速度并不比正则表达式快,甚至还要慢一些,但是它最大的优势就是简单、便捷,因此是很多网页爬虫工程中的必选工具之一。
安装
pip install beautifulsoup4
requests 是 Python 大神 Kenneth Reitz 的力作,是一个用于网络请求的第三方库,Python 已经包含了 urllib 模块用于访问网络资源,但是使用起来相对麻烦,而 requests 相比之下要方便快捷很多,因此本文选择用 requests 进行网络请求。
安装
pip install requests
动手实践
很多教程选择爬取糗事百科、网页图片,本文就选取另外一个方向,爬取我们常用的百度百科,这样更加直观、易于理解。
经常浏览网页,注意细节或者善于总结的会发现,网址主要有两部分组成,基础部分,和对应词条的后缀,例如上述百科词条,由基础部分 https://baike.baidu.com 组成,后缀是 item/林志玲/172898?fr=aladdin,因此我们要爬取一个网站首先要获取一个网址。
第一步,要确定一个目标,你要爬取什么数据?
很多人会认为,这不是废话吗?我个人认为这是很重要的,有目的才会效率更好,在没有某种目标驱动的情况下,就很难带着问题和压力去做一件事情,这样会变得漫无目的,导致效率很低,因此,我认为最重要的是首先要清楚想爬取什么数据?
- 网页上的音乐
- 图片
- 素材
- …
本文就以爬取百度百科词条内部链接和下载图片为目标进行讲解。
第二步,我们要获取一个基础的网址,百度百科的基础网址:
https://baike.baidu.com/
第三步,打开首页,以林志玲的百度词条为首页开始爬取。
第四步,查看源码,很多人都知道查看源码的快捷键是 F12,不管是谷歌浏览器还是 IE 浏览器,都是这样,但是当按下 F12 之后会不由得疑问,'这是什么东西?',令人毫无头绪。
当然,可以一步一步的去了解源码,学习 html 的知识,然后用正则表达式去一步一步、一个单元一个单元的匹配我们想要的信息,但是这样未免太复杂了,我个人推荐使用工具。


