admin管理员组

文章数量:1651076

http的执行过程

一个HTTP操作称为一个事物,其执行过程分为4个步骤:

  1. 客户端与服务器需要建立连接,如:单机某个超链接,HTTP工作开始。
  2. 建立连接后,客户端发送一个请求给服务器,请求方的格式为:同一资源标识符(URL)、协议版本号,后边是MIME信息,包括请求修饰符、客户机信息和可能的内容。
  3. 服务器接到请求后,给予相应的相应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息,包括服务器信息、实体信息和可能的内容。
  4. 客户端接收服务器所返回的信息,通过浏览器将信息显示在用户的显示屏上,然后客户端和服务器断开连接。

爬虫基本原理

网页请求和响应的过程

  1. Request(请求)。每一个用户打开的网页都必须在最开始由用户向服务器发送访问的请求。
  2. Response(响应)。服务器在接收到用户的请求后,会验证请求的有效性,然后向用户发送相应的内容。

网页请求的方式

  1. GET。最常见的请求方式,一般用于获取或者查询资源信息。
  2. POST。与GET相比,多了以表单形式上传参数的功能,因此除了查询信息之外还可以修改信息。

爬虫工作的基本流程

  1. 发送请求。
  2. 获取相应内容。
  3. 解析内容。
  4. 保存数据。

urllib模块

urllib是URL和lib(library)单词组成。实际上是一个包,里面共有4个模块。

URL的一般格式为(带方括号[]的为可选项):protocol://hostname[port]/path/[; parameters] [?query]#fragment。

URL由以下三部分组成:

  1. 协议。
  2. 存放资源的服务器的域名系统(DNS)主机名或IP地址。
  3. 主机资源的具体地址,如目录和文件名等。

在urllib模块中使用urllib.request.urlopen()函数访问网页,参数为:

urllib.request.urlopen(url,data = None,[timeout,]*,cafile = None,capath = None,cadefault = False,context = None)

例:使用urllib访问目标网页。

import urllib.request
response = urllib.request.urlopen("http://www.jd")
html = response.read()
html = html.decode("utf-8") #还原为带中文的HTML代码,对UTF-8编码的bytes对象解码
print(html)

例:使用urllib获取响应信息。

import urllib.request
url = "http://www.baidu/"
response = urllib.request.urlopen(url)
print(response.getcode())      #获取当前网页的状态码:200表示网页正常、403表示不正常、404表示失败等。
print(response.geturl())       #获取当前网页的网址
print(response.getheaders())   #返回一个包含服务器响应HTTP所发送的标头

Requests库

Requests是一个基于urllib,采用Apache2 Licensed开源协议的HTTP库。比url方便。

提供的功能包括:keep-alive、连接池、cookie持久化、内容自动解压、HTTP代理、SSL认证、连接超时、Session等很多特性。

例:使用GET方式抓取网页数据。

import requests
url = "http://www.baidu"
strhtml = requests.get(url)  #将获取的数据保存到strhtml变量中
print(strhtml.text)          #打印网页源码

例:使用GET方式读取网页数据,并设置超时反应。

import requests
r = requests.get("https://www.163/",timeout = 1) 
#timeout并不是整个下载响应的时间限制,而是如果服务器在timeout秒内没有应答,将会引发一个异常。
print(r.status_code)

例:使用Requests库抓取网页图片。

import requests
r3 = requests.get("https://image11.m1905/uploadfile/2021/0323/20210323100410246713.jpg")
with open('C:/Users/14553/Documents/python-spyder/xuanyazhishang.png','wb'

本文标签: 爬虫二三酷狗榜单入门