¡Rastrea el sitio web de música de Kugou y obtén los 500 títulos de canciones principales de la lista!

Rastrear datos de red

1.1 Primero lea el sitio web`

https: //www.kugou.com/yy/rank/home/1-6666.html? from = rank`

1.2 Defina la parte de texto del código HTML seleccionado con beautifulsoup:

def explica_HTML (mi lista, html): 
    soup = BeautifulSoup (html, 'html.parser') 
    songs = soup.select ('div.pc_temp_songlist> ul> li> a') 
    ranks = soup.select ('span.pc_temp_num') 
    times = soup.select ('span.pc_temp_time') 
    para rango, canción, tiempo en zip (rangos, canciones, tiempos): 
         data = [ 
             rank.get_text (). strip (), 
             song.get_text (). split (" - ") [1], 
             song.get_text (). Split (" - ") [0], 
             time.get_text (). Strip () 
         ] 
         mylist.append (data) 
12345678910111213

## Para que los resultados impresos sean más hermosos, el formato de datos de la impresión debe ajustarse:

def print_HTML (mylist): 
    para i en el rango (500): 
        x = mylist [i] 
        with open ("D: \ Anew \ kugou.txt", 'a', encoding = 'UTF-8') como f: 
            f .write ("{0: <10} \ t {1: {4} <25} \ t {2: {4} <20} \ t {3: <10} \ n" .format (x [0] , x [1], x [2], x [3], chr (12288))) 
12345

Para evitar fallas de rastreo causadas por una velocidad de rastreo rápida, la función time.sleep (1) está configurada para prevenir los riesgos anteriores.

1.4 Los resultados del rastreo se muestran a continuación:

1.5 Visualización de código

importar solicitudes 
desde bs4 importar BeautifulSoup 
tiempo de importación 

def get_HTML (url): 
    headers = { 
        "user-agent": "Mozilla / 5.0 (Windows NT 10.0; WOW64) AppleWebKit / 537.36 (KHTML, como Gecko) Chrome / 72.0.3626.81 Safari / 537.36 ", 
        " referer ":" https://www.kugou.com/yy/rank/home/1-6666.html?from=rank " 
        } 
    intente: 
        r = request.get (url, headers = headers) 
        r .raise_for_status () 
        r.encoding = r.apparent_encoding 
        return r.text 
    excepto: 
        return "" 

def explica_HTML (mylist, html): 
    soup = BeautifulSoup (html, 'html.parser')
    canciones = soup.select ('div.pc_temp_songlist> ul> li> a') 
    ranks = soup.select ('span.pc_temp_num') 
    times = soup.select ('span.pc_temp_time') 
    para rango, canción, tiempo en zip (rangos, canciones, tiempos): 
         data = [ 
             rank.get_text (). strip (), 
             song.get_text (). split ("-") [1], 
             song.get_text (). split ("-") [ 0], 
             time.get_text (). Strip () 
         ] 
         mylist.append (data) 


def print_HTML (mylist): 
    for i in range (500): 
        x = mylist [i] 
        with open ("D: \ Anew \ kugou. json ", 'a', encoding = 'UTF-8') como f: 
            f.write ("{0: <10} \ t {1: {4} <25} \ t {2: {4 } <20} \ t {3: <10} \ n ".format (x [0], x [1], x [2], x [3], chr (12288))) 
          

if __name__ == '__main__ ': 
    url_0 =' http: //www.kugou.com / aa / rank / home / ' 
    url_1 =' -8888.html '
    mylist = [] 
    con open ("D: \ Anew \ kugou.json", 'a', encoding = "UTF-8") como f: 
        f.write ("{0: <10} \ t {1: { 4} <25} \ t {2: {4} <20} \ t {3: <10} \ n ".format (" 排名 "," 歌曲 "," 歌手 "," 时间 ", chr (12288) )) 
    para j en el rango (1,24): 
        url = url_0 + str (j) + url_1 
        html = get_HTML (url) 
        Explique_HTML (mylist, html) 
    print_HTML (mylist) 
    time.sleep (1) 
123456789101112131415161718192021222324252627282930313502394034

1.6 El documento antes de la transcodificación json debe ser

La pantalla en la herramienta json de análisis en línea debe ser:

El código de verificación se muestra de la siguiente manera al ejecutar el código:

con open ("D: //Anew//Kugou.json", 'r', encoding = "utf-8") como rdf: 
    json_data = json.load (rdf) 
    print ('数据 展示 :', json_data) 
123

Genere archivos CSV mediante programación y conviértalos a formato JSon

Codificar información en forma de matriz

import csv 
test = [["Nombre", "Sexo", "Ciudad natal", "Departamento"], 
["Zhang Di", "Hombre", "Chongqing", "Departamento de informática"], 
["Lambo", "Hombre", "Jiangsu", "Departamento de ingeniería de comunicaciones"], 
["Huang Fei", "Hombre", "Sichuan", "Departamento de Internet de las cosas"], 
["Deng Yuchun", "Mujer", "Shaanxi", " Departamento de Ciencias de la Computación "], 
[" Zhou Li "," 女 "," Tianjin "," Departamento de Arte "], 
[" Li Yun "," 女 "," Shanghai "," Departamento de Idiomas Extranjeros "] 
] 
con abierto ('信息
    Input.csv ',' w ', encoding = "utf8") como archivo: csvwriter = csv.writer (archivo, lineterminator =' \ n ') 
    csvwriter.writerows (prueba) 
123456789101112

2.2 conversión de código csv a formato json

importar csv, json 

csvfile = open ('D: \\ Anew \\ test.csv', 'r') 
jsonfile = open ('D: \\ Anew \\ test.json', 'w') 

nombres de campo = ('姓名 ',' 性别 ',' 籍贯 ',' 系 别 ') 
reader = csv.DictReader (csvfile, fieldnames) 
para la fila en el lector: 
    json.dump (row, jsonfile) 
    jsonfile.write (' \ n ') 
12345678910

Dado que el archivo json tiene su propio efecto de cifrado, debe encontrar una herramienta de verificación de formato json en Internet. Esta vez se utiliza la herramienta BEJSON y el diagrama de visualización de verificación es el siguiente:

2.3 Consultar información sobre niñas en archivos

importar json 
con open ('D: \\ Anew \\ 名单 .json', 'r') como f: 
    para la línea en f.readlines (): 
        línea = json.loads (línea) 
        if (línea ['性别'] == '女'): 
            imprimir (línea) 
123456

Conversión de archivos en formato XML y JSon

3.1 (1) Lea el siguiente archivo de formato XML, el contenido es el siguiente:

<? xml version = ”1.0” encoding = ”gb2312”> <Libro> <Título del libro> Un sueño de mansiones rojas

Haga clic aquí para obtener el código completo del proyecto

 

Supongo que te gusta

Origin blog.csdn.net/weixin_43881394/article/details/108996831
Recomendado
Clasificación