El primer tutorial en 2021: tutorial introductorio sobre la captura de paquetes del rastreador de datos web

Tutorial introductorio de captura de datos web

Anteriormente, simplemente entendíamos la composición de una página y conocíamos la composición básica de una página web. A continuación, pasamos a la segunda etapa de aprendizaje, la captura de datos.

2.1 Antes de eso, necesitamos comprender un protocolo de rastreo. Al verificar el protocolo de rastreo, podemos saber quién puede rastrear en este sitio web y qué datos se pueden rastrear. Puede ver el protocolo de rastreo agregando /robots.txt después de la URL del sitio web principal. Por ejemplo: ingresamos http://baidu.com/robots.txt para obtener el protocolo de rastreo de Baidu, el primero en cada lista es el nombre del rastreador (nombre de usuario), y el siguiente Disallow significa que estas rutas de archivo no se pueden rastrear.

2.2 aprendizaje del código del rastreador:

Primero instale la biblioteca de solicitudes en la computadora e ingrese las solicitudes de instalación de pip en la consola para completar automáticamente la instalación.Hay un método get en la biblioteca de solicitudes para obtener el contenido de respuesta de una página específica.

Escribimos rastreadores, generalmente tres pasos

1. Busque el archivo, abra el navegador, busque las herramientas para desarrolladores, vea el código fuente de la página web y busque la ubicación de datos que deseo

En segundo lugar, el programa toma la página

Tres, análisis

En primer lugar, usamos las herramientas de desarrollo para encontrar que el contenido que queremos está en esa ubicación en la página web, y luego podemos hacer una solicitud a la página web y obtener el contenido de la respuesta de la página; busque User-Agent y Cookie en la herramienta de desarrollo para la copia de seguridad.

Importar la biblioteca de solicitudes

import requests #导入库

resp = requests.get(url='https://www.uisdc.com/',
				  headers={
    
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 Edg/87.0.664.75',
				  		 'Cookie': 'Hm_lvt_7aeefdb15fe9aede961eee611c7e48a5=1610174500; notLoginHasViewPages=2; Hm_lpvt_7aeefdb15fe9aede961eee611c7e48a5=1610174550'})

resp = request.get (url = URL, headers = {información de camuflaje en formato de diccionario, agregue las dos informaciones de camuflaje de uso común arriba de User-Agent y Cookie})

De esta manera, podemos obtener el contenido de la respuesta de esta página, imprimir el resp, generalmente podemos ver <Respuesta [200]>, lo que significa que podemos obtener el contenido de esta página normalmente. Si queremos ver el contenido específico, solo necesitamos Después de este objeto de página texto

resp = requests.get(url='https://www.uisdc.com/',
              headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 Edg/87.0.664.75',
                   'Cookie': 'Hm_lvt_7aeefdb15fe9aede961eee611c7e48a5=1610174500; notLoginHasViewPages=2; Hm_lpvt_7aeefdb15fe9aede961eee611c7e48a5=1610174550'})
print(resp.text)

Puede ver todo el código de esta página web, luego, después de obtener esta página, encontramos que el código es demasiado, los datos que necesitamos están deslumbrados en él, es difícil de ver de un vistazo, por lo que debemos ingresar al tercer paso, análisis.

Hay muchas formas de análisis, como ~ análisis de expresiones regulares, análisis del selector de CSS, análisis de XPath

  • Análisis regular

Probemos primero con el análisis regular. Si quiero obtener todos los títulos de los artículos en esta página, a través de las herramientas de desarrollo, descubrí que todo el contenido está bajo la etiqueta de título de la clase de título h2. Importé re, estudié la etiqueta del título cuidadosamente y encontré este El título está dentro de <h2> class = "title"> Contenido del título </h2>

import re

pattern = re.compile(r'class="title">(.*?)</h2>')
print(pattern.findall(resp.text))

Después de escribir tal regularidad, hice coincidir el código de la página web y obtuve el título.

  • Análisis de selector de CSS

Después de instalar la biblioteca bs4, podemos usar el selector de CSS para analizar

El selector css, el primer paso es el mismo que el normal. Cuando obtienes la página, el siguiente paso es diferente, porque es un selector de análisis. Primero debe ordenar todas las etiquetas en esta página, para que no se convierta en un desastre, por lo que el segundo El paso debe ser usar el método en el selector bs4 para convertir el contenido de la página en contenido que el selector pueda entender:

soup = bs4.BeautifulSoup(resp.text, 'html.parser')

Aquí, usamos la función incorporada de bs4 BeautifullySoup para analizar el texto resp.en contenido que pueda ser leído por bs4 con 'html.parser', y guardarlo con la variable soup.

Luego analice y descubra que el contenido del título está en la etiqueta h2 y que la clase de etiqueta h2 también se define como título.

soup = bs4.BeautifulSoup(resp.text, 'html.parser')
anchors = soup.select('h2.title')
print(anchors)

Utilizo la herramienta de búsqueda seleccione debajo de bs4 para encontrar todo h2 y la etiqueta h2 se define como la etiqueta del título

Después de imprimir y ejecutar, se encontró que se obtuvo un montón de datos, que también se mezclaron con etiquetas. Esta herramienta de búsqueda devolvió una lista de etiquetas. Podemos recorrer estas etiquetas y usar los atributos de texto de estas etiquetas para obtener el texto en las etiquetas. , De esta forma, obtén todos los títulos

soup = bs4.BeautifulSoup(resp.text, 'html.parser')
titles = soup.select('h2.title')
for title in titles:
    print(title.text)

Lo que hay que explicar aquí es que cuando tomamos la etiqueta, escribimos el párrafo ('h2.title') llamado selector de etiquetas. En el futuro, puede encontrar un tutorial sobre el selector de etiquetas para aprender en detalle, aquí selecc y selector de etiquetas Hay muchos otros métodos, así que no hablaré de los otros aquí, para no confundir a todos.

2.3 Persistencia de datos

No es suficiente que obtengamos los datos. También necesitamos escribirlos en un archivo para su preservación a largo plazo. Se puede usar en cualquier momento en el futuro. Hay muchas formas de escribir en Excel. Solo enseño una, para no confundir a todos, instalamos un xls Biblioteca, esta biblioteca tiene muy buena compatibilidad y buen rendimiento.

El archivo de Excel en sí es un libro de trabajo y un formulario es una hoja de trabajo. Escribimos cada cuadrícula llamada celda, así que después de instalar la biblioteca xls, el trabajo es muy simple. Importar biblioteca, crear libro de trabajo, crear formulario, escribir datos

soup = bs4.BeautifulSoup(resp.text, 'html.parser')
lists = soup.select('a.a_block')
print(lists)
for titles in lists:
    title = titles.select_one('h2.title').text
    nue = titles.select_one('p').text

Para escribir datos, cambié un poco el código anterior y obtuve un pequeño párrafo debajo del título, que es conveniente para nosotros escribir para sobresalir.

Primero importamos la biblioteca, creamos un libro de trabajo, creamos un libro de trabajo y le damos el nombre de formulario

import xlwt
wb =xlwt.Workbook()
sheet = wb.add_sheet('表单')

Crea un índice de celda:

sheet.write(0,0,'序号')
sheet.write(0,1,'标题')
sheet.write(0,2,'详情')

A continuación, solo necesitamos agregar los datos al tipo de celda.

wb =xlwt.Workbook()
sheet = wb.add_sheet('表单')

sheet.write(0,0,'序号')
sheet.write(0,1,'标题')
sheet.write(0,2,'详情')
a = 0

soup = bs4.BeautifulSoup(resp.text, 'html.parser')
lists = soup.select('a.a_block')
print(lists)
for titles in lists:
    title = titles.select_one('h2.title').text
    nue = titles.select_one('p').text
    lis_name = [title,nue]
    a += 1
    for index,name in enumerate(lis_name):
        sheet.write(a,index,name)
wb.save('页面.xls')

En este punto, los conceptos básicos de los rastreadores han terminado. Por lo general, los sitios web pequeños y sencillos pueden insertarse de esta manera para rastrear datos. A continuación, agregue algunas cosas fuera del esquema.

Uso de IP proxy

Cuando rastreamos datos, a menudo realizamos una gran cantidad de operaciones en poco tiempo. Por lo general, otros no son tontos y no pueden ser tontos si le permiten rastrear. A veces, la IP se bloqueará. En este momento, debemos usar la IP del proxy, luego el proxy. ¿Cómo usar ip?

De hecho, solo hay una diferencia, es decir, cuando hacemos una solicitud de obtención al principio, simplemente agregamos un atributo de proxies a la solicitud de obtención. Coloque nuestra dirección IP de proxy en proxies, y puede ser sin restricciones, esta dirección IP de proxy Debes ir a un sitio web profesional para comprarlo tú mismo. La propiedad intelectual nacional sigue siendo relativamente barata. A continuación, usaré el sitio web anterior para escribir un ejemplo como referencia.

resp = requests.get(url='https://www.uisdc.com/',
              headers={
    
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 Edg/87.0.664.75',
			 proxies={
    
    
                'https': f'http://ip:端口号'}
                   ) # 这样就ok了

Básicamente, otros no le darán datos de texto directamente, pero le darán un enlace. Si va a obtener este enlace, recibirá datos json. Necesitamos convertirlos y eliminarlos. Puede operarlos de acuerdo con el sitio web.

Supongo que te gusta

Origin blog.csdn.net/SaharaLater/article/details/112396354
Recomendado
Clasificación