Exploration des attractions populaires (Quanzhou)

1. Conception de robots d'indexation thématiques

1. Nom du robot d'indexation thématique

Nom: Escalade de points chauds en nid d'abeilles à Quanzhou

importer des demandes
depuis bs4 importer BeautifulSoup
importer des pandas en tant que pd
depuis les pandas importer DataFrame
ur1 = 'http: //www.mafengwo.cn/search/q.php? q =% E6% B3% 89% E5% B7% 9E & seid = 8517A6C2- 4C2D-453A-83F4-4C281B0E91E9 '# En-
têtes Web ouverts = (' User-Agent ':' Mozilla / 5.0 (Windows NT 6.3; Win64; x64) AppleWebKit / 537.36 (KHTML, comme Gecko) Chrome / 69.0.3497.100 Safari / 537.36 '} #
r = requests.get (ur1, headers = headers)
#Request website r.encoding = r.apparent_encoding # Unified encoding
data = r.text
soup = BeautifulSoup (data,' html.parser ') # Use "delicious Outil "Soup"
print (soup.prettify ()) # Afficher la structure du site Web
title = []
midlle = []
pour i dans soup.find_all (class _ = "title"): # Mettre les attractions populaires dans la liste vide
title.append (i .get_text (). strip ())
pour k dans soup.find_all (class _ = "middle"): # Placer le profil d'attraction dans la liste vide
midlle.append (k.get_text (). strip ())
data = [title, midlle]
print (data)

 

2. Analyse du contenu et des caractéristiques des données des robots d'exploration Web thématiques

Cette fois, le robot a principalement exploré les informations, le classement et les notes d'abeilles des attractions populaires de Quanzhou

3. Aperçu du schéma thématique de conception de robots d'indexation (y compris les idées de mise en œuvre et les difficultés techniques)

Idée de réalisation: obtenez la page HTML du site pittoresque populaire de Quanzhou et utilisez les demandes pour explorer les données, BeautifulSoup analyse la page et utilise des enregistrements pour stocker et lire les données

Difficultés techniques: exploration des données, nettoyage des données

Deuxièmement, les caractéristiques structurelles de l'analyse des pages thématiques

1. Caractéristiques structurelles de la page thématique

2. Analyse des pages HTML

Vérifiez le nom de l'attraction de la balise et trouvez que le titre est sous p class = 'title', et la note de l'abeille est sous la balise de police. 3. Programmation du robot d'indexation Web

Le corps principal du programme de robot doit inclure les parties suivantes, avec le code source et des commentaires plus détaillés, et fournir une capture d'écran du résultat de sortie après chaque partie du programme.

Troisièmement, l'exploration et la collecte de données

def get (url, list, num): 
    #Define a function to get information headers = ('user-agent': 'Mo + zilla / 5.0 (Windows; U; Windows NT 5.1; it; rv: 1.8.1.11) Gecko / 20071127 Firefox / 2.0.0.11 ') # Faire semblant d'être un robot ou il ne pourra pas explorer les informations de la page Web 
    
    r = requests.get (url, timeout = 30, headers = headers) 
    
    #Le temps pour envoyer la demande est de 30 s r.raise_for_status () 
    r.encoding = r. apparent_encoding 
    
    soup = BeautifulSoup (r.text, "html.parser") #html compiler 
   
    list1 = []    
    list2 = [] #Créez deux listes pour stocker les noms des attractions et des informations sur les évaluations des abeilles 
    
    list1 = soup.find_all ('p' , classe _ = 'title') 
    #Trouver des données avec une étiquette p list2 = soup.find_all ('font', color = "# 474747") #Trouver des données avec une police d'étiquette, color = "# 474747" 
    
    print ("{: ^ 10} \ t {: ^ 30} \ t {: ^ 10} \ t ".format ('Ranking', 'Attraction Name', 'Bee Ratings')) 
    
    pour i dans la plage (num):
        list.append ([i + 1, list1 [i] .string, list2 [i] .string]) 
        print ("{: ^ 10} \ t {: ^ 30} \ t {: ^ 10} \ t". format (i + 1, list1 [i] .string, list2 [i] .string)) #Ajouter des données au tableau de liste

2. Nettoyage et traitement des données
def check_file (file_path): 
    quanzhou = pd.DataFrame (pd.read_excel ('D: \ python \ quanzhou.xlsx')) 
    print ('\ n ==== La valeur vide de chaque colonne est la suivante: ====' ) 
    print (quanzhou.isnull ()) #Statistical null value 
    print (quanzhou.duplicated ()) #Find duplicate values 
    print (quanzhou.isna (). head ()) #Statistical missing value # Si le résultat est faux, ce n'est pas le cas 
    
    Impression de valeur nulle (quanzhou.describe ()) # Décrire les données

3. Visualisation et persistance des données

graphique par
défaut (): plt.rcParams ['font.sans-serif'] = ['SimHei'] #set font

filename = 'D: \ python \
quanzhou.xlsx ' colnames = ['rank', 'spot name', 'Numéro d'évaluation d'abeille']
df = pd.read_excel (nom de fichier)

X = df.loc [1: 8, 'Nom d'attraction']
Y = df.loc [1: 8, 'Numéro d'évaluation d'abeille']

plt.bar (X , Y)
plt.title ("Carte historique des points chauds de Quanzhou")
plt.show

def create_file (file_path, msg): 
    #Define a create folder and open the crawled resources view excel format view = r'D: \ python \ quanzhou.xlsx ' 
    df = pd.DataFrame (msg, columns = (' rank ',' Nom de l'attraction ',' Numéro d'évaluation de l'abeille ')) 
    df.to_excel (voir) 
    print (' Créer excel terminé ')

4. Code de programme complet

importez des demandes
depuis bs4 importez BeautifulSoup
importez des pandas comme pd
importez numpy comme np
importez scipy comme sp
depuis numpy importez genfromtxt
importez matplotlib
depuis pandas importez DataFrame
importez matplotlib.pyplot comme plt
depuis scipy.optimize importez lesssq

ur1 = 'http: //www.mafengwo.cn/search/q.php? q =% E6% B3% 89% E5% B7% 9E & seid = 8517A6C2-4C2D-453A-83F4-4C281B0E91E9' # Ouvrez les en-
têtes Web = { 'User-Agent': 'Mozilla / 5.0 (Windows NT 6.3; Win64; x64) AppleWebKit / 537.36 (KHTML, comme Gecko) Chrome / 69.0.3497.100 Safari / 537.36'} #
r = requests.get (ur1, headers = headers )
#Request website r.encoding = r.apparent_encoding # Unified encoding
data = r.text
soup = BeautifulSoup (data, 'html.parser') # Utilisez l'outil d'
impression "delicious soup" (soup.prettify ()) # Show website Structure
title = []
midlle = []
pour i dans soup.find_all (classe _ = "title"):
#Placez les attractions populaires dans la liste vide title.append (i.get_text (). Strip ())
pour k dans soup. find_all (class _ = "middle"): # Placer le profil d'attraction dans la liste
videmidlle.append (k.get_text (). strip ())
data = [title, midlle]
print (data)

def get (url, list, num):
#Define a function to get information headers = ('user-agent': 'Mo + zilla / 5.0 (Windows; U; Windows NT 5.1; it; rv: 1.8.1.11) Gecko / 20071127 Firefox / 2.0.0.11 ') # Faire semblant d'être un robot ou il ne pourra pas explorer les informations de la page Web

r = requests.get (url, timeout = 30, headers = headers)

#Le temps d'envoyer la demande est de 30 s r.raise_for_status ()
r.encoding = r. apparent_encoding

soup = BeautifulSoup (r.text, "html.parser")

list1 = []
list2 = [] #Créez deux listes pour stocker les noms des attractions et des informations sur les évaluations des abeilles

list1 = soup.find_all ('p', class_ = ' title ')
#Find data with label p list2 = soup.find_all (' font ', color = "# 474747") #Find data with label font, color = "# 474747"

print ("{: ^ 10} \ t {: ^ 30} \ t {: ^ 10} \ t ".format ('Ranking', 'Attraction Name', 'Bee Rating'))

for i in range (num):
list.append ([i + 1, list1 [i].chaîne, liste2 [i] .string])
print ("{: ^ 10} \ t {: ^ 30} \ t {: ^ 10} \ t" .format (i + 1, list1 [i] .string, list2 [i] .string)) #Data Ajouter à la liste des tableaux

def create_file (file_path, msg):
#Define a create folder and open the crawled resources view excel format view = r'D: \ python \ quanzhou.xlsx '
df = pd.DataFrame (msg, columns = (' rank ',' Nom de l'attraction ',' Numéro d'évaluation de l'abeille '))
df.to_excel (voir)
print (' Créer excel terminé ')

def check_file (file_path):
quanzhou = pd.DataFrame (pd.read_excel ('D: \ python \ quanzhou.xlsx'))
print ('\ n ==== La valeur vide de chaque colonne est la suivante: ====' )
print (quanzhou.isnull ()) #Statistical null value
print (quanzhou.duplicated ()) #Find duplicate values
print (quanzhou.isna (). head ()) #Statistical missing value # Si le résultat est faux, ce n'est pas le cas

Impression de valeur nulle (quanzhou.corr ()) # Coefficient de corrélation de deux variables
print (quanzhou.describe ()) #Imprimer le

graphique de
définition des données (): plt.rcParams ['font.sans-serif'] = [' SimHei '] #Set font

filename =' D: \ python \
quanzhou.xlsx ' colnames = [' Ranking ',' Attraction Name ',' Bee Ratings ']
df = pd.read_excel (filename)

X = df.loc [ 1: 8, 'Nom des attractions'
Y = df.loc [1: 8, 'Note des abeilles']

plt.bar (X, Y)
plt.title ("Histogramme des attractions populaires de Quanzhou")
plt.show

def main ():
list = []
url = "http://www.mafengwo.cn/search/q.php?q=%E6%B3%89%E5%B7%9E"
get (url, list, 8 )
create_file ('D: \ python \ quanzhou.xlsx', list)
check_file ('D: \ python \ quanzhou.xlsx')
chart ()
chart2 ()

principale()

Quatre,

1. Après avoir analysé et visualisé les données du sujet, quelles conclusions peut-on tirer?

Vous pouvez obtenir les données que vous souhaitez via python, ce qui peut économiser beaucoup de travail et améliorer l'efficacité.

2. Faites un simple résumé de l'achèvement de la tâche de conception du programme.

Grâce à cette mission, j'ai maîtrisé de nouvelles compétences, appris plus de connaissances et approfondi ma compréhension de python

 

 

Je suppose que tu aimes

Origine www.cnblogs.com/a1959711087/p/12720439.html
conseillé
Classement