2021年01月26日 23:49 __ _ _ _ _

文章配图

“if something is important enough, even if the odds are against you, you
should still do it.” 如果一件事情对你很重要,即使成功的概率很小,你也应该去做。

——马斯克

文章配图
Emmm,小编准备开始写第一篇关于Python爬虫的文章了,至于为什么第一篇是Requests库作为第一篇,主要是Python爬虫基本上都是用的Requests库搭配其它的库来进行爬取或者使用主流爬虫框架如Scrapy等进行爬取,使用Python框架爬取会在后面学到。其次是Requests对新手也很友好,虽然之后可能会用到异步携程,但使用Requests+单线程或多线程依旧是新手学习最优先的选择。

其次需要注意的是爬虫并不难学,但对于前端的知识点如HTML以及对于网络的理解要略重于学习Python。简单来说就是要弄清楚爬虫的原理。

NO.1准备Python环境

首先得安装好关于Python的环境。
使用 PyCharm或者Anaconda的spyder ,小编也主要是使用的这两个IDE,任选其一安装即可。安装传送门:
Pycharm下载及安装详解(含视频版)

Anaconda下载及安装详解(内含视频讲解)

接下来便是 下载Requests库 ,打开cmd窗口输入pip install requests.或者使用小编之前说的:
关于Python第三方库安装的那些事

可以先编写一个小小的程序检查以上步骤是否已成功完成:


import requestsr=requests.get("http://www.baidu.com")print(r.status_code)#请求的状态码print(type(r))#r的类型print(r.headers)#返回get请求页面的头部

输出页面如下说明Python环境配置以及库的下载无问题(联网状态下):

文章配图

To:(状态码)r.status_code:HTTP请求的返回状态,200表示成功,404或其它的表示失败。

2.关于Requests库的学习:

首先介绍Requests库的7个主要使用方法:

  • requests.request() :构造一个请求,支撑以下各方法的基础方法。

  • requests.get(): 获取HTML网页的主要方法,对应于HTTP的Get。

  • requests.head(): 获取HTML网页头信息的方法,对应于HTTP的Head。

  • requests.post():向HTML网页提交Post请求的方法,对应于Http的Post。

  • requests.put():向HTML网页提交Put请求的方法,对应于HTTP的put。

  • requests.patch():向HTML网页提交局部修改请求,对应于HTTP的Patch。

  • requests.delete():向HTML页面提交删除请求,对应于HTTP的delete。

一.Get方法首先讲述一下关于Requests库的get方法,r=requests.get(url)表示构造一个向服务器请求资源的Request对象;返回一个包含服务器资源的** Response对象。 ** 使用形式:

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

1.url:拟获取页面的url链接。 2.params:url中的额外参数,字典或字节流格式,可选。 3.kwargs:12个控制访问的参数。
To: ** 在r=requests.get(url)
中包括Requests库的2个重要对象:一个是指向requests的Response对象,Response
对象包含爬虫返回的内容;还有一个是指向get的Request对象。 说到Response,就不得不说到Response对象的属性:

  • r.status_code:HTTP请求的返回状态,200表示连接成功,404表示失败。

  • r.text:HTTP响应内容的字符形式,即:url对应的页面内容。

  • r.encoding:从HTTPheader中猜测的响应内容编码方式。

  • r.apparent_encoding:从内容分析出的响应内容编码方式(备选)。

  • r.content:HTTP响应内容的二进制形式。

以及 Response对象的编码:

  • r.emconding:如果header中不存在charset,则认为编码为ISO-8859-1。

  • r.apparent_encoding :根据网页内容分析出的编码方式。

打个比方,我们在用Requests方法访问某个页面时,首先使用r.status_code看是否为200,如果是,则可以通过r.text或r.encoding等查看相关信息;若是404或其它,则是因为某些原因出错或异常。
在控制台尝试输入下面的语句:


r=requests.get("http://www.baidu.com")r.status_coder.textr.encodingr.apparent_encodingr.encoding = 'utf-8'#备选编码替换r.text

控制台输入如下:

文章配图

To:在控制台中不用带print语句。

二.head方法
如:r=requests.head(‘http://bob0912.github.io‘)
使用r.headers可以获取头部信息。
在控制台尝试输入下面语句:


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

输出如下:

文章配图

三.Post方法

post方法:向URL POST一个字典自动编码为form(表单),如下列语句:


payload={'key1':'value1','key2':'value2'}r=requests.post('http://bob0912.github.io',data=payload)print(r.text)

四.Request方法

使用形式:

requests.request(method,url,**kwargs)

1.method:请求方式,对应get/put/post等7种。

2.url:拟获得页面的url的链接。

3.**kwargs:控制访问参数,共13个。

关于method的七种请求方式:

  • r=requests.request(‘GET’,url,**kwargs)

  • r=requests.request(‘HEAD’,url,**kwargs)

  • r=requests.request(‘POST’,url,**kwargs)

  • r=requests.request(‘PUT’,url,**kwargs)

  • r=requests.request(‘PATCH’,url,**kwargs)

  • r=requests.request(‘delete’,url,**kwargs)

  • r=requests.request(‘OPTIONS’,url,**kwargs)

**kwargs:控制访问参数,均为可选项

params:字典或字节序列,作为参数增加到url中,如:


kv={'key1':'value1','key2':'value2'}r=requests.request('GET','http://python123.io/ws',params=kv)print(r.url)

控制访问的参数有: data: 字典,字节序列或文件对象,作为Request的内容。

kv={'key1':'value1','key2':'value2'}r=requests.request('POST','http://python123.io/ws',data=kv)

json: JSON格式的数据,作为Request的内容。

kv={'key1':'value1'}r=requests.request('POST','http://python123.io/ws',json=kv)

headers: 字典,HTTP定制头。

hd={'user-agent':'chrome/10'}r=requests.request('POST','http://bob0912.github.io',headers=hd)

cookies: 字典或CookieJar,Request中的cookie。 auth: 元组,支持HTTP认证功能。
以上两个均为高级功能。
files: 字典类型,传输文件。

fs={'file':open('data.xls','rb')}r=requests.request('POST','http://bob0912.github.io',files=fs)

timeout: 设定超时时间,以秒为单位。

r=requests.request('GET','http://bob0912.github.io',timeout=10)

proxies: 字典类型,设定访问代理服务器,可以增加登录认证。

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

这样当我们 访问百度时所使用的IP便是服务器的IP地址,可以有效隐藏自己的IP地址。

高级功能(了解即可): allow_redirects:True/False,默认为True,重定向开关。
stream:True/False,默认为True,获取内容立即下载开关。 verify:True/False,默认为Ture,认证SSL证书开关。
cert:本地SSL证书路径。
Python爬虫系列,未完待续…

文章配图

文章配图

为你,千千万万遍.

往期推荐:

2020年度编程语言:Python! 2021-01-23
文章配图

ProxmoxVE系列:VMware,是时候卸载了 2021-01-22
文章配图

互联网人的必备技能:系统重装 2021-01-21
文章配图

一键三连,就差你了
文章配图

预览时标签不可点

阅读




__