网络爬虫(1)之requests内容——看一篇就让你受益匪浅

网络爬虫之requests内容——看一篇就让你受益匪浅

前言

网络爬虫使我们能够进行Website资源的引用,部署自身项目,并且能够让自己的项目依靠大数据为依托之一,是我们必学的内容。所以从这里我会用四个单元来讲到如何学习和使用网络爬虫。

首先我是在慕课网看北理工爬虫与信息提取课程学习,所讲的内容也会参考网上的部分,所打的字和图片都是依靠自己而来,在此先谢谢大家的阅读,希望能够为大家的学习推一把力。

1、Requests

Request库是用来获取网页信息,将网络的信息爬取到自己的项目中。

1.1 Requests安装

安装步骤如下:

首先以管理员身份运行cmd,其次执行下行代码:

pip install requests

在这里插入图片描述

像我这儿已经是安装过了,就可以看到已经能够显示版本内容。

其次可以尝试下面的内容。

在这里插入图片描述

1.2 Requests主要方法

因为我们进行爬虫不可能是完全依靠requests,所以我们可以简短的认识相关方法即可。

方法描述
requests.request()构建一个请求
requests.get()获取html网页的主要方法
requests.head()获取html网页头信息的方法
requests.post()向html网页提交POST请求
requests.put()向html网页提交PUT请求
requests.patch()向html网页提出局部修改请求
requests.delete()向html提出删除信息

其实我们学过web相关内容知道,我们在向html提交请求包括:GET、HEAD、POST、PUT、PATCH、DELETE。这些这些是我们在为了遵循Restful风格的编码内容所要记住的一些东西——比如删除、查询一个用户的网址格式等等…

这就是requests所包含的方法。

2、get方法

2.1 get方法的格式&内容

首先我们是使用过get方法来去获取百度的内容。

r=requests.get("http://www.baidu.com")
# 这里是构建一个向服务器请求资源的request对象,返回了一个包含服务器资源的响应(Response),即r。
#我们在调用r后就可以打印status_code内容可看出,其实我们的r是已经包括了url的资源。

首先格式如下:

requests.get(url,params=None,**kwargs)
  • url:就是我们想获取的url链接——http://www.baidu.com此时就是我们想获取的url。
  • params:url中的额外参数,就是表达字典或者字节流的格式。
  • **keargs:12个控制访问的参数。

2.2 get方法中的Response

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

同样是这个代码内容,我们可以通过具体内容展示上述注释的内容。

在这里插入图片描述

Reponse对象包含着服务器所返回的内容信息,也包括请求的request信息。

我们继续研究Reponse对象的属性。

属性描述
r.status_codehttp请求的返回状态
r.texthttp响应内容的字符串形式
r.encoding从http header中猜测的响应内容的编码方式
r.apparent_encoding从内容中分析出响应内容的编码方式
r.contenthttp响应内容的二进制形式

这里说明的是,如果我们并没有成功获取reponse信息,其实上述表格中只有第一个属性才能做出返回。

在这里插入图片描述

其实我们可以看到,我们在使用encoding和apparent_encoding返回的内容不一样。

前者中,如果header中不存在charset,就认为编码为ISO-8859-1。后者中,是根据网页内容分析出来的编码方式。

3、网页获取所要遇到的异常

我们在获取网页中不可能完全百分百完成我们的业务需要,在面对异常我们也要了解是什么样的问题。

首先先了解request发生的异常吧。

异常描述
requests.ConnectionError网络连接错误异常
requests.HTTPErrorhttp错误异常
requests.URLRequiredurl缺失异常
requests.TooManyRedirects重定向次数超过规定次数
requests.ConnectTimeout连接远程服务器超时
requests.Timeout请求url超时

当然,reponse异常就是在非200产生的异常信息。

r.raise_for_status()
##这里是判断是否等于200,并且内置方法已经添加额外的if,所以不需要我们自身去进行if-else

接下来是通用代码的框架:

import requests
def getHTMLText(url):
    try:
        r = requests.get(url,timeout=30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "产生异常"
if __name__ == "__main__":
    url="http://www.baidu.com"
    print(getHTMLText(url))

4、HTTP协议

4.1 url内容

HTTP协议就是超文本传输协议,是一种基于请求和响应模式的、无状态的应用层协议。

这种协议采用URL作为定位网络资源地址的标识。

其格式如下:

http://host[:port][path]

host:比如我们的host应该是127.0.0.1

port:端口号,缺省端口为80

path:请求的资源路径

比如如下例子:

http://www.bit.edu.cn
http://192.168.91.133

4.2 http协议对资源的操作

在这里插入图片描述

我们客户端能够向服务器发送put\post\patch\delete请求,而服务器通过get\head返回对客户端的内容。

我们不必太过在意协议内部的网络通道或者服务器本身,所以这时我们的信号传输是一种黑盒操作。

方法描述
requests.get()获取html网页的主要方法
requests.head()获取html网页头信息的方法
requests.post()向html网页提交POST请求
requests.put()向html网页提交PUT请求
requests.patch()向html网页提出局部修改请求
requests.delete()向html提出删除信息

总结

以上就是我今天学到的Requests相关内容,使用requests是获取网页的工具,是今后学习其他第三方库的基础。谢谢大家的阅读。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xiao艾扶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值