刚刚研一,导师要求我开始学习Python网络爬虫,于是结合《精通Python网络爬虫:核心技术、框架与项目实战》和各种博客对比学习,开始真正接触网络爬虫。
关于Python的入门基础可以参考MOOC上的课程,简单易懂,也有相应的练习和资料,在此不加赘述。
我用的IDE是PyCharm,然后下载了Anaconda作为管理环境资源的工具。
一、什么是网络爬虫
网络爬虫又称网络蜘蛛、网络机器人等,可以自动化浏览网络中的信息,也可以按照我们制定的规则进行,这些规则被叫做网络爬虫算法。不同的人学习爬虫,可能目的有所不同,一般有以下几个原因:
- 学习爬虫,可以订制一个搜索引擎,并且可以对搜索引擎的数据采集工作原理进行更深层次的理解;
- 大数据时代,要进行数据分析,首先要有数据源,学习爬虫可以让我们获取更多的数据源,并且按照我们的目的进行采集和去掉许多无关数据;
- 从就业的角度来说,爬虫工程师目前来说属于紧缺人才,深层次地掌握这门技术,对就业来说比较有利。
网络爬虫由控制节点、爬虫节点和资源库构成。网络爬虫中可以有多个控制节点,每个控制节点下可以有多个爬虫节点,控制节点之间可以相互通信,同时控制节点和其下的各爬虫节点之间也可以进行互相通信。
Urllib库
该库是Python提供的一个用于操作URL的模块,在Python3.X中Urllib2合并到了Urllib中,这是与Python2.X不同的地方。
- urllib.request模块是用来打开和读取URLs的;
- urllib.error模块包含一些有urllib.request产生的错误,可以使用try进行捕捉处理;
- urllib.parse模块包含了一些解析URLs的方法;
- urllib.robotparser模块用来解析robots.txt文本文件.它提供了一个单独的RobotFileParser类,通过该类提供的can_fetch()方法测试爬虫是否可以下载一个页面。
下面讲解如何使用Urllib快速爬取一个网页。
二、写一个简单的爬虫
import urllib.request
file = urllib.request.urlopen("https://baike.baidu.com/item/Python/407313")
data = file.read()
print(data.decode("utf-8"))
filehandle = open("E://1.html","wb")
filehandle.write(data)
filehandle.close()
首先导入需要用到的模块,并通过urlopen打开并爬取一个网页,并赋给file,此时我们还需要将对应的网页内容读取出来,并通过decode("