Faire un robot python
2018-10-18 · 941 · 12 min# Cause
J’ai miné Monero récemment et j’ai besoin de surveiller les données du portefeuille. Mais le pool ne conserve les données que pour les dernières « 24 heures », et si j’ai besoin de regarder les enregistrements passés, tels que « combien j’ai creusé au total ce mois-ci », je ne peux pas le faire. Je dois donc créer un robot moi-même, analyser périodiquement les données de la page de requête du pool de minage et l’enregistrer.
# Organigramme
# Préparatifs
Le système que j’utilise est WSL-Ubuntu 18.04, qui vient avec 'python3', et le projet doit utiliser les bibliothèques {% label success@xlrd, xlwt, xlutils%}, si elles ne sont pas installées à l’aide de la commande suivante:
pip3 installer xlrd xlwt xlutils
Si 'python3' ou 'pip3' n’est pas installé, utilisez la commande suivante :
sudo apt-get install python3
sudo apt-get install python3-pip
# Implémentation du code
Obtenez du temps
Étant donné que vous souhaitez trier les données par heure lors de l’enregistrement d’Excel, vous devez d’abord obtenir l’horodatage:
# codage=utf-8
Heure d’importation
maintenant = int(round(time.time()*1000))
now02 = time.strftime('%m-%d %H:%M',time.localtime(now/1000))
Cela inclut un horodatage dans now02.
Parcourir la page
Les robots d’exploration saisissent d’abord la page entière, puis utilisent des outils réguliers ou autres pour filtrer les données.
Importation Re
importer urllib.request
url = r’https://page vous devez explorer' #这里我就不把查询页面贴出来了, le lien entre guillemets doit être précédé d’un http:// ou d’un https:// Dans le cas contraire, une erreur sera signalée
headers ={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/55.0.2883.87 Safari/537.36'} #模拟浏览器
req = urllib.request.Request(url=url,headers=headers)
res = urllib.request.urlopen(req)
HTML = res.read().decode('UTF-8') codage #将文件用utf-8
Filtrage régulier
Ici, selon les données dont vous avez besoin pour obtenir différentes expressions régulières, les données dont j’ai besoin sont une chaîne de tels nombres 0.00000000, quatre fois de suite avec d’autres caractères entre les deux. (Pas tous les 0, bien sûr, n’importe quel nombre de 0 à 9.)
re1='.*?' # Match non gourmand sur filler
re2='([+-]?\\d*\\.\\d{8})(?! [-+0-9\\.])' # Flotteur 1
re3='.*?' # Match non gourmand sur filler
re4='([+-]?\\d*\\.\\d+)(?! [-+0-9\\.])' # Flotteur 2
re5='.*?' # Match non gourmand sur filler
re6='([+-]?\\d*\\.\\d+)(?! [-+0-9\\.])' # Flotteur 3
re7='.*?' # Match non gourmand sur filler
re8='([+-]?\\d*\\.\\d+)(?! [-+0-9\\.])' # Flotteur 4
rg = re.compile(re1+re2+re3+re4+re5+re6+re7+re8,re. IGNORECASE|re. DOTALL)
m = rg.search(html)
Si m: #m内就是我需要的4串数字了.
float1=m.groupe(1)
float2=m.groupe(2)
float3=m.groupe(3)
float4=m.groupe(4)
Lire Excel
Étant donné que je souhaite écrire en continu des données dans un Excel, j’ai besoin d’obtenir ses données de ligne et de colonne pour déterminer où les données sont écrites.
Importer XLRD
à partir de XLRD import open_workbook
data = xlrd.open_workbook('data.xls') #读取数据
page = len(data.sheets()) #获取sheet的数量
table = data.sheets()[0]#打开第一张表
nrows = table.nrows# obtient le nombre total de lignes
ncols = table.ncols# obtient le nombre total de colonnes
h = table.nrows #将行数保存下来后面写入数据的时候用
Modifier, écrire, enregistrer Excel
Copiez le fichier source en mémoire, puis modifiez les données en mémoire, définissez la largeur de liste suivante et enfin enregistrez.
rexcel = open_workbook(« data.xls ») # Lire un fichier excel en utilisant la méthode fournie par wlrd
rows = rexcel.sheets()[0].nrows # Utilisez la méthode fournie par wlrd pour obtenir le nombre de lignes disponibles aujourd’hui
excel = copy(rexcel) # Utilisez la méthode copy fournie par xlutils pour convertir des objets xlrd en objets xlwt
table = excel.get_sheet(0) # Utilisez la méthode de l’objet xlwt pour manipuler la feuille
valeurs = ["1"]
a1=table.col(0) #设置单元格宽度
a1.width=150*20
a2=table.col(1)
a2.width=150*20
a3=table.col(2)
a3.width=150*20
a4=table.col(3)
a4.width=150*20
a5=table.col(4)
a5.width=150*20
pour time1 dans les valeurs :
table.write(h,0,now02) # xlwt méthode d’écriture d’objet, les paramètres sont row, column, value
table.écriture(h,1,flottant1)
table.write(h,2,float2)
table.écriture(h,3,flottant3)
table.écriture(h,4,float4)
Excel.save(« data.xls ») # lwt objet est enregistré, écrasant l’Excel d’origine
# Résumé
La commande script run démarre par python3 et python signale une erreur. Avant d’exécuter le script, vous devez créer une nouvelle 'data.xls' dans le répertoire script pour enregistrer le fichier.
L’intérêt est le meilleur professeur, dans le passé, lors de l’apprentissage du python, j’ai toujours eu l’impression de poser le livre dans le tableau, mais maintenant j’ai une idée en tête, je veux trouver une solution, donc il y a cette araignée.
Il y a beaucoup de choses dans ce code que je ne comprends pas vraiment, mais ce n’est pas inutilisable, du moins pour l’instant, le script fonctionne comme je veux. Je pense que c’est bien.
Code complet :
# codage=utf-8
Heure d’importation
Importer XLRD
Importer XLWT
importer urllib.request
Importation Re
à partir de XLRD import open_workbook
à partir de xlutils.copy importer une copie
Importer le système d’exploitation
maintenant = int(round(time.time()*1000))
now02 = time.strftime('%m-%d %H:%M',time.localtime(now/1000))
url = r’https://page vous devez explorer' #这里我就不把查询页面贴出来了, le lien entre guillemets doit être précédé d’un http:// ou d’un https:// Dans le cas contraire, une erreur sera signalée
headers ={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/55.0.2883.87 Safari/537.36'}
req = urllib.request.Request(url=url,headers=headers) #模拟浏览器
res = urllib.request.urlopen(req)
HTML = res.read().decode('UTF-8') codage #将文件用utf-8
re1='.*?' # Match non gourmand sur filler
re2='([+-]?\\d*\\.\\d{8})(?! [-+0-9\\.])' # Flotteur 1
re3='.*?' # Match non gourmand sur filler
re4='([+-]?\\d*\\.\\d+)(?! [-+0-9\\.])' # Flotteur 2
re5='.*?' # Match non gourmand sur filler
re6='([+-]?\\d*\\.\\d+)(?! [-+0-9\\.])' # Flotteur 3
re7='.*?' # Match non gourmand sur filler
re8='([+-]?\\d*\\.\\d+)(?! [-+0-9\\.])' # Flotteur 4
rg = re.compile(re1+re2+re3+re4+re5+re6+re7+re8,re. IGNORECASE|re. DOTALL)
m = rg.search(html)
Si m: #m内就是我需要的4串数字了.
float1=m.groupe(1)
float2=m.groupe(2)
float3=m.groupe(3)
float4=m.groupe(4)
data = xlrd.open_workbook('data.xls') #读取数据
page = len(data.sheets()) #获取sheet的数量
table = data.sheets()[0]#打开第一张表
nrows = table.nrows# obtient le nombre total de lignes
ncols = table.ncols# obtient le nombre total de colonnes
h = table.nrows #将行数保存下来后面写入数据的时候用
rexcel = open_workbook(« data.xls ») # Lire un fichier excel en utilisant la méthode fournie par wlrd
rows = rexcel.sheets()[0].nrows # Utilisez la méthode fournie par wlrd pour obtenir le nombre de lignes disponibles aujourd’hui
excel = copy(rexcel) # Utilisez la méthode copy fournie par xlutils pour convertir des objets xlrd en objets xlwt
table = excel.get_sheet(0) # Utilisez la méthode de l’objet xlwt pour manipuler la feuille
valeurs = ["1"]
a1=table.col(0) #设置单元格宽度
a1.width=150*20
a2=table.col(1)
a2.width=150*20
a3=table.col(2)
a3.width=150*20
a4=table.col(3)
a4.width=150*20
a5=table.col(4)
a5.width=150*20
pour time1 dans les valeurs :
table.write(h,0,now02) # xlwt méthode d’écriture d’objet, les paramètres sont row, column, value
table.écriture(h,1,flottant1)
table.write(h,2,float2)
table.écriture(h,3,flottant3)
table.écriture(h,4,float4)
Excel.save(« data.xls ») # lwt objet est enregistré, écrasant l’Excel d’origine
Avis de droit d'auteur :
Cet article est écrit par SaltyLeo. Si le contenu comporte des erreurs, veuillez laisser un commentaire. Lors de la reprise ou de la citation de cet article, veuillez respecter la licence CC BY-NC-SA en indiquant la source, en utilisant à des fins non commerciales et en partageant de la même manière !Commentaire :
Lire la suite :
Idées de scripts par lots pour la copie de fichiers par lots
Pour confirmer le problème de version
Faites l'expérience sans publicités d'adhésion, profitez de médias en streaming haute définition 4K.
Diverses opérations d'interception de chaînes à l'aide de Python
Activer avec vlmcsd
Balises populaires
Informations sur le site
Balises: 220
Vues de page: 12,888,652
temps de chargement: 86.34 ms
Ver : 3.0.1