Python crawler series: comience en el suelo (1)

También escribí un blog sobre rastreadores antes, puede consultar:
registro de código de grupo de proxy de IP del rastreador

Python crawler crawler network novela

Práctica del rastreador de Python rastreando información

Vistas de página del experimento del rastreador de Python: genial

Rastreador (rastreo de páginas web, simulación de navegadores, configuración de tiempos de espera, solicitudes HTTP)

Evite gatear ilegalmente

  • Optimice su programa de vez en cuando para evitar interferencias con el funcionamiento normal del sitio web visitado
  • Al utilizar y difundir los datos rastreados, revise el contenido capturado. Si encuentra contenido sensible, como la privacidad del usuario, secretos comerciales, etc., debe detener el rastreo o la difusión a tiempo.

Clasificación de rastreadores en escenarios de uso

Reptil común

Una parte importante del sistema de rastreo, que captura una página completa de datos.

Rastreador de enfoque

Construido sobre la base de rastreadores generales. El rastreo es una parte específica de la página.

Rastreador incremental

Verifique el estado de las actualizaciones de datos en el sitio web. Rastrear solo el contenido actualizado más reciente del sitio web

Reptiles Anti-reptiles

Mecanismo anti-ascenso

Los sitios web del portal pueden evitar que los rastreadores rastreen los datos del sitio web mediante la formulación de estrategias o medios técnicos correspondientes.

Estrategia anti-anti-escalada

El programa rastreador puede descifrar el mecanismo anti-rastreo en el sitio web del portal mediante la formulación de estrategias o medios técnicos relevantes, a fin de obtener la información del sitio web del portal.

protocolo robots.txt

Acuerdo de caballeros. Especifica qué datos del sitio web pueden ser rastreados por los rastreadores y qué datos no pueden ser rastreados.

Puede ingresar /robots.txt después del nombre del sitio web para ver el acuerdo de robots del sitio web
Inserte la descripción de la imagen aquí

Encabezados de solicitud y encabezados de respuesta comunes

Encabezado de solicitud

Agente de usuario

La identidad del operador de la solicitud, como Google Chrome.

Conexión

Una vez completada la solicitud, ya sea para desconectarse o mantenerse conectado

Encabezado de respuesta

Tipo de contenido

El tipo de datos que el servidor responde al cliente.

módulo de solicitudes

Un módulo nativo basado en solicitudes de red en Python, que es muy poderoso, simple y rápido, y extremadamente eficiente.

作用:模拟浏览器发送请求

Pasos de uso:

  • URL especificada
  • Iniciar una solicitud
  • Obtener datos de respuesta
  • Almacenamiento persistente

descargar:pip install requests

ejemplo:

import requests

# 下载一个网页

url = 'http://www.linlida.com/0_646/'
# 模拟浏览器发送HTTP请求
response = requests.get(url)
response.encoding='gbk'
print(response.encoding)
# print(response.text)
# 持久化存储
with open('./requestsDemo.html', 'w', encoding='utf-8') as fp:
    fp.write(response.text)

efecto:
Inserte la descripción de la imagen aquí

Rastrear la página de resultados de búsqueda correspondiente a la entrada realizada por Sogou (simple recopilador de páginas web)

Código:

import requests
import random

# UA 伪装
# User-Agent(请求载体):门户网站的服务器会检测对于请求的载体身份表示,如果检测到请求的载体身份为某一款浏览器,当前的请求一定是正常的请求
user_agent_list=[
            'Mozilla/5.0(compatible;MSIE9.0;WindowsNT6.1;Trident/5.0)',
            'Mozilla/4.0(compatible;MSIE8.0;WindowsNT6.0;Trident/4.0)',
            'Mozilla/4.0(compatible;MSIE7.0;WindowsNT6.0)',
            'Opera/9.80(WindowsNT6.1;U;en)Presto/2.8.131Version/11.11',
            'Mozilla/5.0(WindowsNT6.1;rv:2.0.1)Gecko/20100101Firefox/4.0.1',
            'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER',
            'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)',
            'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0',
            'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.3.4000 Chrome/30.0.1599.101 Safari/537.36',
            'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36',
            'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60',
            'Opera/8.0 (Windows NT 5.1; U; en)',
            'Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50',
            'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.50',
            'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0',
            'Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10',
            'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2',
            'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36',
            'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
            'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16',
            'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/2.0 Safari/536.11',
            'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER',
            'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; LBBROWSER)',
            'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0',
            'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; SE 2.X MetaSr 1.0)',
            'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36'
        ]

if __name__ == '__main__':
    url = 'https://www.sogou.com/web'
    # 处理url携带参数,封装到字典中
    kw = input('输入搜索内容: ')
    param = {
    
    
        'query': kw
    }
    header = {
    
    
        'User-Agent': random.choice(user_agent_list)
    }
    # 对指定的url发起的请求对应的url是携带参数的,并且请求过程中处理了参数
    response = requests.get(url, param, headers=header)
    page_text = response.text
    fileName = kw + '.html'
    with open(fileName, 'w', encoding='utf-8') as fp:
        fp.write(response.text)
    print(fileName, '保存成功')

efecto:
Inserte la descripción de la imagen aquí

Traducción de Crack Baidu

Análisis: cada vez que ingresa contenido, la página se actualizará parcialmente. Después del análisis de la red, se encuentra que los sugs se pasan entre sí y se envía una solicitud ajax.
Inserte la descripción de la imagen aquí

Código:

import requests
import random
import json

user_agent_list=[
            'Mozilla/5.0(compatible;MSIE9.0;WindowsNT6.1;Trident/5.0)',
            'Mozilla/4.0(compatible;MSIE8.0;WindowsNT6.0;Trident/4.0)',
            'Mozilla/4.0(compatible;MSIE7.0;WindowsNT6.0)',
            'Opera/9.80(WindowsNT6.1;U;en)Presto/2.8.131Version/11.11',
            'Mozilla/5.0(WindowsNT6.1;rv:2.0.1)Gecko/20100101Firefox/4.0.1',
            'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER',
            'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)',
            'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0',
            'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.3.4000 Chrome/30.0.1599.101 Safari/537.36',
            'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36',
            'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60',
            'Opera/8.0 (Windows NT 5.1; U; en)',
            'Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50',
            'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.50',
            'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0',
            'Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10',
            'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2',
            'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36',
            'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
            'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16',
            'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/2.0 Safari/536.11',
            'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER',
            'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; LBBROWSER)',
            'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0',
            'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; SE 2.X MetaSr 1.0)',
            'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36'
        ]

if __name__ == '__main__':
    post_url = 'https://fanyi.baidu.com/sug'
    # post请求参数处理
    data = {
    
    
        'kw': 'cat'
    }
    header = {
    
    
        'User-Agent': random.choice(user_agent_list)
    }
    response = requests.post(post_url, data, headers=header)
    # 获取响应数据: json()方法返回的是obj对象 (如果确认响应数据是json类型的,才可以使用json()方法)
    page_json = response.json()
    print(page_json)
    # 持久化存储
    fp = open('./cat.json','w', encoding='utf-8');
    json.dump(page_json, fp=fp, ensure_ascii=False)
    print('cat.json保存成功')

Supongo que te gusta

Origin blog.csdn.net/qq_36171287/article/details/113761195
Recomendado
Clasificación