如何用 Python 提高效率

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

本文將通過簡單的例子來說下 Python 如何提高效率,減少重複勞動的。

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

0x01 selenium 自動登錄京東

0x02 SimpleHTTPServer 文件共享

0x03 豆瓣自動頂貼

0x04 摩爾斯密碼

0x05 批量發郵件

0x06 自如爬蟲

------------------------------------

0x01 selenium 自動登錄京東

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

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

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 即可看到

如何用 Python 提高效率

0x03 豆瓣自動頂貼

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

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

這裡面最重要的是 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)
  • 這種方式去刷帖肯定是有風險的,所以請大家謹慎使用

0x04 摩爾斯密碼

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

如何用 Python 提高效率

安裝依賴

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 專門的發郵件服務接口。

0x06 自如爬蟲

如果你想入門數據分析,但是苦於沒有數據,那就看下文如何用 10 行代碼寫一個最簡單的自如房源爬蟲

首先我們通過分析看到自如手機版有個 url 如下: http://m.ziroom.com/list/ajax-get-data 能夠返回 json 數據

如何用 Python 提高效率

這個基本上包括了租房的一些重要信息,價格,小區,地鐵沿線,朝向

所以要做的就是遍歷這個地址得到所有的 json 數據

下面是代碼:

import requests
import time
with open('ziroom.txt', 'a+') as f:
for i in xrange(10, 9001, 10):
payload = {'step': i}
res = requests.post('http://m.ziroom.com/list/ajax-get-data', data=payload)
for i in res.json()['data']:
print i['id']
f.write(str(i)+'\n')
time.sleep(3)


分享到:


相關文章: