利用python挽救心儀的女神,解決了她工作的煩惱

2021-09-05 11:06:21 字數 2348 閱讀 8924

最近在業務辦公區域對接需求的時候,發現了一位漂亮妹子的「苦惱」,簡單來說就是她每天都得花乙個多小時的時間去將整理好的資料錄入到系統中。

為什麼是苦惱?

在進入正題前想聊下這位漂亮妹子「不要想多了,只是聊聊漂亮妹子的工作」,這位妹子雖然苦惱,但她做這樣的事情已經一年多了,可謂毅力可嘉,有時候我就會覺得很奇怪,為什麼不向產品提個需求,要求系統能支援批量匯入的功能呢?

和漂亮妹子聊了下,原來曾幾何時是提過類似的需求的,但因為優先順序,上級重視度等等一系列問題,最後就不了了之了。

漂亮妹子一開始還比較有怨言的,久而久之也就麻木了,最後成為了一種習慣...

老實講,對於這樣的工作狀態很不好,當你的工作逐步趨向於重複性操作時,你將很可能被替代。

於是,為了拯救這位漂亮妹子,利用pyhton搞了個指令碼,能夠自動讀取excel中的資料提交表單,完成錄入的操作,還提高了手動錄入的準確性。

妹子驚呆了,奶茶雙手奉上。

一些思路

其實類似這種錄入系統,重複工作的場景真的有很多,有時候真的覺得很麻煩,尤其是遇到一些互動比較差,等待時間比較長的系統。

類似這種需求,基本上分這幾個步驟:

分析頁面

模擬登入

組裝表單資料

迴圈提交

當然,你同時也要具備一些技能和知識:

python「以python舉例,其他語言也可以實現」

http 協議

chrome除錯「以chrome舉例,其他瀏覽器也可以」

具體實現

由於是公司的系統,不太方便貼原始碼,這裡記錄下開發過程中的一些重點和坑。

首先是頁面分析,這個就不多說了,利用好強大的chrome就可以了。

這裡重點說說模擬登入,往往這裡是比較坑的,雖然內網系統相對來說比較簡單,但還是碰到兩種常用的登入校驗模式。

一種是服務端會生成乙個uuid的state,在提交登入時會校驗傳入的與服務端生成的是否一致。

這個時候你就要分析頁面,通常會將state放在頁面中

這樣就比較容易了,利用python的requests和beautifulsoup來抓取並實現登入

session_requests=requests.session()

result=session_requests.get(login_url,headers=header)

tree=bs4.beautifulsoup(result.text,'lxml')

state=tree.findall('input',attrs=)[0]['value']

另一種是在登入時,前端將密碼加密,加密後再進行提交,一開始沒注意,坑了我一把,於是將這段**翻譯成python的寫法

#密碼加密

def deal_password(pwd):

key='asdrft745'

keylength=10

code=''

i=0for item in pwd:

keyindex=i%keylength

code=code+chr(ord(item)^ord(key[keyindex:keyindex+1]))

i=i+1

bytesstring = code.encode(encoding="utf-8")

return base64.b64encode(bytesstring)

當你順利模擬登入成功後,其實就已經成功過一大半了,後面無非就是組裝資料,然後利用強大的requests呼叫介面提交就可以了。

由於表單各不相同,**也沒什麼好貼的,主要確認好介面資料格式,是form-data的,還是json的,做好相應的轉換即可。

另外還是要偽造下header的,尤其是user-agent,避免被誤殺,或者被公司安全組查。

最後請求頻次也需要注意下,千萬不要用力過猛,把系統給搞掛了「雖然這種情況很少」。

最後的最後,貼下自己用到的模組,都是比較常用的,網上也有一大堆的說明教程,有興趣的同學可以自行實戰下,創新工作,告別重複勞動。

女神看完我的操作都驚呆了,以後再也不用花時間重複錄入資料了,奶茶雙手奉上啊,無形中為自己的形象分添色了不少,哈哈。

利用Python編寫的Fibonacci

利用python編寫的fibonacci數列,用到了邏輯推導式,必用迭代方法,跟大家分享 一 節省資料存放的空間 需要準備大量的資料,用於計算 import time class fibonacci object def init self,max 10 self.current num 0 sel...

利用python中的pyquery庫簡單的抓取資料

記得還是7月份下旬的時候無意看到pyquery庫,能做爬蟲,還不需要寫正則什麼的,還是蠻實用的,簡單的寫了一些 抓取網路資料,裝的是anaconda 預設是2.7版本,如下 from pyquery import pyquery as pq import pandas as pd from date...

Python利用遞迴實現檔案的複製

import os import time from collections import deque 利用遞迴實現目錄的遍歷 para sourcepath 原檔案目錄 para targetpath 目標檔案目錄 def getdirandcopyfile sourcepath,targetpa...