1.螢幕抓取:可以使用urllib獲取網頁的html源**,然後使用正規表示式提取資訊即可。下面是乙個例子:
這種方法有至少3個缺點:如果html**比較複雜,則表示式會亂七八糟不可維護。程式對於cdata部分和字元實體(比如&)之類的html特性是無法處理的。正規表示式被html源**約束,而不是取決於更抽象的結構,這就意味著網頁結構中很小的改變就會導致程式中斷。接下來會有兩種方案解決這個程式所產生的問題,第乙個方案是使用叫做tidy的程式和xhtml解析;第二個方案則使用beautiful soup庫,它專門為螢幕抓取設計。
2.tidy:tidy是用來修復不規範且隨意的html的工具,會確保檔案的格式是正確的(也就是所有元素都正確巢狀),這樣解析的時候就比較方便了。tidy庫的獲取和安裝是比較簡單的,這裡就不講了。www.2cto.com
現在假設有個叫做messy.html的混亂的html檔案,下面的程式會對該檔案執行tidy,然後列印結果:
3.使用htmlparser:上面獲得了格式良好的xhtml**之後,我們就可以使用標準庫模組htmlparser進行解析了。我們只需繼承htmlparser並且對handle_starttage或handle_data等事件處理方法進行覆蓋。下圖總結了一些相關的方法,以及解析器在何時對它們進行自動呼叫。
下面的這段**是使用htmlparser模組獲取網頁:
5.使用cgi建立動態網頁:
第二步:加入pound bang行:當把指令碼放在正確位置後,需要在指令碼的開始處增加pound bang行。即只要將#!/usr/bin/env pthon加到指令碼開始處就可以了。在windows中,需要使用#!c:\python22\python.exe。
第三步:設定檔案許可:chmod 755 somescript.cgi,這樣就可以將指令碼作為網頁開啟了,並且執行。一般來說不允許cgi指令碼修改計算機上的任何檔案,如果想要它修改檔案,必須顯式地給它設定相應的許可。這時有兩個選擇,如果有root許可權的話,可以為你的指令碼建立乙個使用者賬戶,改變需要修改的檔案的所有權。如果沒有root全選,則可以為檔案設定檔案許可,這樣系統上的所有使用者都被允許寫檔案。chmod 666 editable_file.txt。
6.簡單的cgi指令碼:例子如下:
例子中的content-type這行表明頁面是普通檔案,如果頁面為html,這一行應該是這樣:print 'content-type: text/html'。
7.使用cgitb除錯:只需要在#!/usr/bin/env pthon後面加入import cgitb:cgitb.enable()這行即可,當cgi指令碼有程式錯誤的時候,在網頁上就會顯示詳細的錯誤資訊。
8.使用cgi模組:我們通常需要指令碼接收任何形式的輸入。輸入是通過html表單提供給cgi指令碼的鍵值對或稱字段。可以使用cgi模組的fieldstorage類從cgi指令碼中獲取這些字段。當建立fieldstorage例項時(應該只建立乙個),它會從請求中獲取輸入變數(或者字段),然後通過類字典藉口將它們提供給程式。fieldstorage的值可以通過普通的鍵查詢方式訪問。獲取值的簡單方式就是用getvalue()方法,它類似於字典的get方法,但它會返回專案的value特性的值。如:form=cgi.fieldstorage();name=form.getvalue('name','unknow')這裡我提供了乙個預設值,如果不提供的話,就會將none作為預設值使用,預設值用於字段沒有值的情況。下面是乙個完整的簡單例子:
cgi指令碼的輸入一般都是從已經提交的web表單中獲得,但是也可以直接使用引數呼叫cgi程式,如使用urllib模組的urlencode方法可以建立此類的url查詢:urllib.urlencode("name":"a","age":"1");
9.建立表單:如下:
在指令碼的開始處先獲取cgi引數name,使用預設的'world'。如果開啟瀏覽器而不提交任何東西,程式使用預設值。
如果要使用cgi處理程式,要將下面的**放在放置cgi指令碼所在目錄中的.htaccess檔案內:
需要除錯資訊的話,加上pythondebug on即可。當開發完成之後應該取出這些指令。
如果需要支援psp頁面需要加上如下**:
下面是乙個帶有少量隨機資料的psp例子:
萬維鏈機會
從技術上來看區塊鏈創造性的解決了在分布式網路中同乙個賬本不同賬戶中的交易問題 無法雙花 解決資產在不同區塊鏈賬本中的轉移問題是區塊鏈技術更大範圍應用的關鍵。目前區塊鏈資產的跨鏈轉移大部分用中心化的方式,例如中心化的交易所。對於使用者放棄了資產的控制權,存在著很大的風險 對於交易所,承擔著管理所有使用...
萬維鏈眾籌
本次眾籌的最高目標是3000萬美金,以太坊上萬維鏈erc20 tokens的形式進行,最終上線的代幣與眾籌token比例為1 1。觸發專案眾籌結束滿足兩個條件中的任意乙個 眾籌金額到達上限或眾籌時間結束。眾籌結束時,智慧型合約自動關閉。專案上線時,參與者通過銷毀erc20 tokens換取等比例的w...
全球資訊網 WWW
全球資訊網的工作模式採用客戶機 伺服器方式,在使用者計算機上執行瀏覽器作為全球資訊網客戶程式,大量的全球資訊網文件儲存在伺服器上,執行伺服器程式 全球資訊網的核心內容包括統一資源定位 url 超文字傳輸協議 http 和文字標記語言 html url的一般格式是 協議 主機 埠 路徑 http是無連...