一直想找個時間來學Python,這次遇到一個收集網頁資訊的任務,終於可以給自己個借口來學學了。一開始還覺得又要重新學習一門新語言是很麻煩的一件事。後來被我應證了Python真的很簡單(當然這是建立在你能順利搭好環境,找到對應的模組才,環境配置網上到處都是,我在這就不多說了)
下面就通過我這個簡短的例子來向大家展示一下Python的美吧:
程式任務:收集視頻網頁上視頻的縮圖,儲存到本地檔案。
環境:Eclipse+PyDev
版本:Python3.2.2+BeautifulSoup4
import urllib.request,sys
import itertools,re
from bs4 import BeautifulSoup
ur = urllib.request
url_i = 1
pic_num = 1
#自訂的引號格式轉化函數
def _en_to_cn(str):
obj = itertools.cycle(['“','”'])
_obj = lambda x: next(obj)
return re.sub(r"['\"]",_obj,str)
if __name__=='__main__':
while url_i <= 30:
webContent = ur.urlopen("http://news.youku.com/focus/index/_page26716_" + str(url_i) + ".html")
data = webContent.read()
soup = BeautifulSoup(data)
tag = soup.img
print("-----------------------Page " + str(url_i) +"-------------------------")
for item in soup.find_all(tag.name):
for attr in item.attrs:
if attr == 'title':
ur.urlretrieve(item['src'], "D:\\Thumbnails\\" + str(pic_num) + "." + _en_to_cn(item['title']) + ".jpg")
pic_num += 1
print("----OK,Page " + str(url_i) +" has finished!")
url_i += 1
程式很簡短,可以將優酷上任意連續多個頁面的影片縮圖都儲存下來。程式的關鍵就是用到了BeautifulSoup這個用於解析網頁的第三方包,這個包的官方網頁是:
http://www.crummy.com/software/BeautifulSoup/,其中有很詳細的文檔可以參考。
PS:另外在實際編程時發現,很多視頻的標題中含有很多引號,一些是中文格式的引號,一些是英文格式的。而Windows下英文格式的引號在檔案名稱中是被視為非法字元的,所以就自訂了一個函數_en_to_cn用於將含有英文引號的字串轉化成中文引號。
通過這個例子可以清楚的反映出Python的優勢,特別實在互連網的應用和自然語言處理方面上,這更加堅定了我學習Python的決心。共勉~