Acquisition de données et visualisation des

En écrivant robots d' exploration, pour atteindre l'indice de qualité de l' air site IQA région et la période ont été acquises, et visualiser les données
Procédure:

  • installation Pyspider en
    utilisant la ligne de commande installée dans l'anaconda invite:
    Insérer ici l'image Description

  • Lorsque vous êtes invité à mettre à niveau, puis suivez les instructions pour effectuer
    Insérer ici l'image Description

  • PhantomJS télécharger et configurer les variables d'environnement
    peuvent être effectuées dans l'URL suivante pour télécharger
    https://phantomjs.org/download.html
    Insérer ici l'image Description
    Insérer ici l'image Description
    5. La ligne de commande début pyspider
    la commande figure s'il y a un bon départ
    Insérer ici l'image Description

  • Si, version python 3.7 ci - dessus, le déclassement proposé, car il y aura conflit linguistique
    dans la ligne de commande, entrez la commande suivante:
    PIP WsgiDAV == Uninstall 2.4.1

  • Après un démarrage réussi par adresse par défaut: http: // localhost: 5000 / pour accéder à l'interface Web d'araignée
    et cliquez sur le créer un nouveau projet peut créer un nouvel emploi reptile
    Insérer ici l'image Description
    après la figure que je veux aborder est le crawling d'adresse, remplir les informations cliquez sur Créer

  • Peur d'entrer dans une interface écrite du projet:
    Insérer ici l'image Description
    la gauche est le code interface de débogage, le droit est le résultat de l' exécution du code, cliquez sur la course à exécuter, puis modifiez le code à chaque fois que vous devez enregistrer (enregistrer)

  • Collecte des données
    Sélectionnez cette option pour explorer l'url
    Insérer ici l'image Description
    cliquez sur le bouton triangle sur le côté droit
    Insérer ici l'image Description
    parce que l'URL est ce que nous avons besoin, il est donc nécessaire d'url modifier obtenir des expressions
    cliquez sur Activer aide du sélecteur de css, puis cliquez sur les données que vous souhaitez obtenir, vous pouvez générer une expression d'extraction de données de réponse formule:
    Insérer ici l'image Description
    cliquez sur la flèche peut être inséré dans l'expression résultante où se trouve le curseur, et « div> li> a »
    Insérer ici l'image Description

Insérer ici l'image Description

  • L' acquisition de données
    après la répétition:
    Insérer ici l'image Description
    ajoutez le code suivant à la méthode index_page self.crawl dans:
fetch_type='js',js_script="""function() {setTimeout("$('.more').click()", 2000);
  }"""# 等待浏览器加载数据

Après le stockage, ré -
code généré pyspider la classe Handler nouvelle méthode:

@config(age=10 * 24 * 60 * 60)
    def index1_page(self, response):
        for each in response.doc('.unstyled1 a').items():
        self.crawl(each.attr.href,validate_cert=False,fetch_type='js',js_script="""function() {setTimeout("$('.more').click()", 2000);
                   }""",callback=self.detail_page)# 代码中的JS为等待浏览器加载数据

Procédé index_page méthode de la valeur callbacke à index1_page.
Insérer ici l'image Description
A cette époque, les liaisons de données résultantes 65 villes en mai.
Sélectionnez le dernier (Avril de données 2019):
Insérer ici l'image Description

  • Enregistrer les données
  @config(priority=2)
def detail_page(self, response):
    import pandas as pd
        title_data= response.doc("* tr > th").text()# 获取标签数据
        data = response.doc("* > * tr > td").text()# 获取表格内的具体数据
        title_list = title_data.split(" ")# 将获取的数据进行分割
        data_list = data.split(" ")
        data_AQI={}# 新建字典用来存放处理后的数据
        for i in range(len(title_list)):# 按照标签进行数据处理
            data_AQI[title_list[i]]= data_list[i::9]# 将数据处理为字典形式
             data = pd.DataFrame(data_AQI)# 转换成DataFrame格式
        data.to_csv("D:\\data.csv",index=False,encoding="GBK")# 路径可以更换为想要存储数据的路径,此处存储至windows本地桌面,windows中的编码格式为GBK。
        return 
        


Insérer ici l'image Description

  • Visualisation de données

# -*- coding: utf-8 -*-
"""
Spyder Editor

This is a temporary script file.
"""
import pandas as pd
import matplotlib.dates as mdate
import matplotlib.pyplot as plt
from pylab import mpl
from datetime import datetime

plt.style.use("seaborn-whitegrid")
mpl.rcParams['font.sans-serif'] = ['SimHei']	# 设置matplotlib字体,解决中文显示问题
def visualization_mat(filename):
    data = pd.read_csv(filename, encoding="GBK")
    # 创建画布,返回figure,axes两个元组 赋予fig,axes,并创建了两行一列的两个子图  一般只用到axes
    fig, axes = plt.subplots(nrows=2, ncols=1, dpi=80,figsize=(8,6))
    # 质量等级使用饼图展示
    level = list(data["质量等级"])	# 简单的数据处理,选取饼图的标签
    level_name = list(set(level))
    #饼状图需要导入的是:plt.pie(x, labels= )
    axes[0].pie([level.count(i) for i in level_name],labels=level_name,
    autopct="%1.2f%%",colors=["r", "g", "b","y"])	# 设置饼图的相关属性
    ts =[datetime.strptime(i, '%Y-%m-%d') for i in data["日期"]]
    # PM数据使用折线图展示
    axes[1].plot(ts,data["NO2"])
    axes[1].plot(ts,data["O3_8h"])
    axes[1].plot(ts,data["AQI"])
    axes[1].xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d'))#设置时间标签显示格式
    
    axes[1].set_xticks([datetime.strptime(i, '%Y-%m-%d').date() for i in data["日期"]])
    axes[1].set_xlabel("时间")	# 为坐标轴设置标签
    axes[1].set_ylabel("数值")
    axes[1].legend()
    plt.gcf().autofmt_xdate()# 日期自动旋转
# plt.savefig(filename+’.jpg’)# 保存图片
    plt.show()		#展示图像
visualization_mat ("D:\\ data.csv")



Insérer ici l'image Description

Publié 20 articles originaux · louange gagné 23 · vues 986

Je suppose que tu aimes

Origine blog.csdn.net/surijing/article/details/104657256
conseillé
Classement