您当前的位置:首页 > 计算机 > 编程开发 > Python

从零开始写Python爬虫---1.1 requests库的安装与使用

时间:11-12来源:作者:点击数:
什么是爬虫?

爬虫本质上是模拟人浏览信息的过程,只不过他通过计算机来达到快速抓取筛选信息的目的。所以我们想要写一个爬虫,最基本的就是要将我们需要抓取信息的网页原原本本的抓取下来。这个时候就要用到requests库了。

python下载

所谓工欲善其事必先利其器,在写python之前,我们需要先把安装环境搭建好,我们直接打开python的官方网站:https://www.python.org/,点击download进行安装,现在最新的版本是3.9.3。

在这里插入图片描述

如果是windows电脑,点击64-bit进行下载。

在这里插入图片描述

在安装的过程中需要勾选将python加入到环境中,然后再点击下载。

在这里插入图片描述

不到一分钟的时间,就下载好了,出现如下页面,表示下载成功。

在这里插入图片描述

还有一个方法可以验证是否安装成功,打开CMD命令,输入python,如果出现版本号,则表示对应下载成功。

在这里插入图片描述

接下来,我们需要安装一些爬虫用到的库,也就是本章需要介绍的requests库。

requests库的安装

requests库本质上就是模拟了我们用浏览器打开一个网页,发起请求是的动作。它能够迅速的把请求的html源文件保存到本地.

他安装的方式非常简单:我们用pip工具在命令行CMD里进行安装

pip install requests
在这里插入图片描述

接着我们看一下是否成功安装了requests

pip list

看一下安装结果,这时候表明已经安装成功了。

在这里插入图片描述
requests库的基本使用

接下来我们就开始写代码了,首先打开编辑器,也就是上面下载的python。

找到IDLE,单机打开

在这里插入图片描述
在这里插入图片描述

再点击左上角的File,点击New File,我们在这里编辑代码,我们可以先点击File,给文件起个名字,我这里就叫test吧,然后再次打开。

在这里插入图片描述

首先我们在python编辑器导入requests这个包

import requests

假设我们这里需要将百度的index页面的html源码抓取到本地,并用r变量保存。

r = requests.get("http://www.baidu.com")

最后将下载到的内容打印一下:

print(r.text)

点击Run,里面有个Run Module,点击,如下面图片可以看到,百度的首页源码文件我们已经把他抓取到本地了。

在这里插入图片描述

上面的抓取过程中,我们用到了requests库的get方法,这个方法是requests库中最常用的方法之一。

他接受一个参数(url)并返回一个HTTP response对象。与get方法相同的,requests库还有许多其他常用方法:

在这里插入图片描述

下面我们来详细了解一下requests.get这个方法:

这个方法可以接收三个参数,其中第二个默认为None, 第三个可选.

requests.get(url, params=None, **kwargs)

作用是模拟发起GET请求,模拟获取页面的url链接。

下面,我们来着重讲一下 **kwargs 这个参数

  • kwargs: 控制访问的参数,均为可选项
  • params: 字典或字节序列,作为参数增加到url中
  • data: 字典、字节序列或文件对象,作为Request的内容 json : JSON格式的数据,作为Request的内容
  • headers: 字典,HTTP定制头
  • cookies: 字典或CookieJar,Request中的cookie
  • auth: 元组,支持HTTP认证功能
  • files: 字典类型,传输文件
  • timeout: 设定超时时间,秒为单位
  • proxies: 字典类型,设定访问代理服务器,可以增加登录认证
  • allow_redirects: True/False,默认为True,重定向开关
  • stream: True/False,默认为True,获取内容立即下载开关
  • verify: True/False,默认为True,认证SSL证书开关
  • cert: 本地SSL证书路径
  • url: 拟更新页面的url链接
  • data: 字典、字节序列或文件,Request的内容
  • json: JSON格式的数据,Request的内容

下面来介绍下,常用的两个控制访问参数:

1. 假设我们需要在GET请求里自定义一个header头文件:

import requests

hd = {'User-agent':'123'}
r = requests.get('http://www.baidu.com', headers=hd)
print(r.request.headers)

结果如下

在这里插入图片描述

2. 假设我们要自定义一个代理池

为什么有时候需要添加代理池proxies这个参数呢,是因为在爬取网页的过程中,有些网站对访问的IP控制较为严格,我们需要添加很多具有IP的代理机制,这样才可以骗过待爬取的网站。后面有章节会有实战案例,详细讲解这个代理池的用法,先留个坑。

pxs = { 'http': 'http://user:pass@10.10.10.1:1234',
        'https': 'https://10.10.10.1:4321' }
r = requests.get('http://www.baidu.com', proxies=pxs)

接下来,我们详细了解Response对象

import requests
r = requests.get("http://www.baidu.com")

#HTTP请求的返回状态,比如,200表示成功,404表示失败
print (r.status_code)

#HTTP请求中的headers
print (r.headers)

#从header中猜测的响应的内容编码方式 
print (r.encoding)

#从内容中分析的编码方式(慢)
print (r.apparent_encoding)

#响应内容的二进制形式
print (r.content)

下面介绍下,requests抓取网页的通用框架,这是一个最简单的爬虫模板,也是我们后面在实战案例中经常用到的基础代码,可以说万变不离其宗。

下面这段代码什么意思呢,我来简单解释下,url代表我们要爬取的网站地址,首先我们用requests去爬取这个地址,给它30秒的时间延迟,如果在30秒内可以访问进去,并且获取的状态码是200,那就返回访问的网页内容,否则就返回一个失败的信息。

import requests

def getHtmlText(url):
    try:
        r = requests.get(url, timeout=30)
        # 如果状态码不是200 则应发HTTOError异常
        r.raise_for_status()
        # 设置正确的编码方式
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "Something Wrong!"

好了关于requests库我们今天就写到这,这是一个非常强大的库,

更多的功能大家可以去看一下官方的文档:快速上手 - Requests 2.10.0 文档

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门