爬虫介绍
互联网由许许多多的超文本(HTML)组成,用户利用HTTP或者HTTPS协议访问网页。通俗来讲,爬虫就是我们编程来模拟用户访问网页的过程。
聚焦爬虫的基本过程如下:
- 访问目标url。
- 解析数据。
- 获取待访问url,回到步骤1。
- 数据持久化,即将爬取的数据保存到本地。
urllib介绍
urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求。其常被用到的子模块在Python3中的为urllib.request和urllib.parse。许多第三方的爬虫库都是基于urllib,比如Requests。
最简单的爬虫
下面是get请求的爬虫
1 | from urllib import request |
下面是post请求的爬虫,由于url只支持Ascii编码的字符,所以如果其包含中文字符,需要对其编码。
1 | import urllib.request |
请求头和代理
添加请求头
许多网站直接通过请求头,判别一次访问是由浏览器还是爬虫程序发起的,这主要是通过User-Agent字段,下面显示如何给我们的爬虫添加请求头。
1 | import urllib.request |
设置代理服务器
有些网站会通过限制ip的访问频率来反爬虫,我们可以通过代理来通过这一限制,所谓代理就是我们通过中间服务器去访问网页,中间服务器再将访问结果传给我们。代理分为三种:
- 透明。目标主机知道这是代理,也知道我们主机的ip。
- 匿名。目标主机知道这是代理,但不知道我们主机的ip。
- 高匿。目标主机不知道这是代理,也不知道我们主机的ip。
下面演示免费代理的设置方法。
1 | import urllib.request |
下面演示如何设置付费代理。
1 | import urllib.request |
爬取免费代理
下面演示如何从免费代理网站爬取ip并验证有效性的程序。
1 | from http.client import responses |
HTTP认证
1 | from urllib import request |
处理cookies
下面演示如何登录网站,并保存下cookies
1 | from http import cookiejar |