精华内容
下载资源
问答
  • HTML报告之:python利用dominate库生成静态网页 文章目录HTML报告之:python利用dominate库生成静态网页dominate 简介一个生成页面的简单例子标记的属性如何生成复杂的文档结构访问内容和属性渲染上下文管理器装饰...

    HTML报告:python利用dominate库生成静态网页

    dominate 简介

    dominate是一个使用优雅的DOM API创建和操作HTML文档的Python库。使用它能非常简洁地编写纯Python的HTML页面,这消除了学习另一种模板语言的需要,利用Python更强大的特性。1

    一个生成页面的简单例子

    from dominate.tags import *
    
    h = html()
    with h.add(body()).add(div(id='content')):
        h1('Hello World!')
        p('This is my first html.')
        with table().add(tbody()):
            l = tr()
            l += td('One')
            l.add(td('Two'))
            with l:
                td('Three')
    
    with open('test.html','w') as f:
        f.write(h.render())
    

    生成test.html源码如下:

    <html>
      <body>
        <div id="content">
          <h1>Hello World!</h1>
          <p>This is my first html.</p>
          <table>
            <tbody>
              <tr>
                <td>One</td>
                <td>Two</td>
                <td>Three</td>
              </tr>
            </tbody>
          </table>
        </div>
      </body>
    </html>
    

    ##HTML标记
    主导的最基本的特性为每个HTML标记构建了一个类。可以使用

    from dominate.tags import *
    

    导入所有html标记
    查看源码可知包含如下标记

    Root element: html
    Document metadata: head, title, base, link, meta, style,
    Scripting: script, noscript
    Sections: body, section, nav, article, aside, h1, h2, h3, h4, h5, h6, hgroup, header, footer, address
    Grouping content: p, hr, pre, blockquote, ol, ul, li, dl, dt, dd, figure, figcaption, div
    Text semantics: a, em, strong, small, s, q, dfn, abbr, time_, code, var, samp, kbd, sub, i, b, u, mark, ruby, rt, rp, bdo, span, br, wbr
    Edits: ins, del_
    Embedded content: img, iframe, embed, object_, param, video, audio, source, track, canvas, map_, area
    Tabular data: table, caption, colgroup, col, tbody, thead, tfoot, tr, td, th
    Forms: form, fieldset, legend, label, input_, button, select, datalist, optgroup, option, textarea, keygen, output, progress, meter
    Interactive elements: details, summary, command, menu, font
    Additional markup: comment

    一个例子:

    print(html(body(h1('Hello, World!'))))
    

    输出:

    <html>
        <body>
            <h1>Hello, World!</h1>
        </body>
    </html>
    

    标记的属性

    dominate 还可以使用关键字参数将属性附加到标签上。大多数属性都是来自HTML规范的直接拷贝.
    class和for可以使用如下别名:

    class: _class, cls, className, class_name
    for: _for, fr, htmlFor, html_for

    使用data_*代表定制HTML5数据属性。
    属性的声明有如下方式:

    test = label('text',cls='classname anothername', fr='someinput')
    
    header = div('text')
    header['id'] = 'header'
    print(header)
    

    如何生成复杂的文档结构

    通过使用+=操作符,如下:

    list = ul()
    for item in range(4):
        list += li('Item #', item)
    print(list)
    

    输出:

    <ul>
        <li>Item #0</li>
        <li>Item #1</li>
        <li>Item #2</li>
        <li>Item #3</li>
    </ul>
    

    支持迭代器来帮助简化你的代码:

    print(ul(li(a(name, href=link), __pretty=False) for name, link in menu_items))
    

    通过add()方法:

    _html = html()
    _body = _html.add(body())
    header  = _body.add(div(id='header'))
    content = _body.add(div(id='content'))
    footer  = _body.add(div(id='footer'))
    print(_html)
    
    _html = html()
    _head, _body = _html.add(head(title('Simple Document Tree')), body())
    names = ['header', 'content', 'footer']
    header, content, footer = _body.add(div(id=name) for name in names)
    print(_html)
    

    访问内容和属性

    header = div()
    header['id'] = 'header'
    print(header)
    
    header = div('Test')
    header[0] = 'Hello World'
    print(header)
    

    渲染

    默认情况下,render()尝试使所有输出都是可读的,每行一个HTML元素和两个缩进空间。render()输出为str格式。
    例子

    a = div(span('Hello World'))
    print(a.render())
    
    print(a.render(pretty=False))
    
    print(a.render(indent='\t'))
    
    a = div(span('Hello World'), __pretty=False)
    
    print(d.render(xhtml=True))
    

    上下文管理器

    例子:

    h = ul()
    with h:
        li('One')
        li('Two')
        li('Three')
    print(h)
    
    <ul>
        <li>One</li>
        <li>Two</li>
        <li>Three</li>
    </ul>
    

    更复杂的例子见文章开头的例子。
    可以在with内加入attr(),用来使当前的标签加入属性,如:

    d = div()
    with d:
        attr(id='header')
    print(d)
    

    输出

    <div id="header"></div>
    

    可以在with内加入text(),用来使当前的标签加入文字内容,如:

    from dominate.util import text
    para = p(__pretty=False)
    with para:
        text('Have a look at our ')
        a('other products', href='/products')
    
    print(para)
    
    <p>Have a look at our <a href="/products">other products</a></p>
    

    装饰器

    @div(h2('Welcome'), cls='greeting')
    def greeting(name):
        p('Hello %s' % name)
    
    print(greeting('Bob'))
    
    <div class="greeting">
        <h2>Welcome</h2>
        <p>Hello Bob</p>
    </div>
    

    可以使用标记的实例作为装饰器。每个对装饰函数的调用都会返回用来装饰它的节点的副本。

    创建文档

    创建一个新文档时,创建了基本的HTML标记结构。

    from dominate import document
    d = document()
    d += h1('Hello, World!')
    d.body += p('This is a paragraph.')
    print(d)
    

    输出:

    <!DOCTYPE html>
    <html>
      <head>
        <title>Dominate</title>
      </head>
      <body>
        <h1>Hello, World!</h1>
        <p>This is a paragraph.</p>
      </body>
    </html>
    

    还可以直接访问<title>, <head>, <body>

    >>> d.head
    <dominate.tags.head: 0 attributes, 1 children>
    >>> d.body
    <dominate.tags.body: 0 attributes, 0 children>
    >>> d.title
    u'Dominate'
    

    嵌入一个预先形成的HTML节点

    from dominate.util import raw
    ...
    td(raw('<a href="example.html">Example</a>'))
    

    如果没有原始的调用,这段代码将会呈现出转义的HTML。


    1. https://pypi.org/project/dominate/ ↩︎

    展开全文
  • python利用dominate库生成静态网页

    千次阅读 2018-10-30 14:20:31
    HTML报告:python利用dominate库生成静态网页 dominate 简介 一个生成页面的简单例子 标记的属性 如何生成复杂的文档结构 访问内容和属性 渲染 上下文管理器 装饰器 创建文档 嵌入一个预先形成的HTML节点 dominate ...

    HTML报告:python利用dominate库生成静态网页
    dominate 简介
    一个生成页面的简单例子
    标记的属性
    如何生成复杂的文档结构
    访问内容和属性
    渲染
    上下文管理器
    装饰器
    创建文档
    嵌入一个预先形成的HTML节点
    dominate 简介
    dominate是一个使用优雅的DOM API创建和操作HTML文档的Python库。使用它能非常简洁地编写纯Python的HTML页面,这消除了学习另一种模板语言的需要,利用Python更强大的特性。1

    一个生成页面的简单例子
    from dominate.tags import *

    h = html()
    with h.add(body()).add(div(id='content')):
        h1('Hello World!')
        p('This is my first html.')
        with table().add(tbody()):
            l = tr()
            l += td('One')
            l.add(td('Two'))
            with l:
                td('Three')

    with open('test.html','w') as f:
        f.write(h.render())
    生成test.html源码如下:

    <html>
      <body>
        <div id="content">
          <h1>Hello World!</h1>
          <p>This is my first html.</p>
          <table>
            <tbody>
              <tr>
                <td>One</td>
                <td>Two</td>
                <td>Three</td>
              </tr>
            </tbody>
          </table>
        </div>
      </body>
    </html>

    展开全文
  • python 生成静态文件http服务器 python2 #ipv4 python -m SimpleHTTPServer 8080 #ipv6 python -c "import socket,SocketServer,CGIHTTPServer;SocketServer.TCPServer.address_family=socket.AF_INET6;...

    python 生成静态文件http服务器

    python2:

    #ipv4
    python -m SimpleHTTPServer 8080
    python -m SimpleHTTPServer 8080 --bind 127.0.0.1
    python -m SimpleHTTPServer 8080 --bind 0.0.0.0
    
    #ipv6
    python -c "import socket,SocketServer,CGIHTTPServer;SocketServer.TCPServer.address_family=socket.AF_INET6;CGIHTTPServer.test()" 8080
    

    python3:

    https://docs.python.org/3/library/http.server.html

    不指定端口的话默认为8000端口

    # ipv4
    python3 -m http.server 8080
    python3 -m http.server 8080 --bind 127.0.0.1
    python3 -m http.server 8080 --bind 0.0.0.0
    #指定目录,需要python3.7以上版本,-d/--directory
    python3 -m http.server 8080 --bind 0.0.0.0 -d /tmp/ 

    使用utf-8编码:

    避免出现中文乱码情况

    webserver - How can I serve files with UTF-8 encoding using Python SimpleHTTPServer? - Stack Overflow

    python2:

    python -c "import SimpleHTTPServer; m = SimpleHTTPServer.SimpleHTTPRequestHandler.extensions_map; m[''] = 'text/plain'; m.update(dict([(k, v + ';charset=UTF-8') for k, v in m.items()])); SimpleHTTPServer.test();"
    # 指定端口
    python -c "import SimpleHTTPServer; m = SimpleHTTPServer.SimpleHTTPRequestHandler.extensions_map; m[''] = 'text/plain'; m.update(dict([(k, v + ';charset=UTF-8') for k, v in m.items()])); SimpleHTTPServer.test();" 8080
    # 指定端口和bind
    python -c "import SimpleHTTPServer; m = SimpleHTTPServer.SimpleHTTPRequestHandler.extensions_map; m[''] = 'text/plain'; m.update(dict([(k, v + ';charset=UTF-8') for k, v in m.items()])); SimpleHTTPServer.test();" 8080 --bind 0.0.0.0
    

    python3:

    #默认端口8000
    python3 -c "from http.server import test, SimpleHTTPRequestHandler as RH; RH.extensions_map={k:v+';charset=UTF-8' for k,v in RH.extensions_map.items()}; test(RH)"
    # 指定端口
    python3 -c "from http.server import test, SimpleHTTPRequestHandler as RH; RH.extensions_map={k:v+';charset=UTF-8' for k,v in RH.extensions_map.items()}; test(RH)" 8080
    # 指定端口和bind
    python3 -c "from http.server import test, SimpleHTTPRequestHandler as RH; RH.extensions_map={k:v+';charset=UTF-8' for k,v in RH.extensions_map.items()}; test(RH,port=8080)"
    

     

     
    展开全文
  • python 爬取静态网页步骤详解

    千次阅读 2017-12-02 19:09:32
    以爬取链家租房信息为例1. 导入包和设置环境coding:utf-8 ...sys.setdefaultencoding("utf-8")python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报这样的错Unico

    以爬取链家租房信息为例

    1. 导入包和设置环境

    #coding:utf-8
    #by:xavier(xavier9410@163.com)
    
    import requests
    import time
    from lxml import etree
    import sys
    reload(sys)
    sys.setdefaultencoding("utf-8")

    python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报这样的错UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0x?? in position 1: ordinal not in range(128),python没办法处理非ascii编码的,此时需要自己设置将python的默认编码,一般设置为utf8的编码格式。

    2. 获取网页源代码(以爬取两页信息为例)

    url='https://bj.lianjia.com/zufang/'
    headers = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'}   #设置头部信息,将代码伪装成浏览器访问
    
    for i in range(1,3):
        if i==1:
            tmp_url=url+'/'
            r=requests.get(url=tmp_url,headers=headers)   #请求访问
            html=r.text    #读取源码
        else:
            i=str(i)
            tmp_url=url+"pg"+i+'/'
            r=requests.get(url=tmp_url,headers=headers)
            html2=r.text
            html+=html2   #将所有源码累加
        time.sleep(2)    #隔两秒钟访问一次,防止ip被封
    selector=etree.HTML(html)    #解析源码
    

    主要涉及用requests.get(url,headers)访问网站,再用etree.HTML(html)解析获取源码。也可以用.status_code方法,看是否请求成功,返回值为200为请求成功。另外r.text和r.content都可以读取源码,当想要改变编码,使用指定编码是,则要使用r.content.encode(coding)

    3. 解析想要的内容,

    使用xpath方法解析想要的内容。如果实在不会写xpath路径,可以在源码中定位到想要的信息然后右击选择copy xpath,观察规则。

    houses=selector.xpath('//div[@class="info-panel"]')   # 解析房子的全部信息
    houses_title=[]
    houses_address=[]
    houses_room=[]
    houses_area=[]
    houses_direction=[]
    houses_floorinfo=[]
    houses_builtinfo=[]
    houses_price=[]
    followers_info=[]
    
    #笔记:如果实在不会写xpath路径,可以在源码中定位到想要的信息然后右击选择copy xpath,观察规则
    for house in houses:
        house_title=house.xpath('./h2/a/@title')[0]   #获取房屋标题信息,其中.表示当前节点
        #print house_title
        house_address=house.xpath('.//div[1]/a/span/text()')[0]  #获取房屋地址信息
        #print house_aderess
        house_room=house.xpath('.//span[@class="zone"]/span/text()')[0]   #获取房间布局信息
        #print house_room
        house_area=house.xpath('.//span[@class="meters"]/text()')[0]   #获取房间面积信息
        direct=house.xpath('.//div[@class="where"]/span[3]/text()') #获取房间方位信息
        house_direction=""
        for i in direct:
            i=i.strip()
            house_direction+=i
            #print house_direction
        house_floorinfo=house.xpath('.//div[@class="con"]/text()[1]')[0]   #房屋楼层信息
        #print house_floorinfo
        house_builtinfo=house.xpath('.//div[@class="con"]/text()[2]')[0]    #房屋建筑年份
        #print house_builtinfo
        house_price=house.xpath('.//div[@class="price"]/span/text()')[0]      #房租信息
        #print house_price
        follower_info=house.xpath('.//div[@class="square"]/div/span/text()')[0]    #浏览人数信息
        #print follower_info
    
        houses_title.append(house_title)
        houses_room.append(house_room)
        houses_address.append(house_address)
        houses_area.append(house_area)
        houses_direction.append(house_direction)
        houses_floorinfo.append(house_floorinfo)
        houses_builtinfo.append(house_builtinfo)
        houses_price.append(house_price)
        followers_info.append(follower_info)

    4. 将获取的信息导入Excel表

    可以使用pandas生成DataFrame,再用DataFrame.to_excel()方法将表导入Excel,该方法具体使用见:
    http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_excel.htm

    house_dic={"follower_info":followers_info,\
              "house_address":houses_address, \
              "house_builtyear":houses_builtinfo,\
              "house_floorinfo":houses_floorinfo, \
              "house_direction":houses_direction,\
              "house_area": houses_area, \
              "house_room":houses_room,\
              "house_price":houses_price,\
              "house_title":houses_title}
    
    houses_df=pd.DataFrame(house_dic)
    houses_df=houses_df.set_index("house_title")
    houses_df.to_excel("lianjiacufang.xlsx",encoding="utf8")

    最后就生成了如下的表格

    这里写图片描述

    展开全文
  • 代码实现: from xml.sax.handler import ContentHandler from xml.sax import parse import os class PageMaker(ContentHandler): passthrou
  • python爬取静态和动态网页

    千次阅读 2017-01-19 17:49:53
    python爬取静态网页1,网上关于静态网页的爬取例子有很多。自己写的一个python爬百度视频搜索网页的代码:#!/usr/bin/python #coding=utf-8import sys import urllib import urllib2 from bs4 import ...
  • 解决方案:通过python脚本生成静态页面,这样在访问该页面时就会提速。 生产环境: 1. 硬负载均衡设备采用4台Array,通过主备实现负责均衡 2.WEB服务器器采用Nginx进行分发 3.采用squid进行页面、css、图片...
  • web.py等框架如何生成静态网页

    千次阅读 2012-12-29 19:49:45
    web.py等框架如何生成静态网页 为啥需要生成静态网页,静态网页方便搜素引擎的收录,还可以减少访问数据库的压力。减少带宽的占用。 web.py这么干,django估计也可以这么干,估计还有其它的好方法,本人借鉴以前...
  • python中的静态网页

    千次阅读 2009-03-06 21:40:00
    /*说明:python中的静态网页 目录结构: |-app.yaml 根目录-| | |-index.htm |-static-|-other.htm |-images-|1.jpg*///app.yaml文件内容:application: greatverveversion: 1runtime: python
  • Python爬虫: 单网页 所有静态网页 动态网页爬取 前言:所有页代码主干均来自网上!!!感谢大佬们。 其实我对爬虫还挺感兴趣的,因为我玩instagram(需要科学上网),上过IG的人都知道IG虽然是个晒图APP,但是它的...
  • Python生成gif动图

    2019-12-01 19:47:51
    Python生成gif动图 调用一个 python 库 imageio 可以轻松实现该功能 安装 pip/pip3 install imageio 步骤 读取静态图到列表中 ,作为 GIF 动图的每一帧 设置输入(静态图)、输出(GIF 动图)和必要的参数 ,这里...
  • python实现静态变量

    万次阅读 多人点赞 2017-10-21 22:07:23
    利用它可以实现静态变量。1. 意料之外的静态变量在使用类变量的时候一定要小心,否则会得到意料之外的结果。看下面的代码:class Foo(object): count = 0f1 = Foo() f2 = Foo() f1.count = 1 print(f1.count, f2....
  •  method that 通过URLs生成 scrapy.Request  objects, 你可以仅仅定义一个 start_urls 类 attribute with a list of URLs. This list will then be used by the 默认实现 of  start_requests()  to 创建最初...
  • mkdocs:用 Python 开发的快速、简单的静态网站生成器,主要是为了构建项目的文档。文档源是 markdown 文件,用法和 Hexo 差不多,可通过一个 YAML 文件进行配置
  • Python生成随机密码

    千次阅读 2019-11-16 11:56:16
    1.导入random模块,通过random静态对象调用choice()方法,从自定义字符串中获取随机项 2.将获取到的随机字符进行拼接,将最终字符串结果返回给函数 3.for循环每循环一次获取一个随机字符,密码位数由循环次数决定...
  • 目的 爬取http://seputu.com/数据并... 导入库 lxml用于解析解析网页HTML等源码,提取数据。... requests请求网页 ...chardet用于判断网页中的字符编码格式 csv用于存储文本使用。 re用于正则表达式 fromlxmlimport...
  • 静态编译python静态库嵌入到C++中   1、下载 python2.7.6版本源代码(http://www.python.org/ftp/python/2.7.6/) 2、解压到Python-2.7.6文件夹 3、进入Python-2.7.6\PC\VS8.0文件夹,用Microsoft Visual ...
  • 几天前初次接触python爬虫,从静态网页开始练习最后爬取优酷世界杯的相关评论并做出相关分析,在此记录一下 首先需要使用pip安装scrapy框架,安装过程不再赘述,其中可能会遇到一些需要c++类库的报错,在网上下载...
  • Python 生成GIF动图

    千次阅读 2018-11-10 11:23:15
    首先 ,调用一个 python 库 imageio 可以轻松实现 ,第一步当然是 pip 安装呀~ pip install imageio 安装之后 ,其实大体分为三个步骤 : 读取静态图到列表中 ,作为 GIF 动图的每一帧 设置输入(静态图)、输出...
  • 利用python生成二维码链接 from MyQR import myqr myqr.run( words='hhttps://jingyan.baidu.com/article/ae97a646726276fbfd461d97.html', # 扫描二维码后,显示的内容,或是跳转的链接 version=5, # 设置容错...
  • python 爬虫 几种简单获取浏览器静态网页html的方式 1.导入urllib的方式 先导入需要的模块 import urllib from urllib import request 两种方法:有浏览器头部和代理IP、没有浏览器头部和代理IP 有浏览器...
  • 狗头护体。 参考博客:python二维码操作:QRCode和MyQR入门 (来源作者:不夜猫)。 我使用的环境如下:①Python版本3.6;②64位Win10系统;...先来利用第三方库qrcode生成一个静态二维码,输出一个Hell...
  • Python生成了不依赖dll的exe

    千次阅读 2013-04-18 12:26:26
    在实际操作中如果我们将静态编译嵌入Python生成了不依赖dll的exe的话,你就可以通过用vc2005 与python 2.5.4并用,来制造一个静态链接的exe的相关程序,以下是文章的具体内容的详细介绍。 1: 下载 python2.5.4...
  • 利用Python生成随机密码

    千次阅读 2020-05-27 22:52:04
    导入random模块,通过random静态对象调用choice()方法,从自定义字符串all_chs中获取随机项,将获取到的随机字符ch与原result值进行拼接,将最终字符串结果返回给函数,for循环每循环一次获取一个随机字符,密码位数...
  • 3、静态网页爬虫需对网页源代码进行分析,确定数据位置和特征; 4、正则表达式是一种非常简便的数据匹配方式,请认真学习用法,勤加练习; 5、程序编写、运行会遇到很多的问题,耐心解决; 6、淘宝网是不允许爬虫...
  • 使用python生成本地html文件

    万次阅读 2016-06-16 22:34:02
    一.静态HTML生成方法#coding:utf-8 _author_ = "LiaoPan" _time_ = "2016.6.16"f = open("demo_1.html",'w') message = """ <head></head> <p>Hello,World! <p>demo </html>"""f.write(messa
  • 一种是网站在线的网页、一种是下载下来的静态网页。 1、在线网页 参考《python用BeautifulSoup库简单爬虫入门+案例(爬取妹子图)》中的载入内容: import requests from bs4 import ...
  • python生成微信好友头像心形照片墙

    千次阅读 2019-09-12 09:14:10
    使用itchat库,实现微信的登录和好友信息的获取,将获取的好友头像进行拼接生成照片墙,拼接时加限制条件生成心形照片墙, 获取好友个性签名生成词云。 涉及: 1. itchat的简单使用 2. 图像拼接 3. 按照指定...
  • Hexo 是一个基于 nodejs 的静态博客生成器,按理说使用 nodejs 去扩展功能是最佳的实践方式,所以即使 Python 再强大,我们在这里看到的依然存在着天然的割裂感, 我们能不能将执行Python脚本的这个过程合并到 ...
  • vue预渲染生成静态页面Many buzzwords get thrown around in the tech space. Two of these are Static Site Generation (SSG) and Server Side Rendering (SSR).在科技领域,许多流行语被扔掉了。 其中两个是静态...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 96,360
精华内容 38,544
关键字:

python生成静态网页

python 订阅