當前位置:首頁 » 編程語言 » python生成html

python生成html

發布時間: 2022-11-27 21:49:57

⑴ 用python生成在html中顯示的表格

可以通過寫python腳本製作HTML的form,包括HTML的標簽什麼的

python 有個第三方庫pyh用來生成HTML,可以試用一下:

from pyh import *
page = PyH('This is PyH page')
page << h1(cl='center', 'My big title')
table1 = page << table(border='1',id='mytable1')

headtr = table1 << tr(id='headline')

headtr << td('Head1') << td('Head2')

tr1 = table1 << tr(id='line1')

tr1 << td('r1,c1') <<td('r1,c2')

tr2 = table1 << tr(id='line2')

tr2 << td('r2,c1') <<td('r2,c2')
page.printOut()

⑵ 在python中怎麼生成html格式的郵件並發送

HTML格式請用壓縮包方式打包發送,否測有些網站會認為你在發送特殊代碼,要麼出錯,要麼直接定義你為不友善行為,拒絕發送或接受。TEXT格式就沒有這個問題。

⑶ Python+selenium自動化,Allure包不生成index.html文件,解決方法

查看ui自動化生成的html報告。pytest+allure只生成了xml報告--json格式的數據,沒有生成html的index報告。

場景:

排查:
1.cmd輸入allure --version,查看是安裝成功

2.pycharm輸入pip freeze,查看包是否配置成功

都顯示安裝、配置成功

3.pycharm軟體Terminal中輸入allure

懷疑是pycharm軟體哪裡配置除了問題,排查浪費了N多時間。

最終總算是配置好了~

解決方法:

⑷ Python html 模塊簡介

比如:

比如,數學符號 , ,可以直接獲得:

escape 將特殊字元 & , < 和 > 替換為HTML安全序列。如果可選的 flags quote 為 True (默認值),則還會翻譯引號字元,包括雙引號( " )和單引號( ' )字元。

將字元串 s 中的所有命名和數字字元引用 (例如 > , > , > ) 轉換為相應的 Unicode 字元。此函數使用 HTML 5 標准為有效和無效字元引用定義的規則,以及 HTML 5 命名字元引用列表 。

這個模塊定義了一個 HTMLParser 類,為 HTML(超文本標記語言)和 XHTML 文本文件解析提供基礎。

class html.parser.HTMLParser(*, convert_charrefs=True) 創建一個能解析無效標記的解析器實例。查找標簽(tags)和其他標記(markup)並調用 handler 函數。

用法:

通過調用 self.handle_starttag 處理開始標簽,或通過調用 self.handle_startendtag 處理結束標簽。標簽之間的數據通過以 data 為參數調用 self.handle_data 從解析器傳遞到派生類(數據可以分成任意塊)。如果 convert_charrefs 為 True ,則將字元引用自動轉換為相應的 Unicode 字元(並且 self.handle_data 不再拆分成塊),否則通過調用帶有字元串的 self.handle_entityref 或 self.handle_charref 來傳遞它們以分別包含命名或數字引用作為參數。如果 convert_charrefs 為 True (默認值),則所有字元引用( script / style 元素中的除外)都會自動轉換為相應的 Unicode 字元。

一個 HTMLParser 類的實例用來接受 HTML 數據,並在標記開始、標記結束、文本、注釋和其他元素標記出現的時候調用對應的方法。要實現具體的行為,請使用 HTMLParser 的子類並重載其方法。

這個解析器不檢查結束標記是否與開始標記匹配,也不會因外層元素完畢而隱式關閉了的元素引發結束標記處理。

下面是簡單的 HTML 解析器的一個基本示例,使用 HTMLParser 類,當遇到開始標記、結束標記以及數據的時候將內容列印出來。

輸出:

HTMLParser.reset() 重置實例。丟失所有未處理的數據。在實例化階段被隱式調用。

HTMLParser.feed(data) 填充一些文本到解析器中。如果包含完整的元素,則被處理;如果數據不完整,將被緩沖直到更多的數據被填充,或者 close() 被調用。 data 必須為 str 類型。

HTMLParser.close() 如同後面跟著一個文件結束標記一樣,強制處理所有緩沖數據。這個方法能被派生類重新定義,用於在輸入的末尾定義附加處理,但是重定義的版本應當始終調用基類 HTMLParser 的 close() 方法。

HTMLParser.getpos() 返回當前行號和偏移值。

HTMLParser.get_starttag_text() 返回最近打開的開始標記中的文本。結構化處理時通常應該不需要這個,但在處理「已部署」的 HTML 或是在以最小改變來重新生成輸入時可能會有用處(例如可以保留屬性間的空格等)。

下列方法將在遇到數據或者標記元素的時候被調用。他們需要在子類中重載。基類的實現中沒有任何實際操作(除了 handle_startendtag() ):

HTMLParser.handle_starttag 這個方法在標簽開始的時候被調用(例如: <div id="main"> )。 tag 參數是小寫的標簽名。 attrs 參數是一個 (name, value) 形式的列表,包含了所有在標記的 <> 括弧中找到的屬性。 name 轉換為小寫, value 的引號被去除,字元和實體引用都會被替換。比如,對於標簽 <a href="https://www.cwi.nl/"> ,這個方法將以下列形式被調用 handle_starttag('a', [('href', 'https://www.cwi.nl/')]) 。 html.entities 中的所有實體引用,會被替換為屬性值。

HTMLParser.handle_endtag(tag) 此方法被用來處理元素的結束標記(例如: </div> )。 tag 參數是小寫的標簽名。

HTMLParser.handle_startendtag(tag, attrs) 類似於 handle_starttag() , 只是在解析器遇到 XHTML 樣式的空標記時被調用( <tag ... /> )。這個方法能被需要這種特殊詞法信息的子類重載;默認實現僅簡單調用 handle_starttag() 和 handle_endtag() 。

HTMLParser.handle_data(data) 這個方法被用來處理任意數據(例如:文本節點和 <script>...</script> 以及 <style>...</style> 中的內容)。

HTMLParser.handle_entityref(name) 這個方法被用於處理 &name; 形式的命名字元引用(例如 > ),其中 name 是通用的實體引用(例如: 'gt' )。如果 convert_charrefs 為 True,該方法永遠不會被調用。

HTMLParser.handle_charref(name) 這個方法被用來處理 &#NNN; 和 &#xNNN; 形式的十進制和十六進制字元引用。例如, > 等效的十進制形式為 > ,而十六進制形式為 > ;在這種情況下,方法將收到 '62' 或 'x3E' 。如果 convert_charrefs 為 True ,則該方法永遠不會被調用。

HTMLParser.handle_comment(data) 這個方法在遇到注釋的時候被調用(例如: )。例如, 這個注釋會用 ' comment ' 作為參數調用此方法。

Internet Explorer 條件注釋(condcoms)的內容也被發送到這個方法,因此,對於 ``,這個方法將接收到 '[if IE 9]>IE9-specific content<![endif]' 。

HTMLParser.handle_decl(decl) 這個方法用來處理 HTML doctype 申明(例如 <!DOCTYPE html> )。 decl 形參為 <!...> 標記中的所有內容(例如: 'DOCTYPE html' )。

HTMLParser.handle_pi(data) 此方法在遇到處理指令的時候被調用。 data 形參將包含整個處理指令。例如,對於處理指令 <?proc color='red'> ,這個方法將以 handle_pi("proc color='red'") 形式被調用。它旨在被派生類重載;基類實現中無任何實際操作。

註解: HTMLParser 類使用 SGML 語法規則處理指令。使用 '?' 結尾的 XHTML 處理指令將導致 '?' 包含在 data 中。

HTMLParser.unknown_decl(data) 當解析器讀到無法識別的聲明時,此方法被調用。 data 形參為 <![...]> 標記中的所有內容。某些時候對派生類的重載很有用。基類實現中無任何實際操作。

因此,我們可以如此定義:

下面介紹如何解析 HTML 文檔。

解析一個文檔類型聲明:

解析一個具有一些屬性和標題的元素:

script 和 style 元素中的內容原樣返回,無需進一步解析:

解析注釋:

解析命名或數字形式的字元引用,並把他們轉換到正確的字元(注意:這 3 種轉義都是 '>' ):

填充不完整的塊給 feed() 執行, handle_data() 可能會多次調用(除非 convert_charrefs 被設置為 True ):

解析無效的 HTML (例如:未引用的屬性)也能正常運行:

⑸ Python打開網頁並另存為靜態html怎麼實現

用Python的requests庫解決這個問題比較簡單,常式如下:


importsys
importrequests

reload(sys)
sys.setdefaultencoding('utf-8')

r=requests.get('xxx網址')
fh=open('test.html','w')
fh.write(r.text)
fh.close()


說明一下,requests庫不是Python內置的,不過很流行,很多發行版都帶,沒帶的話就去requests官網去下載,或者用 pip install requests命令安裝最新版。


這個程序里在保存文件前,還需要把字元編碼設置一下,用的是自帶的sys庫。

⑹ 1、使用python讀取依據生成的xml文件,添加樣式表,最中生成一個html文件

#coding=utf8

#引入要用到的xml解析庫這里我們用比較輕量級的minidom就行了
importxml.dom.minidom

#定義一個html輸出模板
#後面我們只是要把這段html中的學生數據部分(<student_trs/>)換成xml中讀到的數據
template="""
<html>
<tableborder="1"style="width:100%;text-align:center;">
<tr>
<tdcolspan="4">學生信息</td>
</tr>
<student_trs/>
</table>
</html>
"""

#讀取xml文檔內容,這里假設是a.xml
dom=xml.dom.minidom.parse('a.xml')

#獲取xml中的所有student節點
student_nodes=dom.getElementsByTagName('student')

#初始化student_trs為空
student_trs=""

#遍歷每一條學生信息
fornodeinstudent_nodes:
#getAttribute用戶獲取節點的屬性,得到id屬性值即學號
#因為xml解析後是Unicode編碼的,所以這里要轉成utf8編碼,下面同理
sid=node.getAttribute("id").encode('utf-8')
#獲取所有子節點
children=node.childNodes
forchildinchildren:
#判斷子節點的名字為姓名、性別、專業的話,就採集其對應文本
ifchild.nodeName.encode('utf-8')=="姓名":
#使用。childNodes[0].nodeValue的方法得到節點的文本
name=child.childNodes[0].nodeValue.encode('utf-8')
ifchild.nodeName.encode('utf-8')=="性別":
sex=child.childNodes[0].nodeValue.encode('utf-8')
ifchild.nodeName.encode('utf-8')=="專業":
specialty=child.childNodes[0].nodeValue.encode('utf-8')
#組成html中的一行學生數據
student_tr="<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>"%(sid,name,sex,specialty)
#將這一行數據添加到總數據中
student_trs+=student_tr

#替換模板的<student_trs/>為我們上面所得到的html數據
html=template.replace("<student_trs/>",student_trs)

#輸入html結果到output.html
open("output.html","w").write(html)


#PS:你提供的xml數據有問題,確實了一個</students>標記
#正確的xml應該如下
"""
<?xmlversion="1.0"encoding="UTF-8"?>
<person>
<students>
<studentid="20140711">
<姓名>三</姓名>
<性別>男</性別>
<專業>計算機</專業>
</student>
</students>
</person>
"""

⑺ python怎麼動態生成html表格報告

..conn = sqlite3.connect(database='thedbfile')curr = conn.cursor()curr.execute("select * from thetable") tr1 = table1 << tr(id="header")for field in curr.description: tr1 << th(field[0]) for row in curr: tr2 = table1 << tr() for item in row: tr2 << td(item) curr.close()conn.close()...以上代碼基於1L"就是累w_w"的方案進行完善

⑻ 在python中怎麼生成html格式的郵件並發送

Using CSS with html.HTML():
pypi上的例子就講的很詳細,我就不復述了,下面講一下如何在郵件中使用CSS。
郵件客戶端不支持外部樣式,所以我們主要使用內部樣式和內聯樣式。
內部引用CSS樣式
from html import HTML
css = """
.class1 {
color: #00FF00;
}
.class2 {
color: #FF0000;
}
.class3 {
color: #FFFF00;
}
"""

h = HTML('head')
h.text('<style>{}</style>'.format(css), escape=False)
b = HTML('body')
t = b.table(border='1')
r = t.tr()
r.td('column 1', klass='class1')
r.td('column 2', klass='class2')
r.td('column 3', klass='class3')
print '{} {}'.format(h,b)

內聯引用CSS樣式 (有些郵件客戶端會忽略裡面的樣式,所以推薦使用內聯樣式)
from html import HTML
inline_css={
'class1':'color:#00FF00;',
'class2':'color:#FF0000;',
'class3':'color:#FFFF00;',
}

b = HTML()
t = b.table(border='1')
r = t.tr()
r.td('column 1', style=inline_css['class1'])
r.td('column 2', style=inline_css['class2'])
r.td('column 3', style=inline_css['class3'])
print str(b)

發郵件
Envelopes的例子已經很清楚了。

⑼ 怎樣用python腳本生成一個html格式的測試報告

比如很簡單的,可以這樣:
# -*- coding:utf-8 -*-
import os,sys

html = open('index.html', 'w')
html.write("""
<html>
<head>
<title>Test</title>
<style>img{float:left;margin:5px;}</style>
</head>
<body>
""")

files = os.listdir('.')

# 首先處理文本
for f in files:
if f.lower().endswith('.txt'):
fp = open(f)
content = fp.read()
fp.close()
html.write("<p>%s</p>" % content)

# 然後處理圖片
for f in files:
if f.lower().endswith('.jpg') or f.lower().endswith('.png'):
html.write("<img src='%s' />" % f)

html.write('</body></html>')
html.close()

把這個python代碼放在有圖片和txt文本的目錄里,運行就可以了。如果不是jpg,修改增加png,gif就行了。

⑽ 如何用python+selenium+phantomjs獲得一個網頁的動態生成的html代碼

一般我們使用python的第三方庫requests及框架scrapy來爬取網上的資源,但是設計javascript渲染的頁面卻不能抓取,此時,我們使用web自動化測試化工具Selenium+無界面瀏覽器PhantomJS來抓取javascript渲染的頁面,下面實現一個簡單的爬取

環境搭建

准備工具:python3.5,selenium,phantomjs

我的電腦裡面已經裝好了python3.5

安裝Selenium

1pip3 install selenium

安裝Phantomjs

按照系統環境下載phantomjs,下載完成之後,將phantomjs.exe解壓到python的script文件夾

使用selenium+phantomjs實現簡單爬蟲

123456789fromselenium import webdriverdriver = webdriver.PhantomJS()driver.get('http.com') #載入網頁data = driver.page_source #獲取網頁文本driver.save_screenshot('1.png') #截圖保存print(data)driver.quit()

selenium+phantomjs的一些使用方法

設置請求頭里的user-Agent

123456789101112fromselenium import webdriverfromselenium.webdriver.common.desired_capabilities import DesiredCapabilitiesdcap = dict(DesiredCapabilities.PHANTOMJS) #設置useragentdcap['phantomjs.page.settings.userAgent'] = ('Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0 ') #根據需要設置具體的瀏覽器信息driver = webdriver.PhantomJS(desired_capabilities=dcap) #封裝瀏覽器信息driver.get('h.com') #載入網頁data = driver.page_source #獲取網頁文本driver.save_screenshot('1.png') #截圖保存print(data)driver.quit()

請求超時設置

webdriver類中有三個和時間相關的方法:

1.pageLoadTimeout 設置頁面完全載入的超時時間,完全載入即完全渲染完成,同步和非同步腳本都執行完

2.setScriptTimeout 設置非同步腳本的超時時間

3.implicitlyWait 識別對象的智能等待時間

1234567fromselenium import webdriverdriver = webdriver.PhantomJS()driver.set_page_load_timeout(5) #設置超時時間driver.get('htt.com')print(driver.title)driver.quit()

設置瀏覽器窗口大小

調用啟動的瀏覽器不是全屏的,有時候會影響我們的某些操作,所以我們可以設置全屏

12driver.maximize_window() #設置全屏driver.set_window_size('480','800') #設置瀏覽器寬480,高800

元素定位

import webdriverdriver = webdriver.PhantomJS()driver.set_page_load_timeout(5)driver.get('i.com')try:driver.get('.com')driver.find_element_by_id('kw') # 通過ID定位driver.find_element_by_class_name('s_ipt') # 通過class屬性定位driver.find_element_by_name('wd') # 通過標簽name屬性定位driver.find_element_by_tag_name('input') # 通過標簽屬性定位driver.find_element_by_css_selector('#kw') # 通過css方式定位driver.find_element_by_xpath("//input[@id='kw']") # 通過xpath方式定位driver.find_element_by_link_text("貼吧") # 通過xpath方式定位print(driver.find_element_by_id('kw').tag_name ) # 獲取標簽的類型except Exceptionase:print(e)driver.quit()

操作瀏覽器前進或後退

import webdriverdriver = webdriver.PhantomJS()try:driver.get('httai.com') #訪問網路首頁driver.save_screenshot('1.png')driver.get('ht.sina.com.cn') #訪問新浪首頁driver.save_screenshot('2.png')driver.back() #回退到網路首頁driver.save_screenshot('3.png')driver.forward() #前進到新浪首頁driver.save_screenshot('4.png')except Exceptionase:print(e)driver.quit()

好文要頂關注我收藏該文

熱點內容
sql兩行合並 發布:2023-02-05 14:57:10 瀏覽:995
安卓手機美顏哪個版本最好用 發布:2023-02-05 14:57:07 瀏覽:168
sqlin原理 發布:2023-02-05 14:55:55 瀏覽:618
人類的演算法 發布:2023-02-05 14:55:48 瀏覽:59
零基礎學php難嗎 發布:2023-02-05 14:49:49 瀏覽:540
仿qq聊天界面android 發布:2023-02-05 14:47:46 瀏覽:247
創建域用戶的ftp訪問目錄 發布:2023-02-05 14:46:58 瀏覽:891
安卓手機錄屏在哪裡設置的 發布:2023-02-05 14:46:53 瀏覽:673
樹莓派4b搭建mqtt伺服器 發布:2023-02-05 14:43:13 瀏覽:860
win2008ftp伺服器 發布:2023-02-05 14:32:00 瀏覽:128