Directorio artículo
1: Introducción a los reptiles proceso
- Identificar las necesidades: ¿Necesita algo?
Es necesario bellas imágenes - Mirando requisitos: ¿Dónde puedo encontrar lo que buscas?
Baidu Galería - solicitud de envío: Enviar solicitud de acceso a la página, el acceso al código fuente de la página.
- Analiza los datos: extraer la información que necesitamos de ellos involucró código fuente.
2: Uso básico de Solicitud
En primer lugar tenemos que saber: GET, POST, PUT, DELETE, las opciones de solicitud de método como un resumen breve . Se utiliza generalmente petición GET rastreador.
instalar
pip install requests
uso básico
import requests as req
#定义请求的url
url = "https://www.baidu.com"
#发起get请求
res = req.get(url)
#获取相应结果
print(res) #返回响应码
print(res.content) #返回二进制的文本流
Parámetro Descripción 1. solicitud de método ()
request()
La sintaxis de los métodos siguientes:
requests.request(method, url, **kwargs)
· Procedimiento: · parámetros, es decir, método de transmisión de la solicitud HTTP correspondiente a la más de seis métodos; es decir url URL de transmisión de petición. Estos dos parámetros son parámetros requeridos.
Por ejemplo que "Get" método para Baidu de acceso, a continuación, el código correspondiente se escribe encima de la
Así que conseguimos un objeto Respuesta es llamado res. Podemos obtener la información que desea de este objeto.
Aquí ilustramos parámetro opcional kwargs **:
1.params
Byte diccionario o una secuencia, como se ha añadido al parámetro de URL, el parámetro utilizado para obtener la solicitud.
Por ejemplo, queremos buscar información acerca de "Viaje al Oeste" en el berro, un método consiste en coser manualmente cadena URL, "https://www.douban.com/search?q= Viaje al Oeste".
Otro enfoque es la forma que en un diccionario como un params
parámetro pasado:
params = {"q":"西游记"}
r = requests.request("get","https://www.douban.com/search", params = params)
2.data
archivo de objeto de diccionario o secuencia de bytes, ya que el contenido de la solicitud, se utiliza para solicitar el envío de correos.
Cuando inicie sesión, registro y otras operaciones hay que enviar el formulario, es necesario utilizar este parámetro. Por ejemplo, cuando usamos correo electrónico para registrar toda la red, tiene que pasar este parámetro.
loginurl = "http://www.renren.com/PLogin.do"
postdata = {"email": "[email protected]",
"password": "12345678"}
r = requests.requests("post", loginurl, data = postdata)
Por supuesto, la solicitud anterior no puede tener éxito, porque hay una falta de algunos parámetros clave.
3 JSON
datos JSON-formato, ya que el contenido de la solicitud, que se utiliza comúnmente en la solicitud POST.
Eso JavaScript Object notación JSON (JavaScript Object Notation), que es la sintaxis para almacenar e intercambiar mensajes de texto. Su forma es similar a la del diccionario en Python:
'{"email": "[email protected]", "password": "12345678"}'
Pero tenga en cuenta que el diccionario es un tipo de datos, y una cadena JSON.
Varios datos de idiomas JSON módulos de procesamiento han asociado. Python módulo de JSON utiliza comúnmente, introduciremos más adelante.
4 cabeceras
Diccionario, cabeceras HTTP personalizados.
Piense en cuando usamos el teléfono, ipad, ordenadores acceso simultáneo a la página principal de Baidu (con un sitio web), la página de Baidu devuelto es el mismo que lo que?
Por supuesto que no. Así servidor de Baidu es cómo sabemos lo que es terminal accesibles?
La respuesta es que headers
el parámetro “user-agent”
. Si no fijamos el headers
parámetro, “user-agent”
el valor predeterminado es "python-requests/2.19.1"
. Esto es equivalente a decir abiertamente el servidor, la solicitud de la oruga pitón. La creación de un programa de servidor de anti-subida puede negarse a responder.
Por lo tanto, podemos personalizar las cabeceras de parámetros se hacen pasar por el navegador.
Disfrazado de conjunto navegador Chrome:
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"}
Basta con echar un vistazo a la página web:
el otro no es una gran cantidad Solía ~
Propiedades y métodos de un objeto 2. Respuesta
status_code
Propiedades: Devuelve el código de estado de solicitud: código de estado 200 indica que la solicitud se ha realizado correctamente.
En general, el código de estado indica el éxito 2XX, 3XX redirecciones, ambos de los cuales tienen éxito; 4XX expresar errores en la solicitud, como un error nuestro servidor común expresado 404,5XX, estos dos son considerados fracasos.request.headers
Propiedades: cabeceras de respuesta de retorno, por ejemplo ,, como el tiempo, el camino, es importanteuser-agent
identificar la información. por ejemplo{'User-Agent': 'python-requests/2.22.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}
encoding属性
: Solicitudes responderán de acuerdo con la información del encabezadoContent-Type
del archivo de determinación de modo de codificación. Si no se encuentra el campo correspondiente, el valor predeterminado es“ISO-8859-1”
.apparent_encoding
Propiedades: En realidad no hay una gran cantidad de páginas a la norma ISO-8859-1 codificación. Las solicitudes también proporciona operaciones dependen farsa de adivinar el código. Afortunadamente, es conjetura muy precisa.text
Propiedades: devuelve una respuesta de contenido en forma de texto.content
Propiedades: devuelve un contenido de la respuesta en forma de bytes. Si lares.content.decode('utf-8')
decodificación, entonces el efecto es equivalente a .text.cookies
Propiedades: Si la respuesta contiene algunas de la cookie, puede utilizar esta propiedad para acceder con más rapidez.url
Propiedades: devolver una respuesta de la dirección URL. Debido a las redirecciones, tratar y dar respuesta a nuestra dirección solicitada no se puede producir la misma situación.iter_content()
Método: al recibir datos, mientras que el procesamiento de datosclose()
Método: para cerrar la conexión.json()
Métodos: Las solicitudes también tiene incorporado un decodificador de JSON que puede ayudar a tratar con datos JSON. Si el contenido JSON codificado contenido de la respuesta, se devuelve una lista de tipos de datos, en el que una lista de elementos del tipo diccionario.raise_for_status()
: Si es anormal arrojará una categoría de excepción "HTTPError".
Solicitud Detallada 3.request cabecera
Encabezado de solicitud es una parte muy importante, digno de un estudio separado a la vista. Hay muchos sitios web para reconocer su reptil se le negará el acceso, por lo que necesitamos para ajustar la cabecera de la solicitud.
volver la cabeza a la información que hemos visto este acceso del navegador, sólo tenemos que copiar esto abajo
url = "https://www.sogou.com/"
#定义请求头信息
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36 FS'
}
#发起get请求
res = req.get(url, headers = headers)
JSON 4.post objeto de solicitud y aceptación
El código siguiente llama traducción Baidu de los datos de elementos de páginas kw en los datos "Hola", traducir y entonces obtenemos los resultados
import requests as req
#定义请求的url:百度翻译
url = "https://fanyi.baidu.com/sug"
#定义请求头信息
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36 FS'
}
#定义post请求需要的参数
data={'kw':'你好'}
#发起post请求
res = req.post(url, headers = headers, data=data)
print(res.json())
{'errno': 0, 'data': [{'k': '你好', 'v': '[nǐ hǎo] how do you do; how are you; hello;'}, {'k': '你好,陌生人', 'v': '网络 Hello Stranger; knowing me knowing you;'}, {'k': '你好吗', 'v': 'How are you; How are you doing; How do you do;'}]}
Se puede ver que esto es un conjunto de datos JSON, y cómo ponemos los elementos correspondientes antes y después de que el extracto de traducción fuera de él? 'Hola' se extrae fácilmente, sólo es necesario res.json()['data'][0]['k]'
que, entonces hello
tenemos que llegar a
if res.status_code == 200:
print("请求成功")
data = res.json() #转化成json数据
if data['errno'] == 0: #post请求回来的数据正常
print("响应成功")
k = data['data'][0]['k'] #输出返回数据的数据列表的第一个元素
v = data['data'][0]['v'].split(';')[-2]
print(k,'===',v)
Los resultados operativos
请求成功
响应成功
你好 === hello
~ Continuará