如何用 Python 提高效率

fybi4570 8年前發布 | 15K 次閱讀 Python Python開發

經常有人說我應該學一門語言,比如 Python 之類,但是卻不知道如何入門。這個時候很多人會推薦學各種 web 框架,scrapy 爬蟲之類,門檻雖然不高,但是對于新人來說可能就半途而廢了。大家需要的或許是通過編程來解決平時遇到的問題,將工作自動化。本文將通過簡單的例子來說下 Python 如何提高效率,減少重復勞動的。

廢話不多說,進入正題,首先安裝 Python 和 pip, 教程網上很多,比如 廖雪峰的官方網站 。 pip 可以理解為安裝第三方庫的軟件包,另外教程里面沒有特別說明以 Python2.7 版本為例子。

 

0x01 selenium 自動登錄京東

還記得前段時間阿里月餅事件,當事人因為用 js 腳本刷月餅被開除。直接編寫 js 代碼可能不夠直觀,所以本文我們用 selenium 來模擬瀏覽器執行自動化腳本,同樣可以達到效果,比如自動登錄京東。

  • 安裝 selenium
    pip install selenium
  • 打開京東登錄頁,用 chrome devtools 查看元素, 我們需要做的步驟就是輸入用戶名和密碼,點擊登錄按鈕。

name = '****'
password = '****'

# 使用火狐作為默認打開的瀏覽器,確認已經安裝火狐
driver = webdriver.Firefox()
driver.get("https://passport.jd.com/new/login.aspx")

elem_account = driver.find_element_by_name("loginname")
elem_password = driver.find_element_by_name("nloginpwd")

elem_account.clear()
elem_password.clear()

elem_account.send_keys(name)
elem_password.send_keys(password)

driver.find_element_by_id("loginsubmit").click()

只需要更改上面的用戶名和密碼就能運行腳本, 代碼見 github

  • 其實 selenium 可以用來秒殺,搶手機,搶火車票。有驗證碼的時候,自動識別可能有誤差,可以手工輸入或者一些其他方式。。。

0x02 SimpleHTTPServer 文件共享

有時候你會想要跟一個局域網的人共享文件,如果文件太多,那么用微信一個一個傳可能不太方便,這個時候就祭出 SimpleHTTPServer 這個殺器,一行代碼都不用寫,先 cd 到你需要共享的目錄

$ cd /home/share/images

然后直接命令行輸入

python -m SimpleHTTPServer

接下來用 ifconfig (windows 下是 ipconfig)查看你的內網 ip, 假設是 192.168.0.11, 在瀏覽器輸入 http:// 192.168.0.11:8000 即可看到

0x03 豆瓣自動頂貼

程序員喜歡是用代碼解放雙手,能懶則懶。舉個例子,你在豆瓣上發布了一個帖子,希望過段時間就回復下來置頂,那么一個是手工回復,當然也可以寫腳本來做

  • 首先登錄豆瓣,進入你需要回復的帖子頁面,打開 chrome dev_tools, 當點擊回復帖子的時候,查看 NetWork, 可以看到如下圖

這里面最重要的是 Cookie 這個東西,他記錄了你的登錄狀態,所以用腳本其實只需要發送帶這個 Cookie 的請求就行。

  • 三行代碼就能搞定
# rv_comment 為你需要回復的字段
payloads = {'ck': 'n1iQ', 'rv_comment': 'up', 'start': '0', 'submit_btn': u'加上去'}

# Cookie 自己去填
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36', 'Cookie': '******'}

requests.post('https://www.douban.com/group/topic/93461964/add_comment', data=payloads, headers=headers)

代碼見 github

  • 這種方式去刷帖肯定是有風險的,所以請大家謹慎使用

0x04 摩爾斯密碼

這是一個很無聊的需求,哈哈,如果你想通過摩爾斯密碼聊天的話, 或者跟暗戀的人表白

  • 安裝依賴
pip install morse-talk
  • 將文字編碼成摩爾斯密碼
import morse_talk as mtalk
content = 'i love you'
mo_content = mtalk.encode(content)
print mo_content
  • 輸出
..       .-..   ---   ...-   .       -.--   ---   ..-
  • 解摩爾斯碼
import morse_talk as mtalk
mo_content = '-.--   ---   ..-'
content = mtalk.decode(mo_content)
print content
  • 輸出
'YOU'

0x05 批量發郵件

如果有一天,老板過來給你一個很大的郵箱列表,要你給每個人發郵件,你該如何去做,最簡單的就是寫一個 python 程序

import smtplib
from email.mime.text import MIMEText

receiver = ['***', '***'] # 設置郵件接收人,這里是我的公司郵箱

host = 'smtp.163.com'  # 設置發件服務器地址
port = 25  # 設置發件服務器端口號
sender = '****'  # 設置發件郵箱
pwd = '*****'  # 設置發件郵箱的密碼
body = 'hello' # 設置郵件正文,這里是支持HTML的

msg = MIMEText(body, 'html') # 設置正文為符合郵件格式的HTML內容
msg['subject'] = 'Hello world' # 設置郵件標題
msg['from'] = sender  # 設置發送人
msg['to'] = ';'.join(receiver)  # 設置接收人

s = smtplib.SMTP(host, port) 
s.login(sender, pwd)  # 登陸郵箱
s.sendmail(sender, receiver, msg.as_string())  # 發送郵件

不過由于每個垃圾郵件的屏蔽機制,很可能批量發送會被 spam 掉,所以可以使用 sendcloud 專門的發郵件服務接口。

代碼見 github

 

來自:https://zhuanlan.zhihu.com/p/24097377

 

 本文由用戶 fybi4570 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!