Grimpez sur la liste montante du chien cool

1. Explorez la liste montante du chien cool, transformez le chanteur et sa chanson et sa durée en tableau

Idée: explorer et analyser les informations de la page, créer un tableau Excel

Difficultés techniques: analyser le code source

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

2. Recherchez les balises correspondant au chanteur, au nom et à la durée du morceau dans le code source et utilisez find_all pour parcourir

Trois 1: Code:

from bs4 import BeautifulSoup
 import request demandes
 import time
 import xlwt
 # 创建 Excel 存储 数据
class Spider:
     def  __init__ (self): 
        self.workbook, self.worksheet = self.create_excel () 
        self.nums = 1 def create_excel (self): 
        workbook = xlwt.Workbook (encoding = ' utf-8 ' ) 
        feuille = workbook.add_sheet ( ' Sheet1 ' ) 
        titre = [ '

    Rang ' ' artiste et titre ' ' temps de jeu ' ]
         pour index, title_data dans l'enumerate (titre): 
            worksheet.write (0, index, title_data) 
        retourner le classeur, la feuille de travail 

    DEF get_html (auto, URL): 
        têtes = { ' Mozilla / 5.0 (Windows NT 10.0, le WOW64) AppleWebKit / 537,36 (KHTML, comme le Gecko) Chrome / Safari 78.0.3904.108 / 537,36 ' }   # - tête demande crawler 
        réponse = requests.get (URL)
         SI response.status_code == 200 est :   #Si la valeur de l'état de la demande est 200, sortie
            retour response.text
         l'autre :
             retour  ' anormale ' 


    DEF get_data (Self, HTML): 
        soupe = le BeautifulSoup (HTML, ' lxml ' )   # avec bibliothèque BeautifulSuop analyse la page se 
        classe = soup.find_all ( ' durée ' , le class_ = " pc_temp_num " )   # rang des 
        noms = soup.find_all ( ' A ' , class_ = " pc_temp_songname " )   # chanteur et chanson 
        fois = (soup.find_all' Span ' , le class_ = " pc_temp_time " )   # temps jeu 

        # informations d' impression 
        pour R & lt, n-, T dans ZIP (rangs, noms, Times):   # fonction ZIP est utilisé 
            R & lt r.get_text = () Remplacer (. ' \ N ' , '' ) .replace ( ' \ t ' , '' ) .replace ( ' \ r ' , '' ) 
            n = n.get_text () 
            t = t.get_text (). replace ( ' \ n ' ,'' ) .replace ( ' \ t ' , '' ) .replace ( ' \ r ' , '' ) 
            data = { ' 排名' : r, ' 歌名 - 歌手' : n, ' 播放 时间' : t} 
            self.worksheet.write (self.nums, 0, str (r)) 
            self.worksheet.write (self.nums, 1 , str (n)) 
            self.worksheet.write (self.nums, 2 , str (t) ) 
            self.nums + = 1 def main (self,):
        urls = [

    ' Https://www.kugou.com/yy/rank/home/1-6666.html?from=rank ' .format (STR (I)) pour I dans Range (. 1, 24)]   # boucle 
        pour URL dans les URL:
             Imprimer (URL) 
            HTML = self.get_html (URL) 
            self.get_data (HTML) 
            (le time.sleep . 1)   # pause lS 
        self.workbook.save ( ' DATA.XLS ' ) # après tout le stockage d'informations stockées Pour data.xls 


si  __name__ == ' __main__ ' :   #Le programme principal main () 
    spider = Spider () 
    spider.main () est appelé lorsque le programme est exécuté

Résultat de sortie:

Formulaire Excel correspondant:

2. Nettoyez et traitez les données: (1) Il n'y a pas de lignes et de colonnes non valides dans le tableau, ignorez cette étape.

(2) Traitement de la valeur en double

importer des pandas en tant que pd 
biaosheng = pd.DataFrame (pd.read_excel ( ' data.xls ' )) 
biaosheng.duplicated ()

Le résultat:

Parce qu'il existe des valeurs en double, utilisez la méthode drop_duplicates pour supprimer les valeurs en double

importer des pandas en tant que pd 
biaosheng = pd.DataFrame (pd.read_excel ( ' data.xls ' )) 
biaosheng = biaosheng.drop_duplicates () 
biaosheng

Le résultat:

(3) Il n'y a pas de valeur nulle ou de valeur manquante, ignorez cette étape

(4) Traitement de valeur nulle (le format est cohérent, aucun espace n'affecte les données, ignorez cette étape)

(5) Traitement des valeurs aberrantes (chansons de longueur similaire, sautez cette étape)

3. Analyse de texte (ne sera pas)

4. Analyse et visualisation des données: en raison de trop de données, les cinq premiers de la liste sont analysés ici. Analyser la relation entre la durée des chansons chantées par les cinq meilleurs chanteurs (indiquée en secondes) et le classement, qui se reflète sous la forme d'un histogramme

import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.family']=['sans-serif']
plt.rcParams['font.sans-serif']=['SimHei']
plt.bar([346,235,189,242,250],[1,2,3,4,5])
plt.legend()
plt.show()

Le résultat:

5. Analyser le coefficient de corrélation

importez les pandas sous forme de pd
 importez scipy.stats sous forme de stats 
x = [346,235,189,242,250 ] 
y = [1,2,3,4,5 ] 
stats.pearsonr (x, y)

Résultat:    le premier nombre ici est le coefficient de corrélation.

Dessin

importer seaborn en tant que sns 
biaosheng = pd.DataFrame (pd.read_excel ( ' data.xls ' )) 
sns.regplot (biaosheng.play time, biaosheng.rank)

Le résultat:

6. Persistance des données (non apprise)

4.1 Il n'y a pas de lien particulier entre la durée du morceau et le classement.

2. Cette analyse de données intègre l'analyse de données python. Visualisation de données python. Robot d'indexation Web et d'autres parties, avec plus de contenu, car il n'est pas qualifié, vous devez tourner le livre pour terminer cette tâche, et il existe de nombreuses parties du livre qui ne sont pas Oui, je cherche sur Baidu depuis longtemps pour savoir comment utiliser le code pour réaliser certaines fonctions. Après cet exercice, je comprends la nature ésotérique du python. Je travaillerai plus dur pour apprendre le python et essayer de me rendre plus fort.

 

Je suppose que tu aimes

Origine www.cnblogs.com/lsctj/p/12758158.html
conseillé
Classement