⑴ 怎麼在python上安裝html5lib
打開 IDLE,將會顯示一個空白的界面.
在頂行輸入以下代碼以導入 "html5lib" 模塊:
import html5lib
from html5lib import treebuilders, treewalkers, serializer
import urllib2
創建一個新的 HTML 5 parser, 用來讀取一個 HTML website. 輸入以下代碼聲明一個新的 parser:
parser = html5lib.HTMLParser()
通過傳遞地址到 urllib2.urlopen 函數來打開一個網站,
⑵ python html 解析工具是什麼意思
在准備我的 PyCon上關於HTML的演講 的時候我覺得我應該對現有的一些解析器和文檔模型做個性能對比。
實際上,情況有點復雜,因為處理HTML需要幾個步驟:
解析這個 HTML
把它解析為一個對象(比如一個文檔對象)
把它序列化
有些解析器只處理第一步,有些只處理第二步,有些能處理所有的三個步驟…。例如,ElementSoup 使用 ElementTree 來表示文檔,卻使用 BeautifulSoup 作為實際的解析器。而 BeautifulSoup 內部也擁有一個文檔對象。 HTMLParser 僅僅做解析(不解析出任何對象),然而 html5lib 卻能夠生成幾種不同的文檔樹(DOM樹)。序列化也分為XML和HTML兩種方式。
所以我選取了下面這些解析器的庫做基準性能測試:
lxml:包含一個解析器,能夠產生文檔對象,支持HTML序列化。它也可以不適用內置的解析器而使用 BeautifulSoup 或者 html5lib 進行解析。
BeautifulSoup:nbsp;包含一個解析器,能夠產生文檔對象,支持HTML序列化。
html5lib:有解析器。它也有一個序列化器,但是我沒有使用它。它也有一個內置的文檔對象(即simpletree),只是…除了自我測試我也不知道這東西還能做什麼。
ElementTree:這個包里有一個XML序列化器,ElementTree能夠產生文檔對象,它也是python內置的XML解析模塊。(我覺得下個版本會帶一個HTML序列化器,不過我也沒測試這個XML序列化器)。它也有一個解析器,測試的時候我用html5lib當做解析器來測試ElementTree的。
cElementTree:這是一個使用C語言擴展實現的python模塊,實現了ElementTree。
HTMLParser:包含一個解析器。但是其實它不能解析出文檔對象,很多正常網頁都不能正常處理(包含Table或者Script),有語法錯誤的網頁就更處理不了了。它只是使用解析器遍歷文檔。
htmlfill:它使用了HTMLParser作為解析器,相對HTMLParser,它在解析過程中對Element做了更多處理。
Genshi[1]:包含一個解析器,能夠產生文檔對象,支持HTML序列化。
xml.dom.minidom:python標准庫里的內置文檔模型,html5lib 能夠解析出這種文檔對象。(我並不推薦使用minidom — 這篇文章里寫了一些理由,還有很多理由我沒寫出來)
我預想 lxml 的性能會比較好,因為它基於 libxml2這個C庫。但是實際上它的性能比我預計的還要好,超過其它所有的同類庫。所以,除非考慮到一些難以解決的安裝問題(尤其是在Mac上),我都推薦你用lxml 來進行HTML解析的工作。
我的測試代碼在這里,你可以自己下載下來運行測試程序。裡麵包含了所有的樣例數據,用來生成圖表的命令在這里。這些測試數據來自於從 python.org 隨機選取的一些頁面(總共355個)。
解析
lxml:0.6; BeautifulSoup:10.6; html5lib ElementTree:30.2; html5lib minidom:35.2; Genshi:7.3; HTMLParser:2.9; htmlfill:4.5
第一個測試運行這些解析器解析文檔。需要注意的是:lxml 比 HTMLParser快6倍,盡管 HTMLParser
不生成任何文檔對象(lxml在內存中建立了一個文檔樹)。這里也沒有包含 html5lib 所能生成的全部種類的樹,因為每一種花費的時間都差不多。之所以包含了使用 xml.dom.minidom 作為輸出結果的 html5lib 測試結果是為了說明 minidom 有多慢。Genshi確實很快,只是它也是最不穩定的,相比之下,html5lib , lxml 以及 BeautifulSoup 都要健壯的多。html5lib 的好處是,總是能夠正確的解析HTML(至少在理論上如此)。
lxml在解析過程中會釋放 GIL ,但是我覺得應該影響不大。
序列化
lxml:0.3; BeautifulSoup:2.0; html5lib ElementTree:1.9; html5lib minidom:3.8; Genshi:4.4
所有這些庫執行序列化都很快,可是 lxml 又一次遙遙領先。ElementTree 和 minidom 只做XML序列化,但是沒有理由說HTML序列化更快。還有就是,Genshi居然比minidom要慢,實話說任何比minidom要慢的東西都挺讓人震驚的。
內存佔用
lxml:26; BeautifulSoup:82; BeautifulSoup lxml:104; html5lib cElementTree:54; html5lib ElementTree:64; html5lib simpletree:98; html5lib minidom:192; Genshi:64; htmlfill:5.5; HTMLParser:4.4
最後一項測試是內存。我並不是特別確信我做這個測試的方法很科學,但是數據總能說明一些問題。這項測試會解析所有的文檔並把解析出來的DOM樹保存在內存中,利用 ps 命令結果的RSS(resident set size)段來表示進程佔用的內存。計算基準內存佔用之後所有的庫已經被import,所以只有解析HTML和生成文檔對象會導致內存使用量上升。
我才用 HTMLParser 作為基準線,因為它把文檔保存在內存中,只產生一些中間字元串。這些中間字元串最終也不回佔用多少內存,因為內存佔用基本上等同於這些html問價大小之和。
測量過程中有個棘手的問題就是python的內存分配器並不會釋放它請求的內存,所以,如果一個解析器創建了很多中間對象(字元串等等)然後又釋放了它們,進程仍然會持有這些內存。為了檢測是否有這種情況,我試著分配一些新的字元串知道進程佔用的內存增長(檢測已經分配但是沒有被使用的內存),但是實際上沒檢測到什麼,只有 BeautifulSoup 解析器,在序列化到一個 lxml 樹的時候,顯示出使用了額外的內存。
只有在內存測試中,html5lib 使用 cElementTree 來表示文檔對象同使用 ElementTree 能表現出明顯的不同。我倒不是很驚訝,我猜因為我沒有找到一個C語言編寫的序列化工具,我猜使用 cElementTree 構建文檔樹的話,只有在用本地代碼調用它的時候比較快(就像本地的libxml,並且不需要把數據結構傳遞到python中)。
lxml比較節省內存很可能是因為它使用了本地的libxml2的數據結構,並且只有在需要的時候才創建Python對象。
總結
在進行基準測試之前我就知道lxml會比較快,但是我自己也沒料到會這么快。
所以呢,總結一下:lxml太牛逼了[2]。你可以用很多種方式使用它,你可以對一個HTML進行解析,序列化,解析,再序列化,在機器卡機之前你能重復這些操作很多次。很多操作都是通過本地介面實現的,python只做了一層很淺的封裝。例如,如果你做一次XPath查詢,查詢字元串會被編譯為本地代碼,然後遍歷本地的libxml2對象,只在返回查詢結果的時候才會產生一個python對象。 另外,測試中lxml內存佔用比較小使我更有理由相信lxml在高負載的情況下仍然會很可靠。
我覺得,文檔樹相對按字元流解析(不生成樹,只掃描一次文檔並針對特定的標簽做處理)更有優勢。表面看起來按字元流解析更好:你不把整個文檔放在內存里,處理的時間之和文檔大小線性相關。HTMLParser就是這樣一種解析器,遇到各種符號(標簽開始和關閉,變遷中間的文字等等)。Genshi 也是用的這個模型,因為使用了一些更高級的特性(比如 filters
)所以使用起來更自然一些。其實字元流模型本身就不是一種特別自然的處理XML文檔的方式,從某種程度上說,它只是用來處理一些本來就可以當做字元串處理的文檔的一種笨拙的方法(regex可以實現同樣的功能)。只有你需要處理上G的XML文件的時候按字元流解析才有意義(不過lxml和ElementTree針對這種情況都有額外的參數支持)。HTML文件不會有這么大,這些測試也有理由讓我們相信lxml可以很好的處理大的HTML文件,所以一個大文檔也不會導致一個為小文檔優化過的系統崩潰。
Ian Bicking on Sunday, March30th, 2008
[1]. Genshi是EdgewallSoftware的產品,它的其他產品還包括大名鼎鼎的Trac。
[2]. 本文的作者Ian Bicking是lxml.html(lxml的一個模塊)的開發者和維護者(這里修正一下)。
P.S. 譯者記:這里還有一個解析器沒有提到就是python標准庫里的SGMLParser,它也可以產生ElementTree,但是性能很差,本機測試解析600k的html文檔(ddd的單頁html文檔)需要480秒,不推薦應用在性能要求比較高的場合。本文作者也是lxml的作者,對自己的作品大力推薦也是正常的,我實測過lxml性能確實很好。
⑶ html5 app開發用什麼工具
1、Adobe Edge
Adobe Edge的目的是幫助專業設計師製作網頁動畫乃至簡單游戲。該工具的重點放在動畫引擎上,但adobe承諾將增加更多HTML5功能,比如Canvas、HTML5音頻/視頻標簽等。支持Android、iOS、webOS、黑莓PlayBook、Firefox、Chrome、Safari和IE9等各個平台。
2、Adobe Dreamweaver
Adobe Dreamweaver使用所見即所得的介面,亦有HTML(標准通用標記語言下的一個應用)編輯的功能,藉助經過簡化的智能編碼引擎,輕松地創建、編碼和管理動態網站。[2]訪問代碼提示,即可快速了解HTML、CSS和其他Web標准。[2]使用視覺輔助功能減少錯誤並提高網站開發速度。
3、HBuilder
HBuilder是DCloud(數字天堂)推出的一款支持HTML5的Web開發IDE。HBuilder的編寫用到了java、C、Web和Ruby。HBuilder本身主體是由Java編寫。它基於Eclipse,所以順其自然地兼容了Eclipse的插件。
4、WebStorm
WebStorm 是jetbrains公司旗下一款JavaScript 開發工具。目前已經被廣大中國JS開發者譽為「Web前端開發神器」、「最強大的HTML5編輯器」、「最智能的JavaScript IDE」等。與IntelliJ IDEA同源,繼承了IntelliJ IDEA強大的JS部分的功能。
⑷ 國內幾款比較好用的html5頁面製作工具有哪些
你好,微信上的HTML頁面一般是用工具做出來的,很少有開發的H5案列,最常見是翻頁H5,自由度比較低,只能修改圖片換換文字,而專業工具自由度比較高,可以很靈活的設計H5,epub360在專業工具中上手難度適中,值得大家嘗試下。Epub360,有很多豐富的組件可以調用。使用邏輯跟PPT差不多,音樂、動畫、視頻、交互都可以輕松實現。在線製作,只需要把鏈接放在公眾號里或者分享朋友朋友圈即可。
⑸ python+flask+html5 網頁圖片無法顯示
這個問題應該是路徑問題,存放圖片的文件夾名中有中文。
⑹ 如何用html5、python、nosql實現一個簡單的登錄網頁
html5網頁上放2個輸入框,分別輸入賬號和密碼,還要有一個登錄按鈕,點擊登錄後,服務端的python接收到賬號,密碼,和nosql里的賬號密碼比對,正確就登錄成功,錯誤就登錄失敗
⑺ Python UI 開發用哪個好
1、常見的一種應用情形是,使用Python快速生成程序的原型(有時甚至是程序的最終界面),然後對其中[2] 有特別要求的部分,用更合適的語言改寫,比如3D游戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而後封裝為Python可以調用的擴展類庫。
2、需要注意的是在您使用擴展類庫時可能需要考慮平台問題,某些可能不提供跨平台的實現。
3、在這個不是桌面為王的時代. 買本HTML5的書, 用Python的WEB框架, 建立一個本地伺服器..雖然說又要學HTML5很麻煩, 但相比於用桌面各種各樣的GUI描述語言, HTML那種標簽化設計已經簡單很多了.
4、你完全不需要管理內存, 不需要擔心非同步的處理. 為下一步的在線化鋪平道路.
Python是什麼都能做一點, 但什麼都有替代品. 那就要發揮Python的優勢, 將GUI的渲染交給瀏覽器. 將邏輯的處理交給Python.
5、Python+HTML5+JS+Python框架使用經驗, 對未來也有好處
⑻ 怎麼用python進行web開發
HTML(超文本標記語言)是網頁的核心,學好HTML是成為Web開發人員的基本條件。HTML很容易學習的,但也很容易誤用,要學精還得費點功夫。
隨著HTML5的發展和普及,了解HTML5也將成為Web開發人員的必修課。
涉及到網頁外觀時,就需要學習CSS了,它可以幫你把網頁做得更美觀。
利用HTML和CSS模擬一些你所見過的網站的排版和布局(色彩,圖片,文字樣式等等)。
第二步:學習javascript,了解DOM
JavaScript是一種能讓你的網頁更加生動活潑的程序語言。學習JavaScript的基本語法,學會用javascript操作網頁中dom元素。
接著學習使用一些javascript庫,比如jquery是大部分WEB開發人員都喜歡用的,通過Jquery可以有效的提高JavaScript的開發效率。
第三步:了解Web伺服器
你不必在這上面花太多精力,但對IIS、Apache基本配置要掌握,這方面的知識學起來也相對容易,不會花多長時間。
學習一點Unix和Linux的基本知識,因為大部分Web伺服器都運行在Unix和Linux平台上。
第四步: 學好一門伺服器端腳本語言
伺服器端腳本編程(後台開發)也是Web開發人員的基本功之一,你只需挑選一個伺服器端腳本語言,然後學好它。
目前流行的伺服器腳本語言有:php、asp.net、jsp、ruby、python、等。
第五步:學習資料庫及SQL語法
要構建動態頁面通常會使用到資料庫,常用的資料庫有SQLServer、Oracle、MySQL 等,它們都會遵循標準的SQL原則。
通常asp.net 程序使用SqlServer資料庫,PHP、java使用Oracle、MySQL資料庫。
第六步:綜合實戰
選一個你喜歡的後台編程語言,結合之前學到的html,css,javascript 前端技術,實現一個簡單的留言本、論壇程序、進而實現一個簡單的CMS(內容管理系統)
第七步:學習使用Web框架
當你掌握了HTML,CSS,JavaScript和伺服器端腳本語言後,就應該找一個Web框架加快你的Web開發速度,使用框架可以節約你很多時間。
比如.net的MVC,JAVA 的SSH,php的cakephp、CodeIgniter、zend,ruby的ROR,python的dijango等等,其實裡面都有一些相通之處。
整個開發過程你還可能會學習到一些工具的使用:
Visio,Dreamweaver,Vistual Studio、elipse、(Vim, EditPlus, Notpad++)、sqlserver、phpmyadmin,各種瀏覽器以及FireBug的插件,IE下的WebDevelopmentHelper、IETester等。如果你足夠用心,你還發掘出很多不錯的資源,例如MSDN,W3cSchool,一些前輩的博客,一些技術論壇等等,這都是你未來前進道路上的財富。如還想深入研究,學學http協議,理解什麼是無狀態,不然你永遠做不好WEB開發,研究web程序服務端運行原理,還有tcp/ip,udp協議等。
從最簡單的HTML到Web框架,內容還是不少,要想精通這里的每一樣技術,都得下苦功夫才行。半年的時間,足夠你對web開發產生一個有效的認識,這個時候,再思考你進一步學習的方向吧。
⑼ 能用python實現html5游戲嗎
html5 javascript css3是搭配在一起的 python 可以用在很多方面,也可以打包成二進製程序
⑽ HTML5開發工具有哪些
1、SublimeText
SublimeText是一個跨平台的代碼編輯器,同時支持Windows、Linux、MacOSX等操作系統,也是HTML和散文先進的文本編輯器。
SublimeText具有漂亮的用戶界面和強大的功能,主要功能包括:拼寫檢查,書簽,完整的PythonAPI,Goto功能,即時項目切換,多選擇,多窗口等等。
2、Dreamweaver
Dreamweaver是集網頁製作和管理網站於一身的所見即所得網頁編輯器,擁有可視化編輯界面,支持代碼、拆分、設計、實時視圖等多種方式來創作、編寫和修改網頁,初學HTML5的人可以無需編寫任何代碼就能快速創建Web頁面。
3、AdobeEdge
AdobeEdge是一款新型網頁互動工具,允許設計師通過HTML5、CSS和Java製作網頁動畫。Edge的一個重要功能是Web工具包界面,方便確保頁面在不同瀏覽器中的架構一致性。
4、WebStorm
WebStorm是一款Java開發工具,目前已經被廣大中國JS開發者譽為"Web前端開發神器"、"最強大的HTML5編輯器"、"最智能的JavaIDE"等。
WebStorm具有的優勢是:智能的代碼補全、代碼格式化、html提示、聯想查詢、代碼重構、代碼檢查和快速修復、代碼調試、代碼結構瀏覽、代碼折疊、包裹或者去掉外圍代碼。
5、HBuilder
HBuilder,即HtmlBuilder的縮寫,Builder是建造者的意思。HBuilder是一個極客工具,追求無滑鼠的極速操作,不管是敲代碼的快捷設定,還是操作功能的快捷設定,都融入了效率第一的設計思想。
HBuilder不為敲字母而花費時間,不為大小寫拼錯而調錯半天,把精力花在思考上,想清楚後落筆如飛。支撐這個理念,除了體驗上的精細設計,還要求我們突破很多世界級技術難題,包括語法庫、語法結構模型、AST語法分析引擎。
參考資料來源:網路——SublimeText
參考資料來源:網路——Dreamweaver
參考資料來源:網路——AdobeEdge
參考資料來源:網路——WebStorm
參考資料來源:網路——HBuilder