0. 製做引文分析利器HistCite的便捷使用版本html
對於成天和文獻打交道的研究生來講,HistCite是一款不可多得的效率利器,它能夠快速繪製出某個研究領域的發展脈絡,快速鎖定某個研究方向的重要文獻和學術大牛,還能夠找到某些具備開創性成果的無指定關鍵詞的論文。可是原生的HistCite已經有4年沒有更新了,如今使用會出現各類bug,因而我就用Python基於HistCite內核開發了一個方便使用的免安裝版本。具體的使用方法和下載連接見個人第一篇知乎專欄文章:文獻引文分析利器HistCite使用教程(附精簡易用免安裝Pro版本下載) - Tsing的文章 - 知乎專欄python
1. 破解觀看中科大網絡課堂web
中國科學技術大學網絡課堂(http://wlkt.ustc.edu.cn/數據庫
2. 獲取中科大研究生系統所有學生姓名、學號、選課信息編程
登陸中國科學技術大學的研究生綜合系統(中國科學技術大學研究生信息平臺json
3. 掃描中科大研究生系統上的弱密碼用戶小程序
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. 批量下載讀者雜誌某一期的所有文章多線程
#!/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濃度和排名
#!/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免積分下載
#!/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教程 - 廖雪峯的官方網站