溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python實現抓取網頁API的機器信息并導入Excel表格

發布時間:2020-05-20 13:53:32 來源:網絡 閱讀:1197 作者:劉俊杰12138 欄目:編程語言

Python實現抓取網頁API的機器信息并導入Excel表格

    之前在公司處理過18年的所有機器交付進度的信息,要將所有未交付的機器過濾出來并做統一處理,用Python爬下來并寫入Excel表格確實是個好辦法。

    首先介紹一個處理這個問題最笨的辦法:用瀏覽器打開每個季度的剩余未交付的機器列表,挨行復制粘貼到Excel表格里。。然后每處理完一臺就刪掉記錄。。。這種方法對于小學生確實比較好使,也僅限于小學生了。。當然得升級一下。

    然后升級版就是:直接request模塊爬下來未交付的機器然后復制到表格里。復制這一步當然也能用python的xl*模塊實現啊。要不想挨臺處理完還要刪記錄的話就直接cron命令定時抓一下。。。這樣是不是就很符合我的懶人氣質了。。。

    老套路,先上代碼吧。

   

#-*- coding: UTF-8 -*-

import os

import requests

import json

import xlrd

import xlutils

from xlutils.copy import copy

import sys

reload(sys)

sys.setdefaultencoding('utf8')

def get_device_spec(hostname):

    url = "http://abc.def.com/url/s"

    pa = "_type:server,hostname:"+ hostname

    param = {"q":pa}

    respone = requests.request("GET", url, params=param)

    res = json.loads(respone.text)

    server_detail = res["result"]

    return server_detail

def write_excel_data(file_name,sheet_num,row,col,value_data):

        rbook = xlrd.open_workbook(file_name)

        wbook = copy(rbook)

        w_sheet = wbook.get_sheet(sheet_num)

        w_sheet.write(row,col,value_data)

        wbook.save(file_name)

fileName = "8.25_Q3.xlsx"

data = xlrd.open_workbook(fileName)

sheet01 = data.sheets()[0]

sheet01_nrows = sheet01.nrows

sheet01_row = 1

for sheet01_row in range(1,sheet01_nrows):

    hostname = sheet01.cell(sheet01_row,0).value

    server = get_device_spec(hostname)

    try:

        write_excel_data(fileName,0,sheet01_row,1,server[0]["manufacturer"])

        write_excel_data(fileName,0,sheet01_row,2,server[0]["idc"])

        write_excel_data(fileName,0,sheet01_row,3,server[0]["sn"])

        write_excel_data(fileName,0,sheet01_row,4,server[0]["rack_location"])

        write_excel_data(fileName,0,sheet01_row,5,server[0]["flavor_disk"])

        write_excel_data(fileName,0,sheet01_row,6,server[0]["maintain_enddate"])

    except Exception as e:

        pass

    continue
def get_device_spec(hostname):

    url = "http://abc.def.com/url/s"

    pa = "_type:server,hostname:"+ hostname

    param = {"q":pa}

    respone = requests.request("GET", url, params=param)

    res = json.loads(respone.text)

    server_detail = res["result"]

    return server_detail

    首先先看get_device_spec函數。這個函數使用request模塊通過傳入的hostname字段去抓取我們公司的機器信息,并做json格式處理并返回server_detail的所有信息。

def write_excel_data(file_name,sheet_num,row,col,value_data):

        rbook = xlrd.open_workbook(file_name)

        wbook = copy(rbook)

        w_sheet = wbook.get_sheet(sheet_num)

        w_sheet.write(row,col,value_data)

        wbook.save(file_name)

    接下來看write_excel_data函數。這是一個將信息輸入到Excel表格的函數。首先打開文件以及對應的sheet,然后將所需要的row,col和valuue_data字段填入表格內,然后保存該文件。

fileName = "8.25_Q3.xlsx"

data = xlrd.open_workbook(fileName)

sheet01 = data.sheets()[0]

sheet01_nrows = sheet01.nrows

sheet01_row = 1

for sheet01_row in range(1,sheet01_nrows):

    hostname = sheet01.cell(sheet01_row,0).value

    server = get_device_spec(hostname)

    try:

        write_excel_data(fileName,0,sheet01_row,1,server[0]["manufacturer"])

        write_excel_data(fileName,0,sheet01_row,2,server[0]["idc"])

        write_excel_data(fileName,0,sheet01_row,3,server[0]["sn"])

        write_excel_data(fileName,0,sheet01_row,4,server[0]["rack_location"])

        write_excel_data(fileName,0,sheet01_row,5,server[0]["flavor_disk"])

        write_excel_data(fileName,0,sheet01_row,6,server[0]["maintain_enddate"])

    except Exception as e:

        pass

    continue

    這段代碼算是主函數了。主要實現的是定義文件名,然后讀取文件內的hostname并將其作為實參傳入并運行get_device_spce函數,這一步用來獲取機器的所有信息;以及過濾出sn,idc等字段作為實參傳入write_excel_data函數內,這一步用來將獲得的機器參數過濾出自己需要的字段并填入Excel表格內。最后的except是簡單做了一個錯誤判斷退出。。防止自己電腦oom。。

    最后我是在自己電腦上配置了每天9點定時運行該文件并抓取機器信息保存。然后上班來處理剩余的機器。。


加一個我個人的公眾號:運維開發Club。主要向大家分享Linux運維、Python、Go語言以及當下的云計算、容器等知識,歡迎關注?。?!

                                                           Python實現抓取網頁API的機器信息并導入Excel表格


    這段代碼算是介紹完成了,其中個人任務也有好多未優化的代碼。。。包括代碼重用啦,還有獲取的信息可用量也不是很多。。等等吧。有待大家幫忙指點。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女