日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

python學(xué)習(xí)第十五章——python和萬維網(wǎng)

 昵稱QAb6ICvc 2013-01-28
python學(xué)習(xí)第十五章——python和萬維網(wǎng)
2012-07-16 14:20:07     我來說兩句      
收藏    我要投稿

1.屏幕抓取:可以使用urllib獲取網(wǎng)頁的HTML源代碼,然后使用正則表達(dá)式提取信息即可。下面是一個例子:

這種方法有至少3個缺點(diǎn):如果HTML代碼比較復(fù)雜,則表達(dá)式會亂七八糟不可維護(hù)。程序?qū)τ贑DATA部分和字符實(shí)體(比如&)之類的HTML特性是無法處理的。正則表達(dá)式被HTML源代碼約束,而不是取決于更抽象的結(jié)構(gòu),這就意味著網(wǎng)頁結(jié)構(gòu)中很小的改變就會導(dǎo)致程序中斷。接下來會有兩種方案解決這個程序所產(chǎn)生的問題,第一個方案是使用叫做Tidy的程序和XHTML解析;第二個方案則使用Beautiful Soup庫,它專門為屏幕抓取設(shè)計(jì)。
2.Tidy:Tidy是用來修復(fù)不規(guī)范且隨意的HTML的工具,會確保文件的格式是正確的(也就是所有元素都正確嵌套),這樣解析的時候就比較方便了。Tidy庫的獲取和安裝是比較簡單的,這里就不講了。http://www./
現(xiàn)在假設(shè)有個叫做messy.html的混亂的HTML文件,下面的程序會對該文件運(yùn)行Tidy,然后打印結(jié)果:

3.使用HTMLParser:上面獲得了格式良好的XHTML代碼之后,我們就可以使用標(biāo)準(zhǔn)庫模塊HTMLParser進(jìn)行解析了。我們只需繼承HTMLParser并且對handle_starttage或handle_data等事件處理方法進(jìn)行覆蓋。下圖總結(jié)了一些相關(guān)的方法,以及解析器在何時對它們進(jìn)行自動調(diào)用。

下面的這段代碼是使用HTMLParser模塊獲取網(wǎng)頁:

4.Beautiful Soup:下載BeautifulSoup.py文件,將它放置在python路徑中(比如python安裝文件夾里面的site-packages目錄)。下面的例子是使用它進(jìn)行屏幕抓取的程序:

5.使用CGI創(chuàng)建動態(tài)網(wǎng)頁:
第一步:CGI程序應(yīng)該放在通過網(wǎng)絡(luò)可以訪問的目錄中,并且必須將它們標(biāo)識為CGI腳本,方法有兩種:將腳本放在叫做cgi-bin的子目錄中;把腳本文件擴(kuò)展名改為.cgi。
第二步:加入pound bang行:當(dāng)把腳本放在正確位置后,需要在腳本的開始處增加pound bang行。即只要將#!/usr/bin/env pthon加到腳本開始處就可以了。在windows中,需要使用#!c:\python22\python.exe。
第三步:設(shè)置文件許可:chmod 755 somescript.cgi,這樣就可以將腳本作為網(wǎng)頁打開了,并且執(zhí)行。一般來說不允許CGI腳本修改計(jì)算機(jī)上的任何文件,如果想要它修改文件,必須顯式地給它設(shè)置相應(yīng)的許可。這時有兩個選擇,如果有root權(quán)限的話,可以為你的腳本創(chuàng)建一個用戶賬戶,改變需要修改的文件的所有權(quán)。如果沒有root全選,則可以為文件設(shè)置文件許可,這樣系統(tǒng)上的所有用戶都被允許寫文件。chmod 666 editable_file.txt。
6.簡單的CGI腳本:例子如下:

例子中的Content-type這行表明頁面是普通文件,如果頁面為HTML,這一行應(yīng)該是這樣:print 'Content-type: text/html'。
7.使用cgitb調(diào)試:只需要在#!/usr/bin/env pthon后面加入import cgitb:cgitb.enable()這行即可,當(dāng)cgi腳本有程序錯誤的時候,在網(wǎng)頁上就會顯示詳細(xì)的錯誤信息。
8.使用cgi模塊:我們通常需要腳本接收任何形式的輸入。輸入是通過HTML表單提供給CGI腳本的鍵值對或稱字段??梢允褂胏gi模塊的FieldStorage類從CGI腳本中獲取這些字段。當(dāng)創(chuàng)建FieldStorage實(shí)例時(應(yīng)該只創(chuàng)建一個),它會從請求中獲取輸入變量(或者字段),然后通過類字典借口將它們提供給程序。FieldStorage的值可以通過普通的鍵查找方式訪問。獲取值的簡單方式就是用getvalue()方法,它類似于字典的get方法,但它會返回項(xiàng)目的value特性的值。如:form=cgi.FieldStorage();name=form.getvalue('name','unknow')這里我提供了一個默認(rèn)值,如果不提供的話,就會將None作為默認(rèn)值使用,默認(rèn)值用于字段沒有值的情況。下面是一個完整的簡單例子:

CGI腳本的輸入一般都是從已經(jīng)提交的web表單中獲得,但是也可以直接使用參數(shù)調(diào)用CGI程序,如http://www./simple.cgi?name=a&age=1。使用urllib模塊的urlencode方法可以創(chuàng)建此類的URL查詢:urllib.urlencode("name":"a","age":"1");
9.創(chuàng)建表單:如下:

在腳本的開始處先獲取CGI參數(shù)name,使用默認(rèn)的'world'。如果打開瀏覽器而不提交任何東西,程序使用默認(rèn)值。
10.mod_python:安裝,在unix上首先下載mod_python的源代碼,然后解壓縮,進(jìn)入目錄。接著運(yùn)行mod_python的configure腳本:./configure --with-apxs=/usr/local/apache/bin/apxs,如果apxs不在這個位置,需要修改apxs程序的路徑。然后編譯所有的文件:make。接著就是安裝了:make install。
下載,然后雙擊運(yùn)行即可。配置apache:找到為特定模塊使用的apache配置文件,文件通常叫做httpd.conf或者apache.conf,在unix中增加LoadModule python_module lobexec/mod_python.so,在windows中增加LoadModule python_module modules/mod_python.so?,F(xiàn)在apache指導(dǎo)到哪里找mod_python了,但是還是不能使用:得告訴它什么時候去找。必須在apache的配置文件中增加幾行代碼,可以在主配置文件中(可能是commonapache2.conf)或者放在名為.htaccess的文件中,該文件所在目錄中有用于web訪問的腳本。下面假設(shè)使用.htaccess文件,如果有的話,可以像下面這樣將指令打包:

如果要使用CGI處理程序,要將下面的代碼放在放置CGI腳本所在目錄中的.htaccess文件內(nèi):

需要調(diào)試信息的話,加上PythonDebug On即可。當(dāng)開發(fā)完成之后應(yīng)該取出這些指令。
如果需要支持PSP頁面需要加上如下代碼:

下面是一個帶有少量隨機(jī)數(shù)據(jù)的PSP例子:

作者:uohzoaix

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多