標籤:

你寫過的最好的 Python 腳本是什麼?

源自:Python (programming language): What are the best Python scripts youve ever written?

想看到更多的更酷的東西 :- |


我們公司辦公環境是window,開發環境是unix(可以近似認為所有人工作在同一台機器上,大部分人的目錄許可權都是755。。。),為了防止開發代碼流出到外網,windows與unix之間沒有網路連接,我們只能遠程登陸到一個跳轉伺服器再遠程登陸到unix上,如果有unix網內的文件需要傳出到windows網中,需要領導嚴格審批(反方向沒問題,有專用ftp伺服器)。對於通信專業畢業的我,最不能忍受的場景就是沒有建立起雙向通信。於是,為了可以將unix網內的數據傳出來,我用python將二進位數據轉化為圖像,每個像素點可以表示3個位元組,再將圖像外圍增加寬度為1的黑色邊框,外面再增加寬度為1像素的白色邊框,作為圖像邊界的標識符。這樣,我在windows下截圖,用python進行逆操作,數據就完好的解出來了!這樣一次至少可以傳1MB多的文件(屏幕越大傳的越多),7z壓縮一下,可以傳很多文本了。如果需要傳更多,還可以搞成動畫。。。腳本一共只有幾十行,卻大大提高了我後來工作的效率。python好爽,我愛python!


Python 在線編輯器

這是我用 python 寫的一個可以在網頁上編寫並執行 python 代碼的編輯器。支持基本的語法和模塊。但出於安全考慮(當然也因為沒怎麼去完善),功能還比較受限。

寫代碼的時候可以自動補全,不過這是js的事情,跟python無關。

兩年多前寫的,最近又稍微優化了一下,增加了幾個語法和模塊的支持。另外增加了幾十個教學常式。做這個的目的是想方便公眾號讀者在微信裡面直接試驗代碼。


http://codegolf.stackexchange.com/

有點off topic但是這個站上有很多好玩的題目,加上好多好玩的回答。


GitHub - larva-lang/larva-lang: The larva programming Language


貼個我看到的蠻實用的腳本有帶注釋

# -*- coding: utf-8 -*-

#---------------------------------------

# 程序:百度貼吧爬蟲

# 版本:0.5

# 作者:why

# 日期:2013-05-16

# 語言:Python 2.7

# 操作:輸入網址後自動只看樓主並保存到本地文件

# 功能:將樓主發布的內容打包txt存儲到本地。

#---------------------------------------

import string

import urllib2

import re

#----------- 處理頁面上的各種標籤 -----------

class HTML_Tool:

# 用非 貪婪模式 匹配 或者
或者 空格 或者 超鏈接 或者 圖片

BgnCharToNoneRex = re.compile("( |
| |&|&)")

# 用非 貪婪模式 匹配 任意&<&>標籤

EndCharToNoneRex = re.compile("&<.*?&>")

# 用非 貪婪模式 匹配 任意&

標籤

BgnPartRex = re.compile("&

")

CharToNewLineRex = re.compile("(&
|&|&|&|&)")

CharToNextTabRex = re.compile("&")

# 將一些html的符號實體轉變為原始符號

replaceTab = [("<","&<"),(">",">"),("amp;",""),("amp;","""),("nbsp;"," ")]

def Replace_Char(self,x):

x = self.BgnCharToNoneRex.sub("",x)

x = self.BgnPartRex.sub("
",x)

x = self.CharToNewLineRex.sub("
",x)

x = self.CharToNextTabRex.sub(" ",x)

x = self.EndCharToNoneRex.sub("",x)

for t in self.replaceTab:

x = x.replace(t[0],t[1])

return x

class Baidu_Spider:

# 申明相關的屬性

def __init__(self,url):

self.myUrl = url + ?see_lz=1

self.datas = []

self.myTool = HTML_Tool()

print u已經啟動百度貼吧爬蟲,咔嚓咔嚓

# 初始化載入頁面並將其轉碼儲存

def baidu_tieba(self):

# 讀取頁面的原始信息並將其從gbk轉碼

myPage = urllib2.urlopen(self.myUrl).read().decode("gbk")

# 計算樓主發布內容一共有多少頁

endPage = self.page_counter(myPage)

# 獲取該帖的標題

title = self.find_title(myPage)

print u文章名稱: + title

# 獲取最終的數據

self.save_data(self.myUrl,title,endPage)

#用來計算一共有多少頁

def page_counter(self,myPage):

# 匹配 "共有&12&頁" 來獲取一共有多少頁

myMatch = re.search(rclass="red">(d+?)&, myPage, re.S)

if myMatch:

endPage = int(myMatch.group(1))

print u爬蟲報告:發現樓主共有%d頁的原創內容 % endPage

else:

endPage = 0

print u爬蟲報告:無法計算樓主發布內容有多少頁!

return endPage

# 用來尋找該帖的標題

def find_title(self,myPage):

# 匹配 &

xxxxxxxxxx& 找出標題

myMatch = re.search(r&(.*?)&, myPage, re.S)

title = u暫無標題

if myMatch:

title = myMatch.group(1)

else:

print u爬蟲報告:無法載入文章標題!

# 文件名不能包含以下字元: / : * ? " &< &> |

title = title.replace(\,).replace(/,).replace(:,).replace(*,).replace(?,).replace(",).replace(&>,).replace(&<,).replace(|,)

return title

# 用來存儲樓主發布的內容

def save_data(self,url,title,endPage):

# 載入頁面數據到數組中

self.get_data(url,endPage)

# 打開本地文件

f = open(title+.txt,w+)

f.writelines(self.datas)

f.close()

print u爬蟲報告:文件已下載到本地並打包成txt文件

print u請按任意鍵退出...

raw_input();

# 獲取頁面源碼並將其存儲到數組中

def get_data(self,url,endPage):

url = url + pn=

for i in range(1,endPage+1):

print u爬蟲報告:爬蟲%d號正在載入中... % i

myPage = urllib2.urlopen(url + str(i)).read()

# 將myPage中的html代碼處理並存儲到datas裡面

self.deal_data(myPage.decode(gbk))

# 將內容從頁面代碼中摳出來

def deal_data(self,myPage):

myItems = re.findall(id="post_content.*?&>(.*?)&,myPage,re.S)

for item in myItems:

data = self.myTool.Replace_Char(item.replace("
","").encode(gbk))

self.datas.append(data+
)

#-------- 程序入口處 ------------------

print u"""#---------------------------------------

# 程序:百度貼吧爬蟲

# 版本:1.0

# 操作:輸入網址後自動只看樓主並保存到本地文件

# 功能:將樓主發布的內容打包txt存儲到本地。

#---------------------------------------

"""

# 以某小說貼吧為例子

# bdurl = 百度貼吧

print u請輸入貼吧的地址最後的數字串:

bdurl = 百度--您的訪問出錯了 + str(raw_input(u百度--您的訪問出錯了))

#調用

mySpider = Baidu_Spider(bdurl)

mySpider.baidu_tieba()


說兩個和知乎相關的。

因為我本人並不認可「問題是大家的」的觀點,對每個人都可以編輯問題這個設定表示接受但不認同。所以每次看到有好事者把問題原題改得面目全非的時候,感覺就像吃了死蒼蠅一樣噁心。(雖然有問題日誌,但是大多數群眾不會去看。)

終於有一天,我被某人噁心得受不了了,就用python寫了一個腳本:對於某個問題,每10秒刷新一次,當發現有人把問題改動得和設想的不一樣,那就再自動改回來——這不是什麼過激手段,也只不過利用規則而已。這個腳本至今用過兩次,看日誌,著實噁心到了幾個所謂「公共編輯計劃」的同學——想像下,偷偷摸摸凌晨兩三點修改問題,不到10秒就被改回原樣,那種抓狂的表情。

另一個例子,我本人喜歡關注妹子,所以關注的人很多,這樣帶來幾個問題:一個是tl太雜,一個是逼格不夠高。所以需要定時清理一下。於是寫腳本抓取了所以關注人的性別、問題數、贊同數、近期活躍時間等等特徵,然後提取一百個作為訓練數據,人工標註是否需要取關,再使用線性模型訓練,判斷哪些關注的價值比較低,好定期清理。(目前還沒有清理過,因為還在對關注者價值機器學習的結果進行評估。)

作為程序員,自娛自樂還是有些意思的,python干這些很順手。


批量下載Pixiv圖片的腳本2333


寫過一個迅雷雲播推送到xbmc上播放的腳本,很簡單,也沒什麼技術含量,但是對於喜歡看電影的人,真的是一大福利啊,免費使用迅雷雲播,通過xbmc用大電視看高清

腳本地址

https://gist.github.com/zhu327/987f3fc288ca55939e73

xbmc是在樹莓派上用的,一般720p+外掛字幕毫無壓力,另外附上樹莓派用xbmc心得一篇

http://bozpy.sinaapp.com/blog/13


輸入動漫名(模糊匹配)和集數,直接獲取到下載URL,貼到迅雷馬上使用

http://www.kylen314.com/archives/5729


確認安裝好urllib2和webscraping庫,然後粘貼此代碼到pythonIDE里運行,過一會兒打開d盤的f.txt 你懂的!

# -*- coding: UTF-8 -*-
__author__ = ftium4.com

#導入urllib2庫,用於獲取網頁
import urllib2

#使用開源庫webscraping庫的xpath模塊
from webscraping import xpath,common

def get_data(url):
req = urllib2.Request(url)
req.add_header(User-Agent, Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.14) Gecko/20080404 (FoxPlus) Firefox/2.0.0.14)
#獲得響應
reponse = urllib2.urlopen(req)

#將響應的內容存入html變數
html = reponse.read()

#以下抓取頁面的番號和片名

title = xpath.search(html, //div[@class="av style1"]/a[1]/@title)

return title

#創建文本用於保存採集結果

f=open(rD:f.txt,w)

for p in range(1,494):

url = rhttp://dmm18.net/index.php?pageno_b=%s%p
print url
title = get_data(url)

for item1 in title:
#將採集結果寫入文本中
f.write(str(item1)+
)
print item1

f.close()

其實我接觸python還不到兩個月(以前是寫前端的),接下來我要做到採集預覽圖並分類,然後寫一個簡易python採集教程。


公司招文員,招前台,還有一些其他妹子的非關鍵職位,每天百來封簡歷,一個一個點進去看太麻煩。寫了個爬蟲腳本,自動進郵箱把所有的簡歷照片下載下來,做成照片牆。一幫程序猿看簡歷就方便多了。:)


批量下載網易公開課


上海個人車牌拍賣程序的驗證碼識別……

坑爹的是,寫的時候參照拍賣程序的demo來訓練數據,真的拍的時候,下發的驗證碼跟demo程序的完全不一樣,導致第一次拍牌失敗


謝邀。當年玩 http://projecteuler.net/ 的時候寫過一些很雞賊的小腳本,有興趣可以看看 https://github.com/riobard/project-euler/blob/master/euler.py


想起以前和沈遊俠聊天的一個笑話

代碼開始 True, False = False, True

然後開始寫 Python 程序


e紳士下載器


分頁阅读: 1 2