轉知乎的文章 都用 Python 來作什麼啊

你們都用 Python 來作什麼啊? Tsing:誰說我是來看段子的。。。 首先上一首Python之禪:

 
Python是一個很是好用的程序語言,開發的速度很是快。我用Python已經一年多了,從Python2.7到如今的Python3.4,也寫了好多的小程序,其中大部分都是爬蟲程序,下面簡單列舉幾個,可憐了我科的各類系統。

 

0. 製做引文分析利器HistCite的便捷使用版本html

 
怎麼又出現了一個序號爲零的啊!沒錯,這個又是我後來加上的,嘻嘻~

對於成天和文獻打交道的研究生來講,HistCite是一款不可多得的效率利器,它能夠快速繪製出某個研究領域的發展脈絡,快速鎖定某個研究方向的重要文獻和學術大牛,還能夠找到某些具備開創性成果的無指定關鍵詞的論文。可是原生的HistCite已經有4年沒有更新了,如今使用會出現各類bug,因而我就用Python基於HistCite內核開發了一個方便使用的免安裝版本。具體的使用方法和下載連接見個人第一篇知乎專欄文章:文獻引文分析利器HistCite使用教程(附精簡易用免安裝Pro版本下載) - Tsing的文章 - 知乎專欄python

 

 
 

1. 破解觀看中科大網絡課堂web

 

中國科學技術大學網絡課堂(數據庫

)是一個很是好的平臺,上面聚集了不少知名教授的授課視頻,以及最新的講座、報告、表演視頻,內容仍是至關豐富的。可是這些視頻只面向校內IP開放。

因此想在校外看到這些視頻必須破解視頻地址,因而利用Python的requests庫結合BeautifulSoup,用了不到10行代碼就能夠獲取真實下載地址。

爲了方便沒有安裝Python的電腦使用,簡單寫了一個GUI界面,給室友用,都說仍是挺好的用的哈。

考慮到視頻版權問題,代碼和程序就不放出來了,請你們見諒。
 

2. 獲取中科大研究生系統所有學生姓名、學號、選課信息編程

 

登陸中國科學技術大學的研究生綜合系統(中國科學技術大學研究生信息平臺json

),能夠看到每一門課選課的學生姓名和學號,當時就想能不能作一個這樣的系統,來輸入任何姓名(或者學號)就能夠看到他全部的選課信息呢?這是選課首頁:

點擊每門課的已選人數連接,能夠看到全部的選課學生姓名和學號:

下面就利用requests的模擬登陸功能,先獲取所有課程的連接,並保存對於的課程信息,而後挨個獲取了全部課程的選課信息。爲了保護學生信息,對程序的關鍵部分進行了模糊處理,但願你們諒解。

 
這樣就獲取了一個巨大的json文件,裏面所有是學生姓名學號選課信息:

有了這個json文件,咱們能夠寫入數據庫,也能夠直接利用json文件來查詢:

爲了方便其餘人使用,基於上面的數據我開發了一個線上版本:

輸入姓名或者學號均可以直接查詢別人的選課信息:

 
這個地址就不放出來了,若是您是科大的研究生,私信我,我把連接發給你。
 

3. 掃描中科大研究生系統上的弱密碼用戶小程序

 
基於上面得到的選課學生學號,很容易利用Python依次模擬登陸研究生,密碼就用弱密碼123456,而後能夠得到身份證號碼等重要信息。

這樣就獲得了使用123456做爲密碼的用戶信息,因此在此提醒你們必定不要使用弱密碼,但願下面的同窗早日修改密碼。

 

4. 模擬登陸中科大圖書館並自動續借api

 
最近,科大圖書館系統升級了,處處都加了驗證碼,因此下面這個方法直接使用確定是不行了,不過曾經畢竟成功過哈。之前收到借閱圖書到期通知短信,就會運行一下這個程序,自動續借了,而後就能夠再看一個月了。

運行就是這樣的,自動續借成功,看到的連接就是每本書的續借連接。

 

5. 網易雲音樂批量下載網絡

 
終於來一個正常一點的哈,那麼我就直接放代碼吧,能夠下載網易雲音樂各個榜單的所有歌曲,批量下載,速度挺快。請注意提早要建立一個名爲 「網易雲音樂」 的文件夾。
# 網易雲音樂批量下載# By Tsing# Python3.4.4importrequestsimporturllib# 榜單歌曲批量下載# r = requests.get('http://music.163.com/api/playlist/detail?id=2884035') # 網易原創歌曲榜# r = requests.get('http://music.163.com/api/playlist/detail?id=19723756') # 雲音樂飆升榜# r = requests.get('http://music.163.com/api/playlist/detail?id=3778678') # 雲音樂熱歌榜r=requests.get('http://music.163.com/api/playlist/detail?id=3779629')# 雲音樂新歌榜# 歌單歌曲批量下載# r = requests.get('http://music.163.com/api/playlist/detail?id=123415635') # 雲音樂歌單——【華語】中國風的韻律,中國人的印記# r = requests.get('http://music.163.com/api/playlist/detail?id=122732380') # 雲音樂歌單——那不是愛,只是寂寞說的謊arr=r.json()['result']['tracks']# 共有100首歌foriinrange(10):# 輸入要下載音樂的數量,1到100。name=str(i+1)+' '+arr[i]['name']+'.mp3'link=arr[i]['mp3Url']urllib.request.urlretrieve(link,'網易雲音樂\\'+name)# 提早要建立文件夾print(name+' 下載完成')
因而就能夠愉快的聽歌了。

 
上面這些都是在Python3的環境下完成的,在此以前,用Python2還寫了一些程序,下面也放幾個吧。初期代碼可能顯得有些幼稚,請大神見諒。
 

6. 批量下載讀者雜誌某一期的所有文章多線程

 
上次無心中發現讀者雜誌還有一個在線的版本,而後興趣一來就用Python批量下載了上面的大量文章,保存爲txt格式。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 保存讀者雜誌某一期的所有文章爲TXT
# By Tsing
# Python 2.7.9

import urllib2
import os
from bs4 import BeautifulSoup

def urlBS(url):
    response = urllib2.urlopen(url)
    html = response.read()
    soup = BeautifulSoup(html)
    return soup

def main(url):
    soup = urlBS(url)
    link = soup.select('.booklist a')
    path = os.getcwd()+u'/讀者文章保存/'
    if not os.path.isdir(path):
        os.mkdir(path)
    for item in link:
        newurl = baseurl + item['href']
        result = urlBS(newurl)
        title = result.find("h1").string
        writer = result.find(id="pub_date").string.strip()
        filename = path + title + '.txt'
        print filename.encode("gbk")
        new=open(filename,"w")
        new.write("<<" + title.encode("gbk") + ">>\n\n")
        new.write(writer.encode("gbk")+"\n\n")
        text = result.select('.blkContainerSblkCon p')
        for p in text:
            context = p.text
            new.write(context.encode("gbk"))

        new.close()


if __name__ == '__main__':
    time = '2015_03'
    baseurl = 'http://www.52duzhe.com/' + time +'/'
    firsturl = baseurl + 'index.html'
    main(firsturl)
 

7. 獲取城市PM2.5濃度和排名

 
最近環境問題很受關注,就用Python寫了一個抓取PM2.5的程序玩玩,程序支持多線程,方便擴展。
#!/usr/bin/env python# -*- coding: utf-8 -*-# 獲取城市PM2.5濃度和排名# By Tsing# Python 2.7.9importurllib2importthreadingfromtimeimportctimefrombs4importBeautifulSoupdefgetPM25(cityname):site='http://www.pm25.com/'+cityname+'.html'html=urllib2.urlopen(site)soup=BeautifulSoup(html)city=soup.find(class_='bi_loaction_city')# 城市名稱aqi=soup.find("a",{"class","bi_aqiarea_num"})# AQI指數quality=soup.select(".bi_aqiarea_right span")# 空氣質量等級result=soup.find("div",class_='bi_aqiarea_bottom')# 空氣質量描述printcity.text+u'AQI指數:'+aqi.text+u'\n空氣質量:'+quality[0].text+result.textprint'*'*20+ctime()+'*'*20defone_thread():# 單線程print'One_thread Start: '+ctime()+'\n'getPM25('hefei')getPM25('shanghai')deftwo_thread():# 多線程print'Two_thread Start: '+ctime()+'\n'threads=[]t1=threading.Thread(target=getPM25,args=('hefei',))threads.append(t1)t2=threading.Thread(target=getPM25,args=('shanghai',))threads.append(t2)fortinthreads:# t.setDaemon(True)t.start()if__name__=='__main__':one_thread()print'\n'*2two_thread()
 

8. 爬取易迅網商品價格信息

 
當時準備抓取淘寶價格的,發現有點難,後來就沒有嘗試,就把目標選在了易迅網。
#!/usr/bin/env python
#coding:utf-8
# 根據易迅網的商品ID,爬取商品價格信息。
# By Tsing
# Python 2.7.9

import urllib2
from bs4 import BeautifulSoup
def get_yixun(id):
    price_origin,price_sale = '0','0'
    url = 'http://item.yixun.com/item-' + id + '.html'
    html = urllib2.urlopen(url).read().decode('utf-8')
    soup = BeautifulSoup(html)
    title = unicode(soup.title.text.strip().strip(u'【價格_報價_圖片_行情】-易迅網').replace(u'】','')).encode('utf-8').decode('utf-8')
    print title
    try:
        soup_origin = soup.find("dl", { "class" : "xbase_item xprice xprice_origin" })
        price_origin = soup_origin.find("span", { "class" : "mod_price xprice_val" }).contents[1].text 
        print  u'原價:' + price_origin
    except:
        pass
    try:
        soup_sale= soup.find('dl',{'class':'xbase_item xprice'})
        price_sale = soup_sale.find("span", { "class" : "mod_price xprice_val" }).contents[1] 
        print  u'現價:'+ price_sale
    except:
        pass
    
    print url
    return None

if __name__ == '__main__':
    get_yixun('2189654')
 

9. 音悅臺MV免積分下載

 
音悅臺上有好多高質量的MV,想要下載卻沒有積分,因而就想到破解下載。當時受一個大神的代碼的啓發,就寫出了下面的代碼,雖然寫的有點亂,但仍是能夠成功破解的哈。
#!/usr/bin/env python# -*- coding: utf-8 -*-# 音悅臺MV免積分下載# By Tsing# Python 2.7.9importurllib2importurllibimportremv_id='2278607'# 這裏輸入mv的id,即http://v.yinyuetai.com/video/2275893最後的數字url="http://www.yinyuetai.com/insite/get-video-info?flex=true&videoId="+mv_idtimeout=30headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36','Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'}req=urllib2.Request(url,None,headers)res=urllib2.urlopen(req,None,timeout)html=res.read()reg=r"http://\w*?\.yinyuetai\.com/uploads/videos/common/.*?(?=&br)"pattern=re.compile(reg)findList=re.findall(pattern,html)# 找到mv全部版本的下載連接iflen(findList)>=3:mvurl=findList[2]# 含有流暢、高清、超清三個版本時下載超清else:mvurl=findList[0]# 版本少時下載流暢視頻local='MV.flv'try:print'downloading...please wait...'urllib.urlretrieve(mvurl,local)print"[:)] Great! The mv has been downloaded.\n"except:print"[:(] Sorry! The action is failed.\n"
 

10. 其餘請參考:能利用爬蟲技術作到哪些很酷頗有趣頗有用的事情? - Tsing 的回答

 
 

結語:Python是一個利器,而我用到的確定也只是皮毛,寫過的程序多多少少也有點類似,可是我對Python的愛倒是愈來愈濃的。

 
 
 

補充:看到評論中有好多知友問哪裏能夠快速而全面地學習Python編程,我只給你們推薦一個博客,你們認真看就夠了:Python教程 - 廖雪峯的官方網站

相關文章
相關標籤/搜索