真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python實現(xiàn)抓取網(wǎng)頁API的機器信息并導(dǎo)入Excel表格

Python實現(xiàn)抓取網(wǎng)頁API的機器信息并導(dǎo)入Excel表格

成都網(wǎng)站制作、成都網(wǎng)站建設(shè)介紹好的網(wǎng)站是理念、設(shè)計和技術(shù)的結(jié)合。成都創(chuàng)新互聯(lián)公司擁有的網(wǎng)站設(shè)計理念、多方位的設(shè)計風(fēng)格、經(jīng)驗豐富的設(shè)計團隊。提供PC端+手機端網(wǎng)站建設(shè),用營銷思維進行網(wǎng)站設(shè)計、采用先進技術(shù)開源代碼、注重用戶體驗與SEO基礎(chǔ),將技術(shù)與創(chuàng)意整合到網(wǎng)站之中,以契合客戶的方式做到創(chuàng)意性的視覺化效果。

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

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

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

    老套路,先上代碼吧。

   

#-*- 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函數(shù)。這個函數(shù)使用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函數(shù)。這是一個將信息輸入到Excel表格的函數(shù)。首先打開文件以及對應(yīng)的sheet,然后將所需要的row,col和valuue_data字段填入表格內(nèi),然后保存該文件。

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

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

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

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

                                                           Python實現(xiàn)抓取網(wǎng)頁API的機器信息并導(dǎo)入Excel表格

    這段代碼算是介紹完成了,其中個人任務(wù)也有好多未優(yōu)化的代碼。。。包括代碼重用啦,還有獲取的信息可用量也不是很多。。等等吧。有待大家?guī)兔χ更c。


本文標(biāo)題:Python實現(xiàn)抓取網(wǎng)頁API的機器信息并導(dǎo)入Excel表格
標(biāo)題URL:http://weahome.cn/article/jspsog.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部