Introducción y ejemplos de funcionamiento de la biblioteca de solicitudes del rastreador de Python

1. ¿Qué es un rastreador?

Los rastreadores web (también conocidos como arañas web, robots web, en la comunidad FOAF y, más a menudo, persecuciones web) son programas o scripts que rastrean automáticamente información en la World Wide Web de acuerdo con ciertas reglas. Otros nombres menos utilizados incluyen hormigas, indexación automática, simuladores o gusanos.

De hecho, popularmente hablando, se trata de obtener los datos que se desea en la página web a través del programa, que consiste en capturar automáticamente los datos.

Puede arrastrarse hasta las imágenes de las chicas y los videos que desea ver. . Espere los datos que desea rastrear, siempre que pueda acceder a los datos a través del navegador, puede obtenerlos a través del rastreador

En segundo lugar, la naturaleza de los rastreadores

Simular el navegador para abrir la página web y obtener la parte de los datos que queremos en la página web.

El proceso de abrir una página web
en el navegador : cuando ingresa la dirección en el navegador, el host del servidor se encuentra a través del servidor DNS y se envía una solicitud al servidor. Después de analizar el servidor, el resultado se envía al navegador del usuario, incluido el contenido del archivo como html, js, css, etc. , El navegador lo analiza y finalmente presenta el resultado que el usuario ve en el navegador

Por tanto, el resultado del navegador que ve el usuario está compuesto por código HTML, nuestro rastreador es obtener estos contenidos, analizando y filtrando el código html podemos obtener los recursos (texto, imagen, vídeo ...) que queremos de él.

Tres, el proceso básico del rastreador

Iniciar una solicitud Iniciar una solicitud
al sitio de destino a través de la biblioteca HTTP, es decir, enviar una Solicitud. La solicitud puede contener encabezados adicionales y otra información, esperando que el servidor responda

Obtener el contenido de la respuesta
Si el servidor responde normalmente, obtendrá una Respuesta. El contenido de la respuesta es el contenido de la página que se va a obtener. El tipo puede ser HTML, cadena Json, datos binarios (imagen o video), etc.

Analizar el contenido El contenido
obtenido puede ser HTML, que se puede analizar mediante expresiones regulares, bibliotecas de análisis de páginas, puede ser Json, que se puede convertir directamente al análisis de objetos Json, pueden ser datos binarios, que se pueden guardar o procesar posteriormente

Guardar datos Hay
varias formas de guardar, puede guardar como texto, también puede guardar en una base de datos o guardar un archivo en un formato específico

Cuatro, que son las solicitudes

Las solicitudes están escritas en lenguaje Python basado en urllib, utilizando la biblioteca HTTP del protocolo de código abierto con licencia de Apache2.
Si ha leído el artículo anterior sobre el uso de la biblioteca urllib, encontrará que urllib sigue siendo muy inconveniente y las solicitudes son mejores que Urllib es más conveniente y puede ahorrarnos mucho trabajo. (Después de usar solicitudes, básicamente no desea usar urllib.) En una palabra, las solicitudes son la biblioteca HTTP más simple y fácil de usar implementada por Python. Se recomienda que los rastreadores usen la biblioteca de solicitudes.

Después de que python se instala de forma predeterminada, el módulo de solicitudes no se instala y debe instalarse por separado a través de pip

Cinco, el conocimiento básico de la biblioteca de solicitudes

Inserte la descripción de la imagen aquí
Obtenemos el objeto devuelto llamando al método en la biblioteca Request. Incluye dos objetos, el objeto de solicitud y el objeto de respuesta.

El objeto de solicitud es la URL que queremos solicitar y el objeto de respuesta es el contenido devuelto, como se muestra en la figura:
Inserte la descripción de la imagen aquí

Seis, la instalación de Solicitudes

1. Se recomienda encarecidamente que utilice pip para instalar: solicitudes de insrall de pip

2. Instalación de Pycharm: archivo- "configuración predeterminada-" intérprete del proyecto- "búsqueda de solicitudes-" paquete de instalación- "ok

Seven, el ejemplo de funcionamiento de la biblioteca de solicitudes

1. Rastreo del marco de rastreo común de productos básicos de Jingdong

import requests
url = "https://item.jd.com/2967929.html"
try:
    r = requests.get(url)
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    print(r.text[:1000])
except:
    print("爬取失败!")

2. Rastreo de productos de Amazon: modificando el campo de encabezados, simulando un navegador para iniciar una solicitud al sitio web.

import requests
url="https://www.amazon.cn/gp/product/B01M8L5Z3Y"
try:
    kv = {'user-agent':'Mozilla/5.0'}
    r=requests.get(url,headers=kv)
    r.raise_for_status()
    r.encoding=r.apparent_encoding
    print(r.status_code)
    print(r.text[:1000])
except:
    print("爬取失败")

3. Envío de palabras clave de búsqueda de Baidu / 360: modificar parámetros para enviar palabras clave

Interfaz de palabras clave de Baidu: http://www.baidu.com/s?wd=keyword
360 interfaz de palabras clave: http://www.so.com/s?q=keyword

import requests
url="http://www.baidu.com/s"
try:
    kv={'wd':'Python'}
    r=requests.get(url,params=kv)
    print(r.request.url)
    r.raise_for_status()
    print(len(r.text))
    print(r.text[500:5000])
except:
    print("爬取失败")

4. Rastreo y almacenamiento de imágenes en red, combinado con el uso de operaciones de archivos y biblioteca del sistema operativo

import requests
import os
url="http://tc.sinaimg.cn/maxwidth.800/tc.service.weibo.com/p3_pstatp_com/6da229b421faf86ca9ba406190b6f06e.jpg"
root="D://pics//"
path=root + url.split('/')[-1]
try:
    if not os.path.exists(root):
        os.mkdir(root)
    if not os.path.exists(path):
        r = requests.get(url)
        with open(path, 'wb') as f:
            f.write(r.content)
            f.close()
            print("文件保存成功")
    else:
        print("文件已存在")
except:
    print("爬取失败")

Finalmente: manejo de excepciones

Cuando no esté seguro de lo que sucederá, intente usar try ... excepto para capturar todas las solicitudes de excepción:

import requests
from requests.exceptions import ReadTimeout,HTTPError,RequestException

try:
    response = requests.get('http://www.baidu.com',timeout=0.5)
    print(response.status_code)
except ReadTimeout:
    print('timeout')
except HTTPError:
    print('httperror')
except RequestException:
    print('reqerror')

Supongo que te gusta

Origin blog.csdn.net/xieminglu/article/details/109270305
Recomendado
Clasificación