¿Quieres este beneficio? Usa Python para recopilar datos de chicas en sitios de citas

prefacio

Como dice el refrán, ¿es fácil para los hombres homosexuales que aprenden de nuestra profesión encontrar pareja?

Es casi el final del nuevo año, es hora de encontrar una novia

Encontré un sitio web aquí, tal vez puedas echarle un vistazo.

Si no necesita enviar una ola de beneficios individuales, también puede aprender cómo recopilar estos datos.

inserte la descripción de la imagen aquí

Entorno y Módulos

desarrollo ambiental

  • Pitón 3.8
  • Pycharm

uso del módulo

import parsel       --> pip install parsel
import requests     --> pip install requests
import csv
import re

instalar módulo

Amigos que no han instalado el módulo

win + R, ingrese cmd e ingrese el nombre del módulo de instalación del comando de instalación pip (si cree que la velocidad de instalación es lenta, puede cambiar la fuente del espejo doméstico)

Problemas de instalación del módulo:

  • Si instala un módulo de terceros de Python:
    1. Win + R, ingrese cmd, haga clic en Aceptar, ingrese el comando de instalación pip install nombre del módulo (solicitudes de instalación de pip) y presione Entrar
    2. Haga clic en Terminal en pycharm para ingresar el comando de instalación

  • Motivo del error de instalación:

  • Fallo 1: pip no es un comando interno
    Solución: establecer variables de entorno

  • Error 2: hay muchas
    soluciones rojas (tiempo de espera de lectura): debido a que se agotó el tiempo de espera de la conexión de red, debe cambiar la fuente del espejo

Universidad de Tsinghua: https://pypi.tuna.tsinghua.edu.cn/simple Alibaba
Cloud: https://mirrors.aliyun.com/pypi/simple/
Universidad de Ciencia y Tecnología de China https://pypi.mirrors. ustc.edu.cn /simple/
Universidad de Ciencia y Tecnología de Huazhong: https://pypi.hustunique.com/
Universidad de Tecnología de Shandong: https://pypi.sdutlinux.org/
Douban: https://pypi.douban. com/simple/
Ejemplo: pip3 install - i https://pypi.doubanio.com/simple/ nombre del módulo

  • Fallo 3: El cmd muestra que se ha instalado, o la instalación se ha realizado correctamente, pero aún no se puede importar en
    pycharm. El intérprete de python no está configurado

¿Cómo configurar el intérprete de python en pycharm?

  1. Seleccionar archivo (archivo) >>> configuración (configuración) >>> Proyecto (proyecto) >>> intérprete de python (intérprete de python)
  2. Haga clic en el engranaje, seleccione agregar
  3. Agregar ruta de instalación de python

¿Cómo instala pycharm los complementos?

  1. Seleccionar archivo (archivo) >>> configuración (configuración) >>> Complementos (complementos)
  2. Haga clic en Marketplace e ingrese el nombre del complemento que desea instalar. Por ejemplo: para el complemento de traducción, ingrese traducción / para el complemento de sinicización, ingrese chino
  3. Seleccione el complemento correspondiente y haga clic en instalar
  4. Después de que la instalación sea exitosa, aparecerá la opción para reiniciar pycharm, haga clic en Aceptar y el reinicio surtirá efecto.

proceso de pensamiento basico

1. Análisis de la fuente de datos:

  1. Requisitos claros:

Cuáles son los datos recopilados —> datos datos <página web estática>

en el código fuente de la página

inserte la descripción de la imagen aquí

Siempre que se obtengan todas las identificaciones, se puede recopilar toda la información de datos

inserte la descripción de la imagen aquí

Hay ID de URL de todas las páginas de detalles de las chicas.

2. Pasos de implementación del código:

  • Enviar petición
  • recuperar datos
  • Datos analíticos
  • guardar datos

Obtener todos los ID de la página de detalles:

  1. Enviar una solicitud, simular el navegador para enviar una solicitud de la dirección URL

inserte la descripción de la imagen aquí

  1. Obtenga datos, obtenga los datos de respuesta devueltos por el servidor
    Herramientas de desarrollo—> respuesta

  2. Analizar los datos y extraer el contenido de datos que queremos
    ID de la página de detalles —> UID
    Obtener información de la página de detalles

  3. Enviar una solicitud, simular el navegador para enviar una solicitud de la dirección URL de la
    inserte la descripción de la imagen aquí
    página de detalles de datos

  4. Obtenga datos, obtenga los datos de respuesta devueltos por el
    código fuente de la página web del servidor

  5. Analizando los datos, extrayendo la
    información básica de los datos que queremos

  6. Guarde los datos, guarde el contenido de los datos localmente, guarde la
    información básica de los datos en el formulario csv
    y guarde los datos de la foto, guarde la carpeta local

inserte la descripción de la imagen aquí


Código de implementación

Haga clic aquí para obtener el código fuente completo

# 导入数据请求模块
import requests
# 导入数据解析模块
import parsel
# 导入csv
import csv
# 导入正则
import re
f = open('data.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['昵称',
                                           '性别',
                                           '年龄',
                                           '身高',
                                           '体重',
                                           '出生日期',
                                           '生肖',
                                           '星座',
                                           '籍贯',
                                           '所在地',
                                           '学历',
                                           '婚姻状况',
                                           '职业',
                                           '年收入',
                                           '住房',
                                           '车辆',
                                           '照片',
                                           '详情页',
                                           ])
csv_writer.writeheader()

1. Envíe una solicitud, simule el navegador para enviar una solicitud de la dirección URL

  • Simule los encabezados de solicitud de los encabezados del navegador
    que se pueden copiar y pegar en las herramientas de desarrollo para
    evitar el rastreo
  • <Respuesta [200]> El
    código de estado 200 del objeto de respuesta indica que la solicitud es exitosa
for page in range(1, 11):
    # 请求链接
    url = f'https://********.com/valueApp/api/love/searchLoveUser?page={page}&perPage=12&sex=0'
    # 伪装模拟
    headers = {
    
    
        # User-Agent 用户代理, 表示浏览器基本信息
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
    }
    # 发送请求
    response = requests.get(url=url, headers=headers)
    print(response)

2. Obtenga los datos, obtenga los datos de respuesta devueltos por el servidor

Herramientas para desarrolladores —> respuesta

response.json () Obtener datos json de respuesta, tipo de datos de diccionario

3. Analizar los datos y extraer el contenido de los datos que queremos

    详情页ID ---> UID
    因为得到数据: 字典数据类型
    所以解析数据: 键值对取值 ---> 根据冒号左边的内容[键], 提取冒号右边的内容[值]
# for循环遍历, 把列表里面元素一个一个提取出来
for index in response.json()['data']['items']:
    #  https://love.19lou.com/detail/51593564  format 字符串格式化方法
    link = f'https://****.com/detail/{index["uid"]}'

4. Envíe una solicitud, simule el navegador para enviar una solicitud de la dirección URL

        https://love.19lou.com/detail/51593564  资料详情页url地址

5. Obtenga datos, obtenga los datos de respuesta devueltos por el servidor

código fuente de la página web

  • response.text Obtiene los datos de texto de respuesta y devuelve el tipo de datos de cadena
  • response.json () Obtener datos json de respuesta, tipo de datos de diccionario
html_data = requests.get(url=link, headers=headers).text

6. Analizar los datos y extraer el contenido de datos que queremos

Información básica

selector css: extraer datos según el contenido del atributo de la etiqueta
xpath: extraer datos según el nodo de la etiqueta
re regular

  1. Encontrará la etiqueta correspondiente a los datos es que
  2. Simplemente seleccione copiar

Convierta los datos de cadena html adquiridos <html_data> en un objeto analizable

selector = parsel.Selector(html_data)
name = selector.css('.username::text').get()
info_list = selector.css('.info-tag::text').getall()

.Indica el atributo del método de llamada

gender = info_list[0].split(':')[-1]
age = info_list[1].split(':')[-1]
height = info_list[2].split(':')[-1]
date = info_list[-1].split(':')[-1]

A juzgar por la cantidad de elementos info_list, cuando la cantidad de elementos es 4, significa que no hay una columna para el peso

if len(info_list) == 4:
    weight = '0kg'
else:
    weight = info_list[3].split(':')[-1]
info_list_1 = selector.css('.basic-item span::text').getall()[2:]
zodiac = info_list_1[0].split(':')[-1]
constellation = info_list_1[1].split(':')[-1]
nativePlace = info_list_1[2].split(':')[-1]
location = info_list_1[3].split(':')[-1]
edu = info_list_1[4].split(':')[-1]
maritalStatus = info_list_1[5].split(':')[-1]
job = info_list_1[6].split(':')[-1]
money = info_list_1[7].split(':')[-1]
house = info_list_1[8].split(':')[-1]
car = info_list_1[9].split(':')[-1]
img_url = selector.css('.page .left-detail .abstract .avatar img::attr(src)').get()

7. Guarde la imagen y obtenga los datos binarios de la imagen.

img_content = requests.get(url=img_url, headers=headers).content
with open('data\\' + new_name + '.jpg', mode='wb') as img:
    img.write(img_content)
print(dit)

Efecto

Sensible Baozi también puede hacer gráficos visuales por sí mismo.

inserte la descripción de la imagen aquí

Por fin

Xiaoyuan también recomienda un tutorial de caso para que los amigos de base cero aprendan aquí. Si está interesado, puede echar un vistazo. Si necesita el código fuente, también puede hacer clic en la tarjeta de presentación a continuación para obtenerlo ~

[Enseñanza de casos de Python] El caso práctico más adecuado para el aprendizaje basado en cero, práctica práctica, le permite convertirse en el próximo maestro de Python

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/yxczsz/article/details/128792917
Recomendado
Clasificación