免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
python學(xué)習(xí)第十五章——python和萬(wàn)維網(wǎng)
python學(xué)習(xí)第十五章——python和萬(wàn)維網(wǎng)
2012-07-16 14:20:07     我來說兩句      
收藏   
我要投稿

1.屏幕抓?。嚎梢允褂胾rllib獲取網(wǎng)頁(yè)的HTML源代碼,然后使用正則表達(dá)式提取信息即可。下面是一個(gè)例子:

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

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

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

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

5.使用CGI創(chuàng)建動(dòng)態(tài)網(wǎng)頁(yè):
第一步:CGI程序應(yīng)該放在通過網(wǎng)絡(luò)可以訪問的目錄中,并且必須將它們標(biāo)識(shí)為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)頁(yè)打開了,并且執(zhí)行。一般來說不允許CGI腳本修改計(jì)算機(jī)上的任何文件,如果想要它修改文件,必須顯式地給它設(shè)置相應(yīng)的許可。這時(shí)有兩個(gè)選擇,如果有root權(quán)限的話,可以為你的腳本創(chuàng)建一個(gè)用戶賬戶,改變需要修改的文件的所有權(quán)。如果沒有root全選,則可以為文件設(shè)置文件許可,這樣系統(tǒng)上的所有用戶都被允許寫文件。chmod 666 editable_file.txt。
6.簡(jiǎn)單的CGI腳本:例子如下:

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

CGI腳本的輸入一般都是從已經(jīng)提交的web表單中獲得,但是也可以直接使用參數(shù)調(diào)用CGI程序,如http://www.someserver.com/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不在這個(gè)位置,需要修改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了,但是還是不能使用:得告訴它什么時(shí)候去找。必須在apache的配置文件中增加幾行代碼,可以在主配置文件中(可能是commonapache2.conf)或者放在名為.htaccess的文件中,該文件所在目錄中有用于web訪問的腳本。下面假設(shè)使用.htaccess文件,如果有的話,可以像下面這樣將指令打包:

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

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

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


作者:uohzoaix

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
httpd.conf最新中文版--
apache常用模塊介紹
jakarta commons項(xiàng)目各模塊簡(jiǎn)單說明
Trac在Windows下的安裝配置
CGI+APACHE+PYTHON
Linux apache + fastcgi 運(yùn)行c/c++
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服