Python网络爬虫与信息提取(二)**kwargs参数详解

前言

  上一节中我们借requests库中的get方法简单学习了requests库的使用方法,并提及了get方法的参数中含有**kwargs这十三个可选参数,这一节中我们将深入探讨这十三个参数的含义和用法。

正文

   我们知道requests方法是requests库所有方法的基础,所以**kwargs这十三个参数也不是get方法独有的,而是适用于requests方法及其延伸出的六种方法。

    **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证书路径

我们仍然以百度为例来解释


  parmas即是将字典或字节序列加入url链接中(会在原url链接结尾添加/?再插入用户创建的字典),我们可以通过这种方法直接用requests库向百度提交搜索请求,我们用len(r.text)来告诉我们百度搜索到的结果的长度。

  data参数可用于向指定的url链接出提交数据,如: 

kv = {'key1' : 'value1', 'key2' : 'value2'}
r = requests.post('http://www.baidu.com', data = kv)

  即是向百度主页面提交我们的数据(当然提交后并没有什么用处);

  json及是向服务器提交JSON格式的数据:

kv = {'key1' : 'value1'}
r = requests.post('http://www.baidu.com', json = kv)

  这既是将kv中的数据赋值到了服务器的JSON域中;

  headers是通过用户定义的字典来定制HTTP的头


  此时'User-Agent'对应的内容是'python-requests',即我们向服务器声明了我们是requests所生成的一个请求,而如果我们用headers来更改我们HTTP的头的话

  这里我们将'user-agent'对应的内容改为了'Mozilla/5.0'即我们将自己向服务器的请求伪装成Mozilla/5.0浏览器对服务器的请求,此方法可在某些服务器禁止爬虫或仅接受来自浏览器的请求时将我们自己的请求伪装成来自浏览器的请求来绕过服务器的限制。

  通过headers参数我们可以实现对HTTP头中任何对应内容的修改。

  files字段输入的为字典类型,用于向服务器传输文件:

fv = {'file' : open('file.txt', 'r')}
r = requests.post('http://www.baidu.com', files = fv)

  timeout用于设定请求的超时时间,单位是秒(s),

r = requests.get('http://www.baidu.com', timeout = 10)

  我们设置的超时时间为10s,即若在10s之内未收到服务器返回的Response对象,我们的程序将出现timeout异常。

  proxies字段用于设置我们爬取网页时的代理服务器,同时也可设置登录代理服务器时的用户名和密码。

  

px = {'http' : 'http://user:[email protected]:x',
      'https': 'http://x.x.x.x:x'}
r = requests.get('http://www.baidu.com',proxies=px)

  如上我们设置了访问http网页时的代理服务器地址及用户名和密码,我们也可不设置用户名及密码而直接设置代理服务器地址(如上设置https时的方式),这样我们就可以通过代理服务器来防止我们的爬虫被逆追踪。

 

  cookies则是通过用户输入的字典或CookieJar来解析HTTP协议中的cookie;auth输入的参数要求为元组,用于支持HTTP的认证功能;allow_redirects用于设置是否允许对url重定向; stream字段则设置是否对我们爬取到的内容进行立即下载; verify字段则用来设置是否认证SSL证书(以上三个功能默认情况均为开启); cert字段则用于设置保存本地SSL证书路径。

  以上六个字段均对应于Requests库的高级功能,我们将在今后遇到具体问题时再深入讨论。

  对于requests延伸出的六个方法中,**kwargs中的参数有时会作为该方法的显式参数,如get(url, params, **kwargs)这是因为在get方法中params参数较常被使用,所以在这里被显式地提供了,而这里的**kwargs便是指除params外剩余的十二个可选参数。




猜你喜欢

转载自blog.csdn.net/Abgler/article/details/80035657