python教程·一
2011·09·18 00:15更新:睡覺去了,還在論壇上的各位用力頂阿!前十位+分
順便求人品能追到CH!
本來應該發自己blog的 不過大陸那台免備硬碟掛了 先發 論壇上吧。
====================================================================
以下內容全部基於Python 2.7.2運行環境
嘛 廢話甚麼的最討厭了!直接開始:
Python是一門優雅的語言:
python程式碼的書寫相當優雅 不像傳統類C語言那樣用{}來控制程式運行。在python中 全部使用縮進符來控制 例如:
引用:
a="mjj"
b="ni"
if a=="mjj":
print b, a
1、獲取HostLoc主頁
Python有很多方便的類庫,比如支援正則表達式的re類、urllib類等等。
因為本教程內容和網路關係較大,所以我們從urllib講起。
獲取一個網頁可以很簡單的用Python做到,只需要三行程式碼。是的,你沒有看錯 三行!
import urllib
hl=urllib.urlopen("http://loc.528866.xyz")
print hl.read()
將這段代碼保存成後綴名為py指令稿,或者在python IDE中運行,看看得到了甚麼?
如果沒有輸錯的話應該看到一大攤的數據 恩 HostLoc首頁的原始碼就被輸出了
2、獲取後的信息處理
那麼 你一定有個疑問。如果我想獲取HostLoc的標題怎麼辦呢?Python有個非常方便的HTML分析類:BeautifulSoup,不過那是分析複雜的HTML網頁用的,我們不需要那麼高端的類庫,於是我們用正則自己獲取。
如何引用正則類呢?很簡單:
import re
就這一行代碼。如果我們要同時引用正則類和urllib類的話 前面說過,Python的語法很優雅,因此你不需要打入兩行import。你只需要這樣:
import re, urllib
好吧= =我承認我說了很多廢話。接下來就是重頭戲了 用正則表達式截取標題。同樣只需要幾行代碼即可實現。
import re, urllib
hl=urllib.urlopen("http://loc.528866.xyz").read()
print re.compile(r'<title>(.*?)</title>',re.DOTALL).findall(hl)[0]
如果正常的話 應該會顯示出一堆奇怪的字符,比如這樣:
引用:
' \xe9\x8d\x8f\xe3\x84\xa7\xe6\x82\x86\xe6\xb6\x93\xe7\xbb\x98\xe6\xba\x80\xe6\xb5\x9c\xe3\x82\x86\xe7\xa5\xa6\xe7\x92\x81\xe5\x93\x84\xe6\xbd\xa7 \xe7\xbc\x87\xe5\xba\xa1\xe6\xb5\x97\xe9\x8f\x88\xe5\xb6\x85\xe5\xa7\x9f\xe9\x8d\xa3\xe2\x95\x9b\xe7\xbc\x87\xe5\xba\xa1\xe6\xb5\x97VPS_\xe5\xa8\x86\xd1\x84\xe5\xba\x8a\xe9\x8f\x88\xe5\xb6\x85\xe5\xa7\x9f\xe9\x8d\xa3- Powered by Discuz!'
要怎麼讓它變成中文呢?很簡單,把
引用:
print re.compile(r'<title>(.*?)</title>',re.DOTALL).findall(hl)[0]
改成
引用:
print re.compile(r'<title>(.*?)</title>',re.DOTALL).findall(hl)[0].decode("gbk","ignore").encode("utf-8","ignore")
* 請注意 如果你通過ssh調試,並且沒有打開本地的utf-8支援或者漢字支援的話,看到的將是亂碼。如果你在本地用python調試就不會。
運行後將會輸出:
引用:
全球主机交流论坛 美国服务器_美国VPS_欧洲服务器 - Powered by Discuz!
好了 今天的教程到此結束。請期待明天的教程 |