python帶登入的爬蟲指令碼

2021-09-24 15:44:02 字數 3992 閱讀 1389

# 建立cookiejar的例項

cookie = cookiejar.cookiejar()

# 常見cookie的管理器

# 建立http請求的管理器

# 生成https管理器

# 建立請求管理器

# 登入函式,cookie在opener裡

def login():

try:

# 負責首次登入,輸入使用者名稱和密碼,用來獲取cookie

url = 'url'

username = 'username'

password = 'password'

param =   

# 把資料進行編碼

data = parse.urlencode(param)

# 建立乙個請求物件

req = request.request(url,data=data.encode('utf-8'))

# 使用opener發起請求

rsp = opener.open(req)

return json.loads(rsp.read())['success']

except:

return false

#獲取虛擬機器資訊 post方法

def getfatherhost():

url = 'url'

param =

# 如果已經執行login函式,則opener自動已經包含cookie

data = parse.urlencode(param)

req = request.request(url,data=data.encode('utf-8'))

rsp = opener.open(req)

return  json.loads(rsp.read())['data']['rows']

#獲取宿主機監控資訊 get方法

def gethoststate(hostid,vendorid):

url = 'url'

param =

}   

data = parse.urlencode(param)

req = request.request(url = '%s%s%s'%(url,'?',data))

#print('%s%s%s'%(url,'?',data))

rsp = opener.open(req)

return  json.loads(rsp.read())['data']

##獲取虛擬機器資訊 post方法

def getchildhost(hostid,vendorid):

param =,"sign":"eq"}]

}   

url = 'url'

data = parse.urlencode(param)

req = request.request(url,data=data.encode('utf-8'))

rsp = opener.open(req)

return  json.loads(rsp.read())['data']['rows']

##獲取上次資訊時間和若無檔案則建立

def getlasttime(filepath):

if not os.path.exists(filepath):

f=open(filepath,'w')

f.write(filepath+'已建立 \n')

f.close()

return ''

with open(filepath,'r') as f:

lines = f.readlines()

if len(lines)>0:

last_line = lines[-1]

return last_line[0:19]

return ''

if __name__ == '__main__':

##防止檔案過大,每天乙個新檔案

filepath1 = '宿主機資訊'+time.strftime("%y-%m-%d",time.localtime())+'.txt'

##防止檔案過大,每月乙個新檔案

filepath2 = '主機對應虛擬機器資訊'+time.strftime("%y-%m",time.localtime())+'.txt'

##當登入成功時

if (login()):

print('登入成功')

f1 = open(filepath1,'a')

f2 = open(filepath2,'a')

##宿主機列表

fatherhosts = getfatherhost()

#timestr2=getlasttime(filepath2)

##獲取上次時間戳

timestr1=getlasttime(filepath1)

timelast=''

for host in fatherhosts:

##虛擬機器列表資訊

childshosts = getchildhost(host['id'],host['vendorid'])

for childshost in childshosts:

f2.write('主機名稱:'+host['name']+'  主機ip:'+host['manageip']+'    虛機名稱:'+childshost['name']+'  虛機ip:'+childshost['managerip']+'  虛機狀態:'+childshost['status']+'  資料儲存區:'+childshost['datastores']+'  快照數量:'+str(childshost['snapshotcount'])+'  磁碟/gb:'+str(childshost['disk'])+'\n')

##宿主機資訊

hoststate = gethoststate(host['name'],host['vendorid'])

sorts = ['system','mem','cpu','power','net','disk']

timelast = hoststate[sorts[0]]['keys'][-1]

for sort in sorts:

for i in range(len(hoststate[sort]['keys'])):

if hoststate[sort]['keys'][i]>timestr1:    

for j in range(len(hoststate[sort]['values'])):

f1.write(hoststate[sort]['keys'][i]+'    主機名稱:'+host['name']+'  主機ip:'+host['manageip']+'    '+sort+':'+hoststate[sort]['values'][j]['name']+':'+hoststate[sort]['values'][j]['data'][i]+'\n')

if timelast!='':

f1.write(timelast+'\n')    

else:

f1.write("00-00-00 00:00:00\n") 

f1.close()

f2.close()

print('done')

else:

print('登入失敗')

Python 指令碼帶引數

如果想對python指令碼傳引數,python中對應的argc,ar c語言的命令列引數 是什麼呢?需要模組 sys 引數個數 len sys.ar 指令碼名 sys.ar 0 引數1 sys.ar 1 引數2 sys.ar 2 test.py import sys print 指令碼名 sys.a...

python爬蟲免登入 爬蟲使用cookie免登陸

由於前程無憂上崗位投遞記錄只保留兩個月,想記錄下。程式 放在github 對於怎麼獲取登陸後的頁面,有兩種思路使用賬號,密碼登陸,如果該 登陸系統簡單的話,沒有驗證碼啥的,有驗證碼的話,可以使用圖形識別庫 使用cookie繞過登陸頁面cookie cookie 複數形態cookies 中文名稱為 小...

python爬蟲模擬登入網頁 登入wish

wish登入頁面 是js寫的,在上面找登入鏈結很麻煩,直接故意寫錯登入賬號和密碼 獲得登入鏈結 上 import requests url1 url2 header 8或者不指定。data 獲得post請求的session物件 sesssion requests.session sesssion.p...