Python crawler learning (1) Introducción a la biblioteca de solicitudes

(1) Introducción a la biblioteca de solicitudes

(1) protocolo HTTP

#HTTP 超文本传输协议
#HTTP是一种基于“请求与响应”模式的、无状态的应用层协议
#HTTP采用URL作为定位网络资源的标识,一个URL对应一个数据资源
-------------------------------
http://host[:post][path]
host:合法的Internet主机域名或IP地址
port:端口号,缺省为80
path:请求资源的路径
-------------------------------
Método Efecto
OBTENER Solicitar recurso para ubicación de URL
CABEZA Solicitar informe de mensaje (información de encabezado) para obtener recursos de ubicación de URL
ENVIAR Solicitud para agregar nuevos datos al recurso en la URL
PONER Solicite almacenar un recurso en la ubicación de la URL, sobrescribiendo el recurso en la ubicación de la URL original (actualice la cobertura completa)
PARCHE Solicitar actualizar parcialmente el recurso de la ubicación de la URL, es decir, cambiar parte del contenido del recurso allí (actualización de cobertura parcial)
ELIMINAR Solicitud para eliminar el recurso almacenado en la ubicación URL

(2) Los 7 métodos principales de la biblioteca de solicitudes

Método Efecto
request.request (método, url, ** kwargs) Construir una solicitud para admitir los métodos básicos de los siguientes métodos
request.get () El método principal para obtener páginas web HTML, correspondiente a HTTP GET
request.head () Método para obtener información de encabezado web HTML, correspondiente a HTTP HEAD
request.post () El método de enviar una solicitud POST a una página web HTML, correspondiente a HTTP POST
request.put () Método para enviar la solicitud PUT a la página web HTML, correspondiente a HTTP PUT
request.patch () Enviar una solicitud de modificación parcial a una página web HTTP, correspondiente a PATCH HTTP
request.delete () Enviar solicitud de eliminación a la página HTML, correspondiente a HTTP DELETE
requests.get()
#获取HTML网页的主要方法,对应于HTTP的GET
r = requests.get(url, parms=None, **kwargs)
#url		:拟获取页面的url链接
#params		:url中的额外参数,字典或字节流格式(可选)
#**kwargs	:12个控制访问的参数,均为可选项
12 parámetros Significado del parámetro
datos Diccionario, secuencia de bytes u objeto de archivo como contenido de la Solicitud
json Datos en formato JSON como el contenido de la solicitud
encabezados Diccionario, encabezado personalizado HTTP
galletas Diccionario o CookieJar, Cookie en Solicitud
auth Tuple, admite autenticación HTTP
archivos Tipo de diccionario, transferir archivos
se acabó el tiempo Establecer el tiempo de espera, en segundos
proxies El tipo de diccionario, establecer el acceso al servidor proxy, puede aumentar la autenticación de inicio de sesión
allow_redirects Ture / False, True por defecto, interruptor de redireccionamiento
corriente Verdadero / falso, el valor predeterminado es Verdadero, obtenga el contenido inmediatamente descargue el interruptor
verificar Verdadero / Falso, Verdadero por defecto, cambio de certificado SSL
cert Ruta de certificado SSL local
#构造一个向服务器请求资源的Request对象:requests.get()
#返回一个包含服务器资源的Response对象:r
Atributo de respuesta Significado del atributo
r.status_code Estado de devolución de solicitud HTTP
r.text La forma de cadena del contenido de la respuesta HTTP, es decir, el contenido de la página correspondiente a la URL
r. codificación Método de codificación de respuesta deducido del encabezado HTTP. Si no hay un juego de caracteres en el encabezado, se considera ISO-8859-1
r.apparent_encoding Método de codificación del contenido de respuesta analizado a partir del contenido (opcional)
r.contenido Forma binaria de contenido de respuesta HTTP
Tipo de excepción de biblioteca de solicitudes Significado anormal
request.ConnectionError Errores de conexión de red, como error de consulta DNS, conexión rechazada, etc.
request.HTTPError Excepción de error HTTP
request.URLRequired URL faltante excepción
solicitudes.TooManyRedirects Superando el número máximo de redireccionamientos, se genera una excepción de redireccionamiento
request.ConnectTimeout Conexión a la excepción de tiempo de espera del servidor remoto
solicitudes. Solicitar URL agotado
r.raise_for_status()
#如果不是200,产生异常requests.HTTPError

(3) status_code

#HTTP: Status 200 – 服务器成功返回网页
#HTTP: Status 404 – 请求的网页不存在
#HTTP: Status 503 – 服务不可用
-------------------------------------------
HTTP Status 2xx  (成功)
表示成功处理了请求的状态代码;

详细代码说明:
HTTP Status 200 (成功)
-> 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
HTTP Status 201 (已创建)
-> 请求成功并且服务器创建了新的资源。
HTTP Status 202 (已接受)
-> 服务器已接受请求,但尚未处理。
HTTP Status 203 (非授权信息)
-> 服务器已成功处理了请求,但返回的信息可能来自另一来源。
HTTP Status 204 (无内容)
-> 服务器成功处理了请求,但没有返回任何内容。
HTTP Status 205 (重置内容)
-> 服务器成功处理了请求,但没有返回任何内容。
HTTP Status 206 (部分内容)
-> 服务器成功处理了部分 GET 请求。
-------------------------------------------
HTTP Status 4xx (请求错误)
这些状态代码表示请求可能出错,妨碍了服务器的处理;

详细代码说明:
HTTP Status 400 (错误请求) 
->服务器不理解请求的语法。
HTTP Status 401 (未授权) 
->请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
HTTP Status 403 (禁止)
-> 服务器拒绝请求。
HTTP Status 404 (未找到) 
->服务器找不到请求的网页。
HTTP Status 405 (方法禁用) 
->禁用请求中指定的方法。
HTTP Status 406 (不接受) 
->无法使用请求的内容特性响应请求的网页。
HTTP Status 407 (需要代理授权) 
->此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。
HTTP Status 408 (请求超时) 
->服务器等候请求时发生超时。
HTTP Status 409 (冲突) 
->服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。
HTTP Status 410 (已删除)
-> 如果请求的资源已永久删除,服务器就会返回此响应。
HTTP Status 411 (需要有效长度) 
->服务器不接受不含有效内容长度标头字段的请求。
HTTP Status 412 (未满足前提条件) 
->服务器未满足请求者在请求中设置的其中一个前提条件。
HTTP Status 413 (请求实体过大) 
->服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
HTTP Status 414 (请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。
HTTP Status 415 (不支持的媒体类型) 
->请求的格式不受请求页面的支持。
HTTP Status 416 (请求范围不符合要求) 
->如果页面无法提供请求的范围,则服务器会返回此状态代码。
HTTP Status 417 (未满足期望值) 
->服务器未满足”期望”请求标头字段的要求。
-------------------------------------------
HTTP Status 5xx (服务器错误)
这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错;

代码详细及说明:
HTTP Status 500 (服务器内部错误) 
->服务器遇到错误,无法完成请求。
HTTP Status 501 (尚未实施) 
->服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
HTTP Status 502 (错误网关) 
->服务器作为网关或代理,从上游服务器收到无效响应。
HTTP Status 503 (服务不可用)
-> 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
HTTP Status 504 (网关超时) 
->服务器作为网关或代理,但是没有及时从上游服务器收到请求。
HTTP Status 505 (HTTP 版本不受支持)
-> 服务器不支持请求中所用的 HTTP 协议版本。

Marco de código universal para rastrear páginas web

#爬取网页的通用代码框架
import requests

def getHTMLText(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()	#如果状态不是200,引发HTTPError异常
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "产生异常"
    
if __name__ == "__main__":
    url = "http://www.baidu.com"
    print(getHTMLText(url))
10 artículos originales publicados · Me gusta1 · Visitas 141

Supongo que te gusta

Origin blog.csdn.net/qq_39419113/article/details/105489591
Recomendado
Clasificación