1.爬虫的过程分析
当人类去访问一个网页时,是如何进行的?
①打开浏览器,输入要访问的网址,发起请求。
②等待服务器返回数据,通过浏览器加载网页。
③从网页中找到自己需要的数据(文本、图片、文件等等)。
④保存自己需要的数据。
对于爬虫,也是类似的。它模仿人类请求网页的过程,但是又稍有不同。
首先,对应于上面的①和②步骤,我们要利用python实现请求一个网页的功能。
其次,对应于上面的③步骤,我们要利用python实现解析请求到的网页的功能。最后,对于上面的④步骤,我们要利用python实现保存数据的功能。
因为是讲一个简单的爬虫嘛,所以一些其他的复杂操作这里就不说了。下面,针对上面几个功能,逐一进行分析。
2.如何用python请求一个网页
作为一门拥有丰富类库的编程语言,利用python请求网页完全不在话下。这里推荐一个非常好用的第三方类库requests。
2.1 requests
2.1.1 安装方式
打开终端或者cmd,在里面输入以下指令并回车
pip3 install requests
一般不会出什么问题,如果下载太慢,是因为pip使用的源服务器在国外,可以设置pip使用国内镜像源,设置方法可以参考PyPI使用国内源。
2.1.2 测试是否安装成功
在命令行中输入python
,敲击回车,进入python
交互环境。在里面输入以下代码并回车:
import requests
如果不报错,就安装成功了,如下图:
2.2 使用requests请求网页
打开pycharm,创建一个项目,嗯,随便取个名字吧。
创建成功后,再创建一个py文件,用来写代码。嗯,再随便取个名字= =教程(二)的2.2,那就spider_2_2_2
吧。
在里面输入以下代码:
#coding=utf-8
import requests
resp=requests.get('https://www.baidu.com') #请求百度首页
print(resp) #打印请求结果的状态码
print(resp.content) #打印请求到的网页源码
对上面的代码进行以下简单的分析:
我是用的是python2.7
,第1行到第4行,都是为了将字符编码设置为utf8
。
第2行:引入requests
包。
第4行:使用requests
类库,以get的方式请求网址https://www.baidu.com
,并将服务器返回的结果封装成一个对象,用变量resp
来接收它。
第5行:一般可以根据状态码来判断是否请求成功,正常的状态码是200,异常状态码就很多了,比如404(找不到网页)、301(重定向)等。
第6行:打印网页的源码。注意,只是源码。不像是浏览器,在获取到源码之后,还会进一步地取请求源码中引用的图片等信息,如果有JS,浏览器还会执行JS,对页面显