想知道大家都用python寫過哪些有趣的腳本?

最近學習python,據說很好玩,看著有些大牛寫的腳本想學,但是還沒什麼方向,想知道大家都用python做過哪些事^_^


用python可以畫畫啊!可以畫畫啊!可以畫畫啊! 對,有趣的事情需要講三遍。
事情是這樣的,通過python的深度學習演算法包去訓練計算機模仿世界名畫的風格,然後應用到另一幅畫中,不多說直接上圖!

這個是世界名畫」畢加索的自畫像「(我也不懂什麼是世界名畫,但是我會google呀哈哈),以這張圖片為模板,讓計算機去學習這張圖片的風格(至於怎麼學習請參照這篇國外大牛的論文http://arxiv.org/abs/1508.06576)應用到自己的這張圖片上。

結果就變成下面這個樣子了

咦,嚇死寶寶了,不過好玩的東西當然要身先士卒啦!
接著由於距離開學也越來越近了,為了給廣大新生營造一個良好的校園,噗!為了美化校園在新生心目中的形象學長真的不是有意要欺騙你們的。特意製作了下面的《梵高筆下的東華理工大學》,是不是沒有聽說過這個大學,的確她就是一個普通的二本學校不過這都不是重點。
左邊的圖片是梵高的《星空》作為模板,中間的圖片是待轉化的圖片,右邊的圖片是結果

這是我們學校的內「湖」(池塘)

校園裡的櫻花廣場(個人覺得這是我校最浪漫的地方了)

不多說,學校圖書館

「池塘」邊的柳樹

學校東大門

學校測繪樓

學校地學樓

為了便於觀看,附上生成後的大圖:

詳細代碼見這個回答可以用 Python 編程語言做哪些神奇好玩的事情?


更新!!來一個有趣的腳本

用python生成一個html網頁,來看效果:

按下Ctrl+F鍵,彈出搜索框,輸入數字6,然後回車進行搜索:

思路是這樣的:用pygame庫,將文字渲染成像素矩陣,再將像素矩陣轉成numpy array,對比像素值,生成6和9. 很簡單的腳本(應該有更簡單的方法)。可以修改好寫上情話發給你喜歡的妹子!用6和9比較有迷惑性,不能一眼就看出動機。

效果體驗(一般PC端瀏覽器才有搜索功能哦):Hello

剛剛寫好,附上代碼:mepeichun/six_nine

# generate_html(from_someone, to_someone, words)
generate_html("Peichun", "You", "Nice to meet you!")

修改generate_html(from_someone, to_someone, words)中的參數即可。

=======以下為原回答=====

1.自動答題

我們學校要求我們完成網上的實驗安全考試。系統里分為題庫、練習和考試三部分:

有一天晚上,輔導員通知我們必須完成,系統快關閉了。每個人的成績必須在90分以上才通過。題型大概是這樣的:

要不就是常識題,要不就是一臉懵逼的題。

那時剛好學了點爬蟲,然後就先把題庫抓下來,保存到本地。然後模擬登錄,進入考試,從本地題庫里匹配答案,提交表單。

然後用py2exe編譯成exe可執行文件,出於學習與交流的目的,把程序發給班上的同學了。

2.字幕文件翻譯

去年的時候在Coursera學習一些課程,由於一些課程沒有中文字幕,於是就寫了個腳本,利用谷歌翻譯將英文翻譯成中英雙語字幕。

主要思路就是匹配,把原英文句子的整一句取下來,然後翻譯,再切割中文。

實際效果是這樣的:

對於一些較為口語化的句子,翻譯效果良好。但整體翻譯效果一般。剛開始用了一下,後來就直接看英文了,習慣了就好。

3.成績查詢

我自己比較關注成績,但是某一門課程出了成績,學校是不會通知我們的!我們只好隔一段時間去查一下。

於是我又寫了一段腳本,模擬登錄教務系統,抓自己的成績。

我們學校的教務系統驗證碼是這樣的:

一共抓了700多張驗證碼訓練,實際測試的時候正確率能達到90%以上。最難的一部分是驗證碼識別,當時學了點機器學習的皮毛,然後就用圖像處理加神經網路識別了驗證碼。用了numpy和scipy兩個庫,當時學的東西還不多:

然後就購買騰訊的雲服務,1元一個月的學生優惠,7*24小時每隔5分鐘就查一次成績,有新的成績就發郵件給我。

先去複習了,有空繼續補

【1】成績查詢mepeichun/check_score_system

【2】字幕翻譯mepeichun/SubtitleTranslate


我整理三個還能見人的代碼,鏈接放在最下方.
代碼一般是放在github上,源碼分析在博客中,每個代碼會有時間線,大概說明是什麼時期寫的,畢竟一開始水平是相當菜..後期則是越來越規範而且優雅的代碼,這種逐步的進步希望也能激勵想學python的朋友.

#####****************************原文的分界線************************
我整理下代碼也發出來。謝謝大家。

大三時候做個了以樹莓派和python為核心的小機器人。
功能一
用aiml模塊還有百度語音還有圖靈。
弄了可以自由聊天並且根據特定單詞執行特定動作。比如開冰箱,開燈。
功能二
配合opencv還有face+
跟隨你面孔移動的攝像頭附帶考勤功能。
功能三
監控區域,根據像素點的變化判斷是否有人移動。然後開燈,拍照。好像沒啥軟用

現在用python寫各種爬蟲,自認為破解了極驗驗證碼是自己目前最高的境界。。這個世界很龐大。想做的也很多。。用python讓我少考慮於細枝末節比如如何控制io輸出多少伏電壓。。敏捷開發想做就做。。

這些項目有部分留有源代碼和解析在個人資料里有博客地址,其中的樹莓派分類中。

#####****************************代碼的分界線***********************

1:智能語音對話
大三上學期剛學python所開發,平台主要是樹莓派,語音對話有linux版本,
源代碼: luyishisi/python_yuyinduihua
搭建方式:python語音智能對話聊天機器人,linuxamp;amp;amp;amp;樹莓派雙平台兼容 | | URl-team

2:樹莓派人臉識別語音考勤機
大三下開發,現在看來渣得不行,不過當時拿了好幾個省區域獎,當然這種物聯網比賽比較水.這個還是別看搭建方式,因為我自己都忘記要怎麼弄了,不過代碼在今年7月還被學弟拿去上海比賽(說是還能跑(開發中他們也參與不少,不是作弊))..如果實在有朋友想知道我再補清楚吧..
源代碼:luyishisi/Raspberry_face_recognition_attendance_machine
搭建方式:基於樹莓派以及語音與人臉識別的迎賓機器人交互系統開發計劃(已完結github中) | | URl-team

3:爬蟲方面 -- 如今:
(1)反爬技術匯總,此倉庫持續更新中,
歡迎star:luyishisi/Anti-Anti-Spider
相關博文:Python爬蟲amp;amp;amp;amp;數據挖掘 | URl-team
(2)無法用普通請求訪問的網站一般是有js檢測
使用phantomjs採集運用了強制跳轉與頁面等待等反爬技術的網站 | | URl-team
(3)用js隱藏數據的破解方式
運用phantomjs無頭瀏覽器破解四種反爬蟲技術 | | URl-team
微信公眾號上5k瀏覽:運用 phantomjs 無頭瀏覽器破解四種反爬蟲技術
(4)爬蟲更換ip的大招adsl
爬蟲破解IP限制-ADSL動態IP伺服器-部署小結 | | URl-team

4:在學python之前還寫了幾個前端三劍客的小遊戲(在被幾個公眾號偷轉後倒也有11k+瀏覽)
3個Web入門小遊戲,製作只需基礎三劍客 - WEB前端 - 伯樂在線 3個Web入門小遊戲,製作只需基礎三劍客 ---- 微信公眾號被轉發上的

在知乎純代碼的回答一般贊不高,我不玩套路了還是直接把存貨都發出來吧.有興趣的可以移步評論區..歡迎github上star一下,還有贊我一個謝謝..


#####****************************評論區的分界線************************
評論區有朋友說不少python項目不過是調用api介面的,這點我想說明一下,

首先這個評論是對的,因為當時剛學python,連發個請求調用api都頭疼半天,這種狀態去研究各種深入的明顯扯淡,在用他人的各種輪子的時候,越發的喜歡python的敏捷開發,當我想做些好玩的來學習時比如樹莓派的時候可以很快的找到相關資料,很快就能有可以玩的東西,在這個過程中成果本身是沒有社會意義的因為別人早就有了,這個時候這分成果則是作用與自己的技術成長上.到後來現在在爬蟲領域做的還可以的時候就有一些比較專業的難題攻克,比如:7種爬蟲更換ip的方式,用三種方式控制瀏覽器模擬操作,還有破解反爬蟲以及破解驗證碼(這個比較好玩)等,這些都寫成博文發布在伯樂在線上,畢竟當初從別人那裡學了很多.

####-------------------------------------------最後二叉樹的分界線----------------------------

一些值得看的相關回答:

  1. 想知道大家都用python寫過哪些有趣的腳本? - 知乎。 #
  2. 你寫過的自己覺著最牛X的黑程序? - 知乎。 #
  3. 學習Python很吃力,我是不是可以放棄編程了? - 知乎 #
  4. Python爬蟲傳送post請求要攜帶哪些參數? - 知乎。 #
  5. 不想拿學位證的計算機在校生? - 知乎。#
  6. 你在實驗室經歷過最危險的事情是什麼? - 知乎。 #
  7. 如果你能預知未來,你會不會更加努力? - 知乎。 #

12年我找工作的時候曾經用Python寫了一個簡歷,然後就靠它換了下一份工作

當時的代碼中有一些個人信息,我稍加改動也盡量保持了當年的風格,重新上傳了一個 github.com 的頁面


效果是這樣的(是2張圖片拼起來的):

PS: 如果你特別懶,可以打開 Your Python Trinket 看效果

歡迎關注本人的微信公眾號獲取更多Python相關的內容(也可以直接搜索「Python之美」):

http://weixin.qq.com/r/D0zH35LE_s_Frda89xkd (二維碼自動識別)


高票有個說可以畫畫的回答,我也來講一個畫鉛筆畫的實現吧。
原來在另外一個回答下貼過了其實,但是畫了兩張江學長的畫像居然就被和諧了,暴力膜果然不可取。。

依舊還是先上GitHub:duduainankai/pencil-python。

實現的效果差不多就是這樣的:

演算法是這篇論文Combining Sketch and Tone for Pencil Drawing Production提出的,來自香港中文大學,2012年NPAR的best paper。

然後如果先用高票的深度學習演算法畫一張圖出來,在轉一下鉛筆畫風格會怎樣呢?

接下來是廣告時間,幫同學加個濾鏡發個相親帖,有看上的可以聯繫我:

直接上傳圖片貌似太大了,所以我就用截圖了,更多的高清無碼可以看鉛筆畫圖片牆。所有原圖都在GitHub倉庫的input文件夾下可以找到,均來源於網路,如果侵權請聯繫我刪除。

沒有用到太複雜的深度學習演算法所以應該都可以試一下不至於死機的吧,不過還是有點吃內存,圖片大的話跑的時間還是會長了點。

以上。


無趣但有用。

幾個 python 腳本,分別是:

1. 公司訪問外網認證腳本(最初有同事寫過,我優化了一下)。

2. 統計周報系統所有同事的最近一篇周報。

3. 統計測試技術分享里指定一個月所有同事的文章數量。

4. 統計 bugzilla 系統里所有的 quips 。 這幾個小腳本都是利用空閑時間,經過多次修改完成的。

一、 公司訪問外網認證

在公司訪問外網得需要認證,有時候不一定能夠接觸到瀏覽器,所以利用腳本認證上網還是很方便的。

優化功能:

1. 登錄成功會有提示信息

2. 登錄失敗也會有提示信息,就是說可以捕捉異常

3. 有時候輸入中文名字不方便,所以可以把名字提前輸入腳本

4. 輸入密碼屏幕不可見,先前同事寫的腳本是明文密碼

源碼:

#!/usr/bin/env python
#coding:utf-8

####################
#公司訪問外網認證腳本
#update by kai.liang@i-soft.com.cn
###################

import urllib, urllib2, getpass

#name = raw_input("請輸入用戶名:")
name = "梁凱" # 在本行輸入您的名字
url = "http://172.16.1.3/webAuth/index.htm"

def auth():
page = 0
parameters = {"password":passwd,"pwd":passwd,"secret":"true","username":name}
#提交的數據參數
data = urllib.urlencode(parameters) #對參數進行編碼
req = urllib2.Request(url, data) #形成url請求
try:
response = urllib2.urlopen(req) #發送請求
response = urllib2.urlopen(req) #發送請求
page = response.read() #讀取返回的頁面
except Exception, e:
print "登錄失敗,請重新登錄!" #修復HTTPError錯誤
if page:
if "認證成功" in page or "該IP已登錄" in page:
print "恭喜您,登錄成功,您現在可以訪問外網了!"
else:
print "賬號或密碼錯誤,請重新登錄!"

if __name__ == "__main__":
print "####################################"
print "#公司訪問外網認證腳本 #"
print "#初次使用請將腳本12行替換為您的名字#"
print "####################################"
print "用戶名:%s" %name
passwd = getpass.getpass("請輸入密碼:")
auth()

二、 統計周報系統所有同事的最近一篇周報

本腳本可以把所有同事最近發布的一篇周報標題給抓取出來,這樣可以知道哪些同事有沒有更新周報了,嘿嘿。

這其實屬於爬蟲類型的腳本,使用urllib2 模塊抓取特定網頁,然後使用 re 正則表達式模塊進行過濾字元,把需要的信息給抓取出來。利用爬蟲還可以批量下載圖片。

上源碼:

#!/usr/bin/python
#coding:utf-8

####################
#本文檔爬取周報系統所有同事的最近一篇周報
#powered by: kai.liang@i-soft.com.cn
#date:20170224
#version:1.0
######################

import urllib2
import re #載入所需模塊

class Bloglist():
url="http://tfs.i-soft.com.cn/drupal/?q=blog/" #周報系統日誌網址的前綴

def __init__(self, userid):
self.url=Bloglist.url+str(userid) #網址=網址前綴+用戶id
def getHtml(self): #獲取網頁內容
try:
html = urllib2.urlopen(self.url).read()
return html
except Exception, e:
print "url error!!"

def getTitle(self): #應用正則表達式提取網頁中的日誌標題
html=self.getHtml()
reg = r"node/d+">(.*d{6}.*)"
titlere = re.compile(reg)
lines = html.split()
m = re.search(titlere, html)
titles = m.groups()
title = "".join(titles)
return title
def main():
"""
zhaopanpan:7
lixiaoshuang:21
huangjun:22
wangjue:23
liuke:24
lipeng:28
hanjingjing:30
lixingfeng:41
liuhui:42
liangkai:43
liulu:44
zhaolili:45
yaoxiangchuang:46
liuchang:47
liuchunyuan:48
lufei:49
liuyang:50
chijianping:51

""" #每位用戶的id
users = [7,21,22,23,24,28,30,41,42,43,44,45,46,47,48,49,50,51]
print "----------------------------"
print "測試中心成員最近一篇周報"
print "----------------------------"
for i in users:
userBlog = Bloglist(i) #對象初始化
title = userBlog.getTitle() #使用對象方法
print title
print "----------------------------"

if __name__== "__main__":
main()

使用方法:./weekpaper-spider.py

[root@server49 pytest_20170309]# ./weekpaper-spider.py
----------------------------
測試中心成員最近一篇周報
----------------------------
測試個人周報20170331-趙盼盼
測試個人周報-20170331-李小雙
測試個人周報-20170331-黃俊
測試個人周報-20170331-王珏
測試個人周報-20170331-劉柯
測試個人周報20170331-李鵬
測試個人周報20170331-韓晶晶
測試個人周報20170331-李興峰
測試個人周報-20170331-劉輝
測試個人周報-20170331-梁凱
測試個人周報-20170331-劉璐
測試個人周報-20170331-趙麗麗
測試個人周報-20170331-姚翔川
測試個人周報-20170331-劉暢
測試個人周報-20170331-劉春媛
測試個人周報20170331-路斐
測試個人周報-20170407-劉楊
測試個人周報-20170331-遲健平
----------------------------

三、 統計測試技術分享里指定一個月所有同事的文章數量

本腳本可以統計測試技術分享里指定一個月所有同事的文章數量,包括每位同事發布文章數量,轉載和原創各自數量。還有總文章數量以及總轉載和總原創數量。辨別是不是轉載主要是看標題有沒有 「轉載」或「轉」的關鍵詞,如果同事不寫這個關鍵詞的話只能認為是原創了。 最開始可以顯示作者標題,看著亂我給去掉了。現在是直接屏幕輸出,其實可以寫入文本文件,或者製作成excel文件,當然得使用第三方模塊才可以。

源碼:

#!/usr/bin/python
#coding:utf-8

##################
#爬取測試技術分享里指定某一月所有同事的文章發布數量
#powered by: kai.liang@i-soft.com.cn
#date: 20170307
#version: 1.0
#################

import urllib2
import re
import sys #載入網路、正則、系統的模塊

try:
month = sys.argv[1] #運行腳本時傳遞的參數
except Exception as e:
print "請輸入參數,例如:"
print "查詢3月份的文章請輸入:python blog-spider.py 03"
exit()
year = 2017 #默認年份為2017,可以此處修改

class Bloglist(): #定義類,腳本的核心
total_zhuan=0
total_yuan=0
total = 0
urlHead = "http://192.168.32.3/blog/?author=%sm=%s"
def __init__(self, author, date="201703"): #初始化參數
self.url = self.urlHead %(author,date)
self.zhuan = 0
self.yuan = 0
def getHtml(self): #獲取網頁文本
html = urllib2.urlopen(self.url).read()
return html
def getTitle(self): #獲取網頁中某一作者的文章標題
reg = r""bookmark">(.*)"
titlere = re.compile(reg)
title = re.findall(titlere, self.getHtml())
return title
def count(self): #計算作者的文章數量,本打算輸出文章標題
#看著亂,就給注釋掉了
#print "文章標題:"
#print "-----------------------------"
for line in self.getTitle():
# if "轉載" or "(轉)" in line:
if "轉載" in line or line[0:9]== "(轉)":
self.zhuan += 1
else:
self.yuan += 1
#print line
#print "-----------------------------"
print "發布文章:" + str(self.zhuan+self.yuan) + "篇 ",
print "轉載:"+ str(self.zhuan) + "篇 " + "原創:" + str(self.yuan) + "篇"
Bloglist.total_zhuan = Bloglist.total_zhuan + self.zhuan
Bloglist.total_yuan = Bloglist.total_yuan + self.yuan
Bloglist.total = Bloglist.total_zhuan + Bloglist.total_yuan
def author():
date = str(year) + str(month)
user = {2:"李 鵬", 3:"王 珏", 5:"黃 俊",6:"韓晶晶", 7:"李小雙", 8:"趙盼盼",
10:"劉 珂",11:"劉 輝", 12:"劉春媛", 13:"路 斐", 14:"梁 凱", 15:"李興峰", 16:"劉 璐",
17:"姚翔川",18:"劉 暢", 19:"劉 楊", 20:"趙麗麗", 21:"遲建平"}
#測試成員對應的id
print "-------------------------------------------"
print "2017年%s月份測試中心成員發布文章情況" %month
print "-------------------------------------------"
for i in user.keys():
userPaper = Bloglist(i, date) #成員對象的實例化
print "%s" %user[i],
userPaper.count()
print "總計:%s篇,轉載:%s篇,原創:%s篇" %(Bloglist.total, Bloglist.total_zhuan, Bloglist.total_yuan)
print "-------------------------------------------"

if __name__ == "__main__":
author()

使用方法:

./blog-spider.py 03 腳本後面加入月份,默認是年份是2017。
[root@server49 pytest_20170309]# ./blog-spider.py 03
-------------------------------------------
2017年03月份測試中心成員發布文章情況
-------------------------------------------
李 鵬 發布文章:3篇 轉載:1篇 原創:2篇
王 珏 發布文章:2篇 轉載:0篇 原創:2篇
黃 俊 發布文章:2篇 轉載:1篇 原創:1篇
韓晶晶 發布文章:2篇 轉載:1篇 原創:1篇
李小雙 發布文章:1篇 轉載:0篇 原創:1篇
趙盼盼 發布文章:3篇 轉載:2篇 原創:1篇
劉 珂 發布文章:3篇 轉載:0篇 原創:3篇
劉 輝 發布文章:3篇 轉載:2篇 原創:1篇
劉春媛 發布文章:3篇 轉載:2篇 原創:1篇
路 斐 發布文章:2篇 轉載:1篇 原創:1篇
梁 凱 發布文章:3篇 轉載:2篇 原創:1篇
李興峰 發布文章:3篇 轉載:1篇 原創:2篇
劉 璐 發布文章:3篇 轉載:2篇 原創:1篇
姚翔川 發布文章:3篇 轉載:2篇 原創:1篇
劉 暢 發布文章:3篇 轉載:2篇 原創:1篇
劉 楊 發布文章:3篇 轉載:2篇 原創:1篇
趙麗麗 發布文章:3篇 轉載:1篇 原創:2篇
遲建平 發布文章:3篇 轉載:2篇 原創:1篇
總計:48篇,轉載:24篇,原創:24篇
-------------------------------------------

四、統計bugzilla系統里所有的quips

大家訪問bugzilla時會看到很多好玩的句子,可是你有沒有想過一共有多少個quips呢,如果是都抓取下來該如何去做呢?好,大家先不要參考下面的代碼,自己去寫寫,然後跟我的對比一下,看看你到底比我強多少。

此處需等待10分鐘……………………………………

好,相信大家都寫完了。我們來分析一下,首先應該使用一個可以看到quips的地址,這個地址bug數量越少越好,減少載入時間呀。然後把所以網頁內容抓取下來,分析quips的關鍵詞,使用re模塊的正則表達式過濾quips。因為每次顯示的quips都是隨機的,所以你得抓取足夠多的次數才可以遍歷整個quips的資料庫,而且還會有重複,你得把重複的去掉。我選擇獲取100次quips,執行一遍可能不能遍歷所有的數據,得運行幾遍才可以。 我得到的結果是一共含有48個quips。 上源碼:

#!/usr/bin/python
#coding:utf-8
import urllib2
import re
import os

#查看quips所使用的網址
url = "http://192.168.32.3/buglist.cgi?query_format=advancedlist_id=81057short_desc=123short_desc_type=allwordssubstrproduct=smb_DEV"

def getquip():
html = urllib2.urlopen(url).read() #讀取網頁內容
rules = r""quips.cgi">(.*)"
reg = re.compile(rules)
quip = re.findall(reg,html) #使用正則表達式提取quips字元
quip = "".join(quip)
#print quip
q = open("quips.txt", "r+")
quips = q.read()
q.close() #讀取文件內容
if quip not in quips: #如果獲取的quip不在quips.txt文件里則寫入文件
f = open("quips.txt", "a")
f.write(quip)
f.write("
")
f.close()
def isquips():
if not os.path.isfile("quips.txt"):
a = os.system("touch quips.txt") #判斷quips.txt是否存在,不存在就創建
if __name__ == "__main__":
print "Getting quips, please waiting....."
isquips()
for i in range(100): #獲取100個quips
getquip()
print "Getting quips completed, please look over the quips.txt."

使用方法:./bugQuips.py

[root@server49 pytest_20170309]# ./bugQuips.py
Getting quips, please waiting.....
Getting quips completed, please look over the quips.txt.
[root@server49 pytest]# cat quips.txt
水深火熱~
罵程序員職業的人大都自己就是程序員。因為高水平的人不屑於罵,低水平的人不知道怎麼罵
……於浩歌狂熱之際中寒;於天上看見深淵。於一切眼中看見無所有;於無所希望中得救。……
質量即生命,責任重泰山
程序員都是好男人,因為他們一整天都在捫心自問:我到底錯在哪了,讓我知道,我一定改...
Fear can hold you prisoner. Hope can set you free.
再見,羅納爾多!
過少的測試是一種不負責任,過多的測試是一種犯罪!
你是我們加班的罪魁禍首,堅決消滅你!!!!!!!!!!
很多程序員不知道格子衫有一個隱藏屬性:穿上後遇到BUG的概率減少5%!
問君能有幾多愁,恰似調完bug改需求!!!
平均每三個「屌絲」擁有一個女友(男友)
我們有理由相信計算機的世界沒有詭異的事情,一定是自己犯了某個傻X的錯誤
"hello world" 就是罪魁禍首。不編程,何來bug!?!?
原諒我一生不羈放縱愛自由
若是黃藝博不娶林妙可,我就再也不相信愛情了……
一切罪惡BUG的根源都是「Hello,word!」
一切Bug都是紙老虎!你強他就弱!你弱他就強!在戰略上藐視bug,在戰術上重視bug!有木有?
北京人說,推開窗,咱就能聞到煙。上海人講,這有啥,呵呵,打開自來水,咱就能喝到排骨湯。
所有的程序都有邏輯,所有的事物都有因果。
人生一夢,白雲蒼狗
the quieter you become,the more you are able to hear
愛他,就給他提bug;恨他,也給他提bug
神馬bug,都是浮雲
國家項目是學術腐敗之源!
抗bug戰爭,漫長而艱難
誰也無法改變現狀,唯有無數程序員血灑大地,才能使項目重建天日~
Jobs教主去了,改變世界的事就交給我們吧
^如今但願關門睡,一任梅花任雪飛^
你若不離不棄,我必死無疑
人生三恨:一恨海棠無香,二恨鰣魚多刺,三恨紅樓夢未完
輕輕地我走了,正如我悄悄的來;我揮一揮衣袖,fix一片bug……
你若安好,便是晴天。
人生如夢亦如幻,朝如晨露暮如霞。
一個程序員看到bug後,如果第一反應是,這是硬體、庫的問題,那麼說看程序員入門
片雲歸洞非有意,我造Bug本無心
恨你在心口難開
滿紙心酸淚。
不管你有多少經驗,BUG一直跟著你
生命不息,測試不止
天下風雲出我輩,一入江湖歲月催
成也bug,敗也bug
皇圖霸業談笑中,不勝人生一場醉
不生不滅,不垢不凈,不增不減
未來姍姍來遲,現在如箭飛逝
知識就是力量,一種讓別人覺得自己很笨的力量。。。。
菩提本無樹,明鏡亦非台,本來無一物,何處惹塵埃。
道,生一一,生二二,生三三,生萬物萬物,附陰而抱陽,沖氣以為和。

結語直接複製網頁的源碼由於格式問題可能不能執行,建議wordpress上裝個代碼高亮顯示的插件,那樣查看代碼就方便了。需要的童鞋去 github 上下載吧。

紙上得來終覺淺,覺知此事要躬行。看十行代碼不如實實在在的敲一行代碼。當你敲出來時才可以發現一些細節問題,才可以體會代碼的精妙之處。

我來自馬哥教育
我這裡有Linux和Python的知識
理論與實戰齊頭並進的學院派教授方法
抓住你現在,培養你將來


寫過一個去網站查詢圖書分類的腳本。

開始使用Python時,主要用來做操作系統的自動化檢查工作,基本都是獲取系統信息,然後對字元串進行判斷處理。
後來有次我哥的學校來了15w的圖書,要把這些圖書分別分類放入圖書館,但是隨書發來的Excel中書名、作者、ISBN這些信息都有,唯獨缺少圖書對應的分類,要是一本本去查詢分類再貼標籤,全校老師一起上都要做好久,就問我有沒有辦法給搞一個自動獲取分類的程序,開始想用搜索引擎來做,實際發現搜索出來的結果很難分析,去豆瓣圖書看裡面的信息也不是很全,找了很久,發現了一個很興奮的網站 OpenISBN: http://openisbn.com/ ,根據ISBN就能查到圖書的所有信息,於是決定通過這個網站來完成。
主要用到了 xlrd、xlwt、urllib、 BeautifulSoup、re這幾個庫,xlrd、xlwt分別用來讀寫excel,urllib用來抓取網站信息,BeautifulSoup 用來定位查找的範圍,re則用來提取分類信息。程序寫完自動跑了幾個小時,把所有圖書分類設置完成。
(開始很擔心網站會不會封我IP,然而網站良心大大的,並沒有做任何處理,贊一個)


剛工作的時候喜歡一個妹紙,有一次妹紙女神參加了一個當時還很流行的曬照比賽的活動,那時候還是微博比較火的時候。

上圖是剛從某度找的一張,給大家一個直觀感受,女神比這個不知美多少倍。那個投票網站沒有做很複雜的認證,投票也不需要註冊賬戶,所以很輕鬆抓包找到了投票post介面,開始寫了一個腳本來投票。

很快發現同一個ip只能投一次,這個難不住寫過不少爬蟲的我,電腦直連寬頻,斷開寬頻連接然後再連接,就可以獲得一個新的ip,並且在聯通的ip池中重複的概率並不大。

於是很快將女神妹紙的名次刷到了第一名,然後。。。就沒有然後了。。。。。。


哈哈


之前一直想回答這個問題 , 但是感覺一點資格也沒有. 現在我的python終於用到了 , 讓我萬分激動 , 怒答這個問題.

在我做了這件事情之後 , 她覺得我越來越懂她了 , 嘻嘻

有一天 , 我發現我心儀已久的妹紙在朋友圈裡分享了知乎專欄的文章 , 就知道她也刷知乎 . 如果在知乎上關注她 , 我就能知道 , 她最近關注什麼 , 心裡想些什麼 , 了解了解她喜歡的方面 , 還能作為談資 , 簡直太贊了 (*^^)v .
但是輸入她的名字...... 在知乎上根本找不到好嗎 (?`灬′?)
我們兩個聊天的時候 , 剛好說到了她分享的那篇文章 ,
我很自然的說: "知乎上你用的不是真名呀, 就我這麼天真用了真名.."
她笑著說:"那個可以改呀" ,
"憑什麼知乎團隊不讓我改啊!!! ",我答道," 不如我們互粉吧^_- "
哎 , 於是她打開zhihu , 看了看我的主頁 , 並沒有關注我...... 可能是贊太少了吧... 達不到她的要求 , 或者她不想讓我知道她在看什麼吧 , 也許她希望自己的知乎是交淺言深 , 不希望被身邊人看見... (?-﹏-?) 失望.

我回去想了想 , 她說名字可以改 , 那她可能以前也用的是真名 , 找到破綻了!
知乎的名字可以改 , 但是id是改不了的 !
每個人的主頁地址 , people後面那個就是TA的id,

http://www.zhihu.com/people/zhang-san-12-45

例如張三同名很多 , 後面就會加上數字. 她的名字拼音相同的較多 , 我試了一下 , 這個數字是不超過100的. 它的組合方式有 zhang-san , zhang-san-1 zhang-san-12-43 依次類推.


好 , 現在我就可以開始尋找她的賬號了! 既然她改名了 , 那她名字滿足的條件一定是: 昵稱的拼音不是真名. 這個用pypinyin模塊可以解決 , 這樣子 , 需要我人工查看的主頁就少很多了.

1. 在github上 下載 @egrcc 的zhihu-python
2. 尋找她了ing

# coding: utf-8

from zhihu import User
from pypinyin import pinyin, lazy_pinyin
import pypinyin

user_url = ""
user_id = ""
l = [u"bu", u"xu", u"kan"]
#這裡是她名字的拼音, 還是不要暴露她的好, (*/ω\*)
for num in range(100): #先在 -100以內搜索
try:
user_url = "http://www.zhihu.com/people/bu-xu-kan-" + str(num)
user = User(user_url)
user_id = user.get_user_id()
if l != lazy_pinyin(user_id.decode("gbk")): #看看她有沒有用原名
print user_id, " ", num
except:
pass

for i in range(100):
for j in range(100): #在 -100-100以內搜索
try:
user_url = "http://www.zhihu.com/people/bu-xu-kan-" + str(i) + "-" + str(j)
user = User(user_url)
user_id = user.get_user_id()
print user_id, " ", i, "-", j
except:
pass

爬了好久 , 結果出來了 , 這些昵稱不多 , 我翻翻他們的主頁就幸運地找到了我心儀的妹紙:

XXXXXXXX 26
XXXXXXXX 27
XXXXXXXX 42
XXXXXXXX 72
XXXXXXXX 94
she is here! 6 - 36
XXXXXXXX 6 - 76
XXXXXXXX 7 - 86
XXXXXXXX 10 - 35
XXXXXXXX 28 - 67
XXXXXXXX 32 - 28
XXXXXXXX 32 - 66
XXXXXXXX 34 - 75

從那之後 , 我每天都可以看她的主頁啦~ 至於我有沒有追到她呢....
----------------------------------------------------------------------------------------------------------------
我匿名的原因是因為我正在追她 , 如果我追到 , 或者沒追到她 , 我就不匿了.
在我打開她的主頁之後 , 我發現她喜歡科幻 , 也對推理小說感興趣 , 關注穿衣打扮方面 , 符合我的胃口呀 . 最近呢 , 她關注情感方面的問題變多了 , 我不知道是不是因為最近我和她聯繫變頻繁了 , 激起了她一些感覺 , (*/ω\*)

我會加油噠~


剛剛用上了,有個任務在excel裡面導些用戶數據進資料庫表,剛好學了差不多一星期的python,用上了,哈哈,不過寫得不好,欄位直接寫死了,湊合用

#-*- coding: utf-8 -*-
#encoding=utf-8
import MySQLdb
import xlrd
#打開excel
data = xlrd.open_workbook("testpython.xls")
#根據名字拿到excel的某個表
table = data.sheet_by_name("Sheet1")
#行數
nrows = table.nrows
for rownum in range(1,nrows):
row = table.row_values(rownum)
print len(row)

# 打開資料庫連接
db = MySQLdb.connect("localhost","root","","pythonmysql" )
#鏈接資源
cursor = db.cursor()

# SQL 插入語句
sql = "insert into pyuser (username,password, email, qq) values("%s", "%s","%s","%s")" %
(row[0],row[1],row[2],row[3])
print sql
try:
# 執行sql語句
cursor.execute(sql)
# 提交到資料庫執行
db.commit()
except:
db.rollback()
# 關閉資料庫連接
db.close()

算完成了,大神勿噴

繼續更新:
喜歡切爾西,於是弄了一個sae,不過這一次,用pyquery+requests+lxml來搞了,每天新浪,網易,騰訊三大門戶網站更新我車的文章,我就把它爬到我的sae的web上,地址:Chelsea新聞

python腳本:

163
#-*- coding: utf-8 -*-
#encoding=utf-8
import MySQLdb
from pyquery import PyQuery
from time import ctime,sleep
import requests
import os
import sys

reload(sys)
sys.setdefaultencoding("utf-8")

def getNews(doc):
for data in doc(".articleList li"):
title = PyQuery(data).find("a").text()
link = PyQuery(data).find("a").attr("href")
addTime = PyQuery(data).children(".postTime").text()
cname = "網易新聞"
comeLink = "http://www.163.com/"
getData(title,link,cname,addTime,comeLink)

def getData(title,link,cname,addTime,comeLink):
db = MySQLdb.connect(host="localhost", port=3306,user="root",passwd="123456",db="app_chelseafc",charset="utf8")
#db = MySQLdb.connect(host="10.67.15.102", port=3307,user="5330x2woz0",passwd="5iihxiwxx4kjlim5kl4m14wmx115myw0y243y530",db="app_chelseafc",charset="utf8")
cursor = db.cursor()
sql = "insert into acticle (title,link,cname,addTime,comeLink) values("%s","%s","%s","%s","%s")" % (title,link,cname,addTime,comeLink)
print sql
try:
cursor.execute(sql)
db.commit()
print "success"
except:
db.rollback()
db.close()
if __name__ == "__main__":
r = requests.get("http://sports.163.com/special/y/00051F15/ycqexmore.html")
html = r.text
doc = PyQuery(html);
getNews(doc)

qq:
#-*- coding: utf-8 -*-
#encoding=utf-8
import MySQLdb
from pyquery import PyQuery
from time import ctime,sleep
import requests
import os
import sys

reload(sys)
sys.setdefaultencoding("utf-8")

def getNews(doc):
for data in doc(".newslist li"):
title = PyQuery(data).find("a").text()
link = PyQuery(data).find("a").attr("href")
cname = "騰訊新聞"
comeLink = "http://www.qq.com/"
addTime = ctime()
getData(title,link,cname,addTime,comeLink)

def getData(title,link,cname,addTime,comeLink):
db = MySQLdb.connect(host="localhost", port=3306,user="root",passwd="123456",db="app_chelseafc",charset="utf8")
#db = MySQLdb.connect(host="10.67.15.102", port=3307,user="5330x2woz0",passwd="5iihxiwxx4kjlim5kl4m14wmx115myw0y243y530",db="app_chelseafc",charset="utf8")
cursor = db.cursor()
sql = "insert into acticle (title,link,cname,addTime,comeLink) values("%s","%s","%s","%s","%s")" % (title,link,cname,addTime,comeLink)
print sql
try:
cursor.execute(sql)
db.commit()
print "success"
except:
db.rollback()
db.close()
if __name__ == "__main__":
r = requests.get("http://sports.qq.com/l/isocce/yingc/chelse/che.htm")
html = r.text
doc = PyQuery(html);
getNews(doc)

sina:
#-*- coding: utf-8 -*-
#encoding=utf-8
import MySQLdb
from pyquery import PyQuery
from time import ctime,sleep
import requests
import os
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
def getNews(doc):
for data in doc(".d_list_txt li"):
title = PyQuery(data).find("a").text()
link = PyQuery(data).find("a").attr("href")
addTime = PyQuery(data).children(".c_time").text()
cname = "新浪新聞"
comeLink = "http://www.sina.com.cn/"
getData(title,link,cname,addTime,comeLink)

def getData(title,link,cname,addTime,comeLink):
db = MySQLdb.connect(host="localhost", port=3306,user="root",passwd="123456",db="app_chelseafc",charset="utf8")
#db = MySQLdb.connect(host="10.67.15.102", port=3307,user="5330x2woz0",passwd="5iihxiwxx4kjlim5kl4m14wmx115myw0y243y530",db="app_chelseafc",charset="utf8")
cursor = db.cursor()
sql = "insert into acticle (title,link,cname,addTime,comeLink) values("%s","%s","%s","%s","%s")" % (title,link,cname,addTime,comeLink)
print sql
try:
cursor.execute(sql)
db.commit()
print "success"
except:
db.rollback()
db.close()
if __name__ == "__main__":
r = requests.get("http://roll.sports.sina.com.cn/s_premierleague_all/3/index.shtml")
r.encoding ="gb2312"
html = r.text
doc = PyQuery(html)
getNews(doc)

真的很好玩
有空再搞一個提醒功能,三大門戶網站更新就提醒一下,再擼擼多線程


高三的時候用塞班手機,為了督促自己學習,寫了個帶界面的高考倒計時工具。
記得塞班系統有個記錄菜單圖標和對應的程序入口信息的xml文件,於是我給倒計時工具加了個功能,在上課的時候把這個xml文件讀到內存後刪掉對應文件,下課的時候再寫回去。
上課從此沒有玩過手機。


# 因為一些py現在已開源 鏈接在最後

有趣的腳本很多 這裡說個實用的

答主帝都某涉密不上網上網不涉密大學軟體專業 專業有門選修課講SEM的課程

這門課分線上線下兩部分 線下課請商界的教授講 兩周一節 還是挺好的

但是線上部分奇坑無比 錄MOOC的老師語無倫次清晰度還卡 而且MOOC用的網站xx幫校園網一學期有一大半都訪問不了

此為背景

期末快到了 大家線上課快刷不完了 信息中心才解決問題 線上課有些作業和任務 其中有這麼一個:

WTF??一天三篇博文?快期末了網站才能訪問讓我們補一天三篇?

這時候大家都不打算做這個作業了 答主這時候手頭的項目正好剛結束了最忙的階段 於是就來搞事情

首先隨便提交一篇博文 wireshark抓包分析一下表單和header

欄位名都很直白 寫個腳本封個函數用來post博文

再簡單寫個腳本測試一下

執行之後 成功了

本來到這裡就應該結束了 然而這並沒有滿足答主搞事情的慾望

隨便刷博文的話 萬一助教心情一好看了一眼 事情就敗露了_(:з」∠)_

所以為了提高一下博客的質量 答主準備轉載一些新聞 於是盯上了China Daily

沒錯就是你 f12簡單分析一下dom

再寫個scrapy爬蟲

爬300+新聞備用

然後從保存的json中獲取數據 設置間隔時間提交

道高一尺 魔高一丈

=============================

2017.6.7晚更新

新浪的檢測頻繁提交的機制挺迷的

有的時候隔好長時間交還是頻繁操作 網上也有很多普通用戶求助 所以直接把腳本傳伺服器上跑了 一小時post一次

=============================
2017.6.9更新

親測10分鐘一次post不會被卡

==============================

2017.6.13 更新

本來這段搞事情之旅到這就結束了 然而答主又發現了個好玩的(??ω?)?

還是那個網課 後邊有這樣一個作業

還要按照訪問量評分??

(雖然答主知道老師其實並不會看 不過這句話又一次成功地勾起了我搞事情的慾望)

這次的事情比較簡單 提高一下PV和UV就行 PV很好刷 UV寫個腳本自動切換下vpn刷也可以 然而這就沒趣了 答主準備用另一種方式搞事情(怎麼搞呢 往下看不就好了嘛(? ??_??)?)

首先還是先寫個腳本刷PV

簡單地丟個Request訪問一下頁面 如果PV總計是在後端返回頁面的時候增加的話 我們運行腳本再刷新頁面可以看見閱讀量增加了2

然而……

額 看來後端並沒有這樣做 那麼增加訪問量的代碼可能使用了ajax或者直接post到一個api 那麼我們就來找一下這段腳本

找腳本之前 我們先看一下閱讀量的id 看看能不能找到什麼有用的信息

這個id的後半段是博客url的後半段 可以猜測這段hash是博文的唯一區分欄位 那麼訪問api的代碼會帶上這段內容

那麼 我們就在network中找到帶有這個參數的Request

找了好多 找到這麼一條 這條還帶有act參數 暫且猜測act表示訪問者的動作 這裡的4很可能是一般的訪問 而且這個Request的Response剛好是閱讀量

那麼就寫個腳本測試一下

再刷新看一下運行腳本之後的訪問量

Bingo 就是你

到這裡 刷PV已經解決了 那麼UV怎麼辦呢?

之前說了答主懶得寫腳本自動切vpn了 在不知道新浪UV統計原理(ip還是cookie還是都有還是vtoken什麼亂七八糟的)的情況下隨意改cookie不一定能起到效果 所以答主並沒有用這兩個方式嘗試

而是……

還記得之前刷博文的代碼嗎…… 我們把刷PV的代碼插到每次post中

然後把這個腳本開源給同學刷_(:з」∠)_ 這樣 同學每次post博文的時候都會順帶增加一下我的那篇博文的訪問量 而且ip cookie等都不同 順帶刷了UV 實現雙贏

最後 https://github.com/Croxxpwn/sbgxb


之前寫過一段爬蟲,爬取了我校2016級碩士的所有學籍照。就是這樣的...

然後得到我院平均臉是這樣的...

PS:顏值好像還可以 :-D

後來接觸Deep Learning,尋思著將其做成一份類似於MNIST的小型benchmark以供實驗室內部小夥伴測試演算法之用~

大家都知道,supervised learning 最頭疼的就是給圖片打 label 啊...

於是想了一個主意,將其做成了一個小網站,利用crowd sourcing 的辦法讓大家給這些照片的顏值打分(給美女帥哥評判顏值,大家就不會覺得這個打 Label 的過程那麼無聊了~)

於是,數據標註完成了,就像這樣...

顏值在7.5分以上的有哪些呢?

然後借鑒 CIFAR-10 and CIFAR-100 datasets 的設計思想,利用 OpenCV3.2 完成了這個小型benchmark...

接下來就是基於Tensorflow完成卷積神經網路分類器。常見的 data augmentation 方法、dropout=0.5,SGD,weight decay,learning rate每訓練500epoch就降低為1/10......

然後就是調參,調參,調參......

最後保存調參效果最好的checkpoint文件,就得到了訓練好的model。以後可將它融合進爬蟲程序,使其具備顏值識別功能,而不是那麼粗暴地抓取照片啦~

PS:這只是當時剛接觸時候練手的小demo,其實實際上的顏值檢測要比這複雜得多,比如人臉矯正等等等等,以後有空的話會逐步完善演算法噠~

另:顏值計算在這裡: 人工智慧告訴你,你有多好看


解win自帶小遊戲 空檔接龍 的小工具


用nmap花了三天時間掃描學校內網所有主機80埠,用Python正則對結果進行過濾找到80埠open的主機,手動試出了某個攝像頭終端的ip,隨機試出用戶名密碼,提取關鍵信息,用Python對上面找到的所有ip進行模擬登陸抓取頁面並匹配關鍵字,找到了學校所有監控的入口。。。然後。。就沒有然後了。。果斷匿了
===============================================
居然被學弟認出來了,就不匿了吧


我這輩子看過最有趣的腳本就是那天辦公室小妹妹看了我們的課,興緻大發地寫腳本!

造數 - 新一代智能雲爬蟲

00001. print("A")

00002. print("B")

00003. print("C")

00004. print("D")

00005. print("E")

00006. print("F")

00007. print("G")

00008. print("H")

00009. ...

00026. print("Z")


我用純 Python 寫了一個五百行左右的腳本,演示概率論中的 Wilson 一致生成樹演算法和圖搜索中的深度/廣度優先演算法,整個程序不使用任何第三方模塊和外部程序,是把整個動畫編碼為位元組流一次輸出得到的:

項目地址見 neozhaoliang/pywonderland

(記得去 github 上點個贊~~)


這個算不算

——————
曾經我是一個熱愛運動,每天用keep打卡健身的python愛好者,直到有一天,我學會了抓包。
兩個小時後,用requests構造了幾個包,我的keep運動等級就從T4到T10啦,兩周後我就瘦了5斤啦,兩個月後我就成功轉行成為爬蟲工程師啦。
——————
身體一天不如一天,也不知道算不算有趣的腳本
(?&>ω&<*?)


直接在命令行界面輸出圖片.

原圖:

結果:

原圖:

結果:

無聊的時候做的...

代碼就不貼了...

有點辣眼睛...


推薦閱讀:

python網頁爬蟲是非法的嗎?
如何利用python登錄知乎頁面?
去哪可以找到幫忙開發爬蟲的呢?
python 爬蟲 ip池怎麼做?

TAG:Python | Python入門 | Python開發 |