¡Cómo utilizar el rastreador de Python para rastrear datos en solo seis pasos!

Rastrear datos con el rastreador de Python es realmente fácil , solo necesitas dominar estos seis pasos y tampoco es complicado. Solía ​​pensar que gatear era difícil, pero una vez que comencé , aprendí a gatear en menos de una hora.

Python sube seis escalones

Paso 1: Instale la biblioteca de solicitudes y la biblioteca BeautifulSoup:

La escritura de las dos bibliotecas en el programa es así:

 import requests
from bs4 import BeautifulSoup

Ya que estoy usando pycharm para la programación en Python. Entonces hablaré sobre cómo instalar estas dos bibliotecas en pycharm . En las opciones de archivo de la página principal, busque Configuración. Obtenga más información sobre el intérprete del proyecto. Luego, en el cuadro seleccionado, haga clic en el signo + en el paquete de software para instalar el complemento de consulta. Probablemente sea más fácil comenzar con hxd que tiene instalado un complemento del compilador. La situación específica se muestra en la siguiente figura.

Paso 2: obtenga los encabezados y las cookies que requiere el rastreador:

Escribí un programa de rastreo que rastrea las búsquedas frecuentes en Weibo. Usémoslo aquí como ejemplo. La obtención de encabezados y cookies es necesaria para un programa rastreador , que determina directamente si el programa rastreador puede encontrar con precisión la ubicación de la página web para rastrear.

Primero, ingrese a la página de búsqueda activa en Weibo y presione F12, y aparecerá la parte de diseño en lenguaje js de la página web. Como se muestra abajo. Busque la sección Red en la página web. Luego presione Ctrl+R para actualizar la página. Si la información del archivo ya está allí, no es necesario actualizarla, por supuesto, no hay problema si la actualiza. Luego, navegamos por la parte Nombre, buscamos el archivo que queremos rastrear, hacemos clic con el botón derecho del mouse, seleccionamos copiar y copiamos la URL de la página web. Como en la imagen de abajo.

Después de copiar la URL, ingresamos a una página web. Convierta los comandos curl en código. Esta página web puede generar automáticamente encabezados y cookies según la URL que copió, como se muestra a continuación. Simplemente copie el encabezado y las cookies generados y péguelos en el programa.

#爬虫头数据
cookies = {
    'SINAGLOBAL': '6797875236621.702.1603159218040',
    'SUB': '_2AkMXbqMSf8NxqwJRmfkTzmnhboh1ygvEieKhMlLJJRMxHRl-yT9jqmg8tRB6PO6N_Rc_2FhPeZF2iThYO9DfkLUGpv4V',
    'SUBP': '0033WrSXqPxfM72-Ws9jqgMF55529P9D9Wh-nU-QNDs1Fu27p6nmwwiJ',
    '_s_tentry': 'www.baidu.com',
    'UOR': 'www.hfut.edu.cn,widget.weibo.com,www.baidu.com',
    'Apache': '7782025452543.054.1635925669528',
    'ULV': '1635925669554:15:1:1:7782025452543.054.1635925669528:1627316870256',
}
headers = {
    'Connection': 'keep-alive',
    'Cache-Control': 'max-age=0',
    'Upgrade-Insecure-Requests': '1',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.6241 SLBChan/25',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'Sec-Fetch-Site': 'cross-site',
    'Sec-Fetch-Mode': 'navigate',
    'Sec-Fetch-User': '?1',
    'Sec-Fetch-Dest': 'document',
    'Accept-Language': 'zh-CN,zh;q=0.9',
}
params = (
    ('cate', 'realtimehot'),
)

Cópielo en el programa así. Este es el encabezado de solicitud para búsquedas activas en Weibo.

Paso 3: Obtenga la página web:

Después de obtener el encabezado y la cookie, podemos copiarlos en nuestro programa. Después de eso, utilice la solicitud para obtener la página web.

#获取网页
response = requests.get('https://s.weibo.com/top/summary', headers=headers, params=params, cookies=cookies)

Paso 4: analiza la página web :

En este momento, debemos regresar a la página web. También presione F12 y busque la sección Elementos de la página web. Utilice el cuadro pequeño con una flecha en la esquina superior izquierda, como se muestra a continuación, y haga clic en el contenido de la página web. En este momento, la página web mostrará automáticamente el código correspondiente a la parte de la página web que obtuvo a la derecha. .

Como se muestra en la imagen de arriba, después de encontrar el código de la página web de la parte de la página que queremos rastrear , colocamos el mouse sobre el código, hacemos clic derecho y lo copiamos en la parte del selector . Como se muestra en la imagen de arriba.

Paso 5: Analiza la información obtenida y simplifica la dirección:

De hecho, el selector que acaba de copiar equivale a la dirección almacenada en la parte correspondiente de la página web. Dado que lo que necesitamos es un tipo de información de la página web, necesitamos analizar y extraer la dirección obtenida. Por supuesto, no es imposible usar simplemente esa dirección, pero sólo puedes obtener esa parte del contenido en la página web que seleccionaste.

#pl_top_realtimehot > table > tbody > tr:nth-child(1) > td.td-02 > a
#pl_top_realtimehot > table > tbody > tr:nth-child(2) > td.td-02 > a
#pl_top_realtimehot > table > tbody > tr:nth-child(9) > td.td-02 > a

Estas son las tres direcciones que obtuve, se puede encontrar que las tres direcciones tienen muchas similitudes, la única diferencia es la parte tr. Dado que tr es una etiqueta de página web, la siguiente parte es su parte complementaria, que es el selector de subcategorías. Se puede inferir que este tipo de información se almacena en una subclase de tr, si extraemos información directamente de tr podemos obtener toda la información correspondiente a esta parte. Entonces la dirección refinada es:

#pl_top_realtimehot > table > tbody > tr > td.td-02 > a

Este proceso probablemente lo manejará mejor hxd, que tiene cierto conocimiento de lenguajes similares a js. Pero no importa si no tienes una base en lenguajes tipo js. El paso principal es mantener las mismas partes. Pruébalo poco a poco y siempre lo conseguirás.

Paso 6: rastrear contenido y limpiar datos

Una vez completado este paso, podemos rastrear los datos directamente. Utilice una etiqueta para almacenar el elemento similar a una dirección extraído anteriormente. La etiqueta incorporará el contenido web que queremos obtener.

#爬取内容
content="#pl_top_realtimehot > table > tbody > tr > td.td-02 > a"

Después de eso, necesitamos sopa y texto para filtrar información innecesaria, como el lenguaje js, para eliminar la interferencia de dicho lenguaje en la lectura de la información de la audiencia. De esta manera, rastreamos la información con éxito.

fo = open("./微博热搜.txt",'a',encoding="utf-8")
a=soup.select(content)
for i in range(0,len(a)):
    a[i] = a[i].text
    fo.write(a[i]+'\n')
fo.close()

Guardé los datos en una carpeta, por lo que habrá operaciones de escritura causadas por wirte . Depende del lector dónde quiere guardar los datos o cómo quiere utilizarlos.

Ejemplos de código para rastrear búsquedas activas en Weibo y mostrar resultados:

import os
import requests
from bs4 import BeautifulSoup
#爬虫头数据
cookies = {
    'SINAGLOBAL': '6797875236621.702.1603159218040',
    'SUB': '_2AkMXbqMSf8NxqwJRmfkTzmnhboh1ygvEieKhMlLJJRMxHRl-yT9jqmg8tRB6PO6N_Rc_2FhPeZF2iThYO9DfkLUGpv4V',
    'SUBP': '0033WrSXqPxfM72-Ws9jqgMF55529P9D9Wh-nU-QNDs1Fu27p6nmwwiJ',
    '_s_tentry': 'www.baidu.com',
    'UOR': 'www.hfut.edu.cn,widget.weibo.com,www.baidu.com',
    'Apache': '7782025452543.054.1635925669528',
    'ULV': '1635925669554:15:1:1:7782025452543.054.1635925669528:1627316870256',
}
headers = {
    'Connection': 'keep-alive',
    'Cache-Control': 'max-age=0',
    'Upgrade-Insecure-Requests': '1',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.6241 SLBChan/25',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'Sec-Fetch-Site': 'cross-site',
    'Sec-Fetch-Mode': 'navigate',
    'Sec-Fetch-User': '?1',
    'Sec-Fetch-Dest': 'document',
    'Accept-Language': 'zh-CN,zh;q=0.9',
}
params = (
    ('cate', 'realtimehot'),
)
#数据存储
fo = open("./微博热搜.txt",'a',encoding="utf-8")
#获取网页
response = requests.get('https://s.weibo.com/top/summary', headers=headers, params=params, cookies=cookies)
#解析网页
response.encoding='utf-8'
soup = BeautifulSoup(response.text, 'html.parser')
#爬取内容
content="#pl_top_realtimehot > table > tbody > tr > td.td-02 > a"
#清洗数据
a=soup.select(content)
for i in range(0,len(a)):
    a[i] = a[i].text
    fo.write(a[i]+'\n')
fo.close()

Supongo que te gusta

Origin blog.csdn.net/Everly_/article/details/133138470
Recomendado
Clasificación