⑴ 怎么在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