网络爬虫学习(五)

前面(https://blog.csdn.net/weixin_44526949/article/details/86671897)已经知道了网络爬虫的基本流程,那么这里有两个词,Request和Response。那么这两个又是什么东东呢?简单来说,当我们在我们的浏览器中输入我们想要访问的资源的URL时,比如https://translate.google.cn/时,点击“回车键”,此时浏览器便向该URL所在的服务器发送了一个Request(请求),这个过程叫做HTTP Request。服务器收到浏览器发送的消息后,能够根据浏览器发送消息的内容,做相应处理,然后把消息回传给浏览器,这个过程叫做HTTP Response。浏览器收到服务器的Response信息后,会对信息进行相应的处理,然后展示给用户。这就是Request-Response流程。

那么Request它的具体组成又有哪些内容呢?Request主要包括4个组成部分。

  1. 请求方式:主要有GET、POST两种类型,其中GET是从服务器上获取数据它的请求参数是URL的一部分,如http://www.baidu.com/s?wd=Chinese。POST是向服务器传送数据,通常用来向HTTP服务器提交数据,请求参数包含在"Content-Type"消息头里,指明该消息体的类型和编码。除了GET和POST之外,还有HEAD、PUT、DELETE、OPTIONS等。
  2. 请求的URL:URL全称“统一资源定位符”。比如一个网页文档、一张图片、一个视频都可以用URL唯一来确定。
  3. 请求头:包含请求时的头部信息,如User-Agent、Host、Cookies等消息。
  4. 请求体:请求时额外携带的数据,如表单提交时的表单数据。

那么Response的具体组成又是什么呢?Response主要包括3部分。

  1. 响应状态:有很多响应状态,这些响应状态都以响应状态码来表示,是一个三位数,第一个数字定义了响应的类别,且有5种取值,即1,2,3,4,5。其中100~199:表示服务器成功接受部分请求,要求客户端继续提交其余请求才能完成整个处理过程。200~299:表示服务器成功接受请求并且已完成整个处理过程。通常当我们看到状态码为200时,表示请求成功。300~399:表示为了完成请求,客户需进一步细化请求。比如301跳转、302所请求的页面已经临时转移至新的URL、304使用缓存资源。400~499:客户端的请求有错误,常用404(服务器无法找到被请求的页面),403(服务器拒绝访问,权限不够)。500~599:表示服务器端出现的错误,常用500(请求未完成。服务器遇到不可预知的情况),502(服务器错误)。
  2. 响应头:如内容类型、内容长度、服务器信息、设置Cookie等等。
  3. 响应体:最主要的部分,包含了请求资源的内容,如网页HTML、图片、二进制数据等。

接下来,使用python程序来演示这个过程:

import requests
response = requests.get("http://www.baidu.com") # http请求发送得到response对象
print(response.text)  # 打印返回的response对象的文本内容,即响应体
print(response.headers) # 打印响应头信息
print(response.status_code)  # 打印响应状态码

那么可以爬取什么数据呢?这些数据有HTML文档、Json格式的文本,通过对Json格式的文本进行解析,便可以得到结构化的数据、另外还可以得到图片、视频等二进制数据等等。下面来爬取百度搜索引擎的logo并保存到本地,见下面代码。

首先可以在源代码中找到该Logo的URL并复制。

代码如下:

import requests
response = requests.get("https://www.baidu.com/img/baidu_jgylogo3.gif")
print(response.content)    # 获取到了图片16进制的数据
# 接下来,将图片数据写入到本地
with open('/tmp/baidulogo.gif','wb') as f:
    f.write(response.content)
    

执行完上面的代码后,如图,图片存储到了本地的/tmp目录下。

接下来对获取到的数据进行解析,主要方法有直接处理,这种方法用来处理不需要转换的数据,比如基本的字符串;Json解析,比如一些通过ajax加载的数据,其返回格式是一种Json格式的字符串;利用正则表达式来进行解析;使用一些解析库来进行解析,比如BeautifulSoup、PyQuery、XPath等。最后结果保存到数据库中或者转成易于理解的文本文件即可。下一篇将会介绍一些库的使用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CSAIWQYB

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

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

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

打赏作者

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

抵扣说明:

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

余额充值