用Python將微信熱文轉換成Word文檔 | 神級操作

2020-11-25 51CTO

不得不說微信公眾號已經成為了一個開放平臺,每天數以萬計的微信公眾號文章在這產生,我們關注一個微信公眾號每天便可以看到新的文章,我們同時也不知不覺的將好的文章分享到給朋友。

那麼如何保存一個好的文章呢?普遍選擇收藏,然而在這裡,我提供一個更巧妙的方法,直接轉換成word文檔保存在電腦裡面。即便是以後文章404了,我們還可以看得到嘛。

1、微信熱文原始碼分析

一篇微信文章,url開頭一定是https://mp.weixin.qq.com/s/,後面跟著一長串字符串,比如qLjifoyinoVN5i5vjW0f7w。

查看網頁原始碼,我們發現

微信熱文的網頁原始碼很長,即便是上面的一個很簡短的文章,但我們要從中提取到我們想要的東西,比如

  1. <h2idh2id="activity-name">普京再次出面</h2> 

妥妥的文章題目,我們要把它保存為word文檔,題目肯定少不了。

  1. <div id="js_profile_qrcode"class="profile_container" style="display:none;">  
  2.  <div>  
  3.    <strong>環球時報</strong>  
  4.    <imgidimgid="js_profile_qrcode_img" src="" alt="">  
  5.    <p>  
  6.      <label>微信號</label>  
  7.      <spanclassspanclass="profile_meta_value">hqsbwx</span></p>  
  8.    <p>  
  9.      <label>功能介紹</label>  
  10.      <span>報導多元世界 解讀複雜中國</span></p>  
  11.  </div> 

這裡一下子就提示了這篇文章是那個微信號發布的,而且還有微信號的介紹,這也是我們需要的信息

  1. <div id="js_content" style="visibility: hidden;"> 

這個就是正文的標籤了,這個標籤裡面蘊含著正文,下面是正文的第一個標籤,我們將它格式化一下,如下

我們發現section套了很多層,但是實際上,這第一個標籤就這一句話是重點:「俄總統普京同納卡衝突雙方領導人舉行電話會談。」

下一個標籤也是section,但是涵蓋了好幾句話。我們發現了span標籤和strong標籤。而且出現了很多次rgb(),我們知道rgb是代表標籤內字體的顏色的。當然,strong是標籤內加粗咯。

  1. <img data-ratio="0.7717391304347826" datadata-s="300,640"data-type="jpeg" data-w="828" datadata-backw="578"data-backh="446" src="https://mmbiz.qpic.cn/mmbiz_jpg/qkQTRn2Z9NwC8nNHScsBAFeOFtHHb95ftWKOZve0QJMqJPFtoicdYO8uTWom8fBdG07icCKDo0FoyNjHUyoBibI2g/640?wx_fmt=jpeg"style="text-align: center;width: 660.994px;box-sizing: border-box!important;visibility: visible !important;"  /> 

另一個圖片標籤

  1. <img data-ratio="1.345"src="https://mmbiz.qpic.cn/mmbiz_gif/wlCrBZoK8HF5AE2ibhItnFJgoIQBcJhTzO438azQniaRJRYNFk0CzlORnm0g1hG7HX3bhXAIC1J4E2XGb1WKA4qA/640?wx_fmt=gif"data-type="gif" data-w="200" style="vertical-align:middle;box-sizing: border-box;" /> 

這個是圖片的標籤,裡面蘊含著很多重要的東西,比如,data-type="gif",表明這是一個gif文件,src指向了圖片的地址,data-w="200",代表圖片的寬度,這很重要。

格式化後的內容如下所示

標籤套標籤,讓人眼花繚亂。

不過,還是一步一步來吧。

2、設計代碼,步步分析

這一步我們需要開始編寫代碼了,python-docx是一個生成和處理docx的第三方庫,使用pip install python-docx 一鍵下載

需要用到的第三方庫有,python-docx,bs4(用於html解析處理)

  1. from docx import Document  
  2. from docx.oxml.ns import qn  
  3. import re  
  4. from docx.shared import RGBColor,Inches,Pt  
  5. from urllib.request import urlopen,Request  
  6. from bs4 import BeautifulSoup  
  7. from docx.enum.text import WD_PARAGRAPH_ALIGNMENT  
  8. import io  
  9. from os.path import join  
  10. qingqiu={'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",  
  11.       'Accept':'text/plain, text/html'  
  12.       } 

編寫一個簡單的過濾函數,因為我們得到文章標題後,需要將文章標題中一些字符刪去,比如換行符,空格,以及{}?

/|\等字符,因為含有這些字符的字符串不能做文件名

  1. def guolv(text):  
  2.     t = re.sub('\s', '', text)  
  3.     t = re.sub('[?<>()[\]{}|]', ':', t)  
  4.     return t 

假設微信url已經確定,在這裡我們編寫一個類,這個類專門用來處理的。

  1. class WX_doc():  
  2.     def __init__(self, url, path):  
  3.         self.img_num = 0  
  4.         self.doc = Document()  
  5.         self.doc.styles['Normal'].font.name = '微軟雅黑'  
  6.         self.doc.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '微軟雅黑')  
  7.         self.url = url  
  8.         self.path = path 

self.img_num是針對img處理的,每處理一個img,self.img_num+=1,請注意,最好設置好文章的字體,因為python-docx默認字體顯示中文會比較難看……不信你可以去試試。當然也可以將字體設為宋體

url是指微信熱文的連結,path是Word文檔處理完後的保存路徑。

接下來是一個插入一個標題的方法。

註:

我們設單獨的def開頭的為函數,包含在class內的def開頭的為方法

  1. def head(self, title, lv=3size=13):  
  2.     p = self.doc.add_heading('', lv)  
  3.     p.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER  
  4.     r = p.add_run(title)  
  5.     r.font.name = '微軟雅黑'  
  6.     r.font.color.rgb = RGBColor(0, 0, 0)  
  7.     r.font.size = Pt(size)  
  8.     r._element.rPr.rFonts.set(qn('w:eastAsia'), u'微軟雅黑') 

將標題插入後,設置為居中,顏色黑色,大小默認13,字體微軟雅黑。

2、巧妙處理標籤

對於正文來講,標籤套標籤讓人眼花繚亂,然而我們如何處理正文中的文字,圖像甚至表格呢?

,對於標籤套標籤,我設計的思路是:

用對應的標籤方法處理標籤

  1. hd = Request(self.url, headers=qingqiu 
  2. a = urlopen(hd)  
  3. b = a.read()  
  4. bbb = b.decode('UTF-8')  
  5. bs = BeautifulSoup(bb, 'lxml')  
  6. h2 = bs.find('h2', {'class': "rich_media_title"})  
  7. title = guolv(h2.text)  
  8. self.head(title, 2, 18)  
  9. pingtai = bs.find('strong', {'class': "profile_nickname"})  
  10. PMV=bs.findAll('span',{'class':'profile_meta_value'})  
  11. p = self.doc.add_paragraph()  
  12. r = p.add_run('%s' % pingtai.text)  
  13. r.font.bold = True  
  14. r.font.color.rgb = RGBColor(0, 191, 255)  
  15. r.font.size = Pt(12)  
  16. r=p.add_run('(%s: %s)'%(PMV[0].text,PMV[1].text))  
  17. r.font.size = Pt(9)  
  18. wb = bs.find('div', {'class': "rich_media_content"}) 

這樣一處理,bs就是整篇微信文章的BeautifulSoup結構的html,這樣處理就方便的多。

對於標題和發布者的,我們放到後面處理,現在要考慮正文的處理,wb就是正文的bs結構。

如何編寫標籤函數?我假定只關注字體的顏色和加粗,其餘字體大小不考慮(這樣的話保存的文章樣式是一致的),使用RGB代表顏色,比如RGB=(0,0,0)就是純黑了,bold代表加粗,bold=True就是加粗。

<p>標籤

p代表段落,p標籤內的文字會形成一個段。對應doc中的add_paragraph方法,接下來我們編寫WX_doc的第一個標籤處理方法。默認字體顏色黑色,不加粗。

  1. def para(self, label):  
  2.     p = self.doc.add_paragraph('')  
  3.     for i in label:  
  4.         self.transit(i,p, (0, 0, 0), False) 

這樣就完了,主要操作就是,將p中每一個標籤拿出來,交給transit函數處理,transit會針對相應的標籤交給相應的標籤方法。

但是如果出現這樣的情況,p內含p,就像section一樣一層套一層,那麼需要另一個p處理方法

  1. def para2(self,label,p,RGB,bold):  
  2.     "解決p內含p的情況"  
  3.     for i in label:  
  4.         self.transit(i,p, RGB, bold) 

對於後面的標籤處理方法,我們規定,需4個參數,第一個BeautifulSoup結構的標籤label,第二個,所屬的段落p,為doc.add_paragraph方法返回的段落p,第三個和第四個為RGB和bold。

<span>標籤

Span標籤出險率極高,基本上每段文字都會出現,我們假定span中的style設定文字的顏色。

比如這一段span

  1. <spanstylespanstyle="letter-spacing: 1px;font-size: 16px;font-family: helvetica;color: rgb(123,12, 0);"><strong>普京與兩國領導人討論了本月9日三方籤訂的停火協議落實問題。各方對當前衝突接觸線的平靜局勢感到滿意。</strong></span> 

多次觀察後,編寫的處理方法如下

  1. def span(self, label, p, RGB, bold):  
  2.     attr = label.attrs.get('style')  
  3.     if attr:  
  4.         ys = re.findall('(?<=rgb\()[\s\S]+?(?=\))', attr)  
  5.     else:  
  6.         ys=[]  
  7.     if ys:  
  8.         rgb = re.findall('\d+', ys[0])  
  9.         r = int(rgb[0])  
  10.         g = int(rgb[1])  
  11.         b = int(rgb[2]) 
  12.         RGB = (r, g, b) 
  13.     for i in label:  
  14.         if i.name == None:  
  15.             self.text(i,p, RGB, bold)  
  16.         elif i.name == "strong":  
  17.             self.strong(i,p, RGB, bold)  
  18.         else:  
  19.             self.transit(i,p, RGB, bold) 

當BeautifulSoup結構下的標籤結構為None時,它就是一段純文字

Text 純文字處理

處理純文字用的方法,需要注意的是,要將文字中的換行符刪去。

  1. def text(self, i, p, RGB, bold):  
  2.     i=str(i)  
  3.     ii=i.replace('\n','')  
  4.     r = p.add_run(i)  
  5.     r.font.bold = bold  
  6.     r.font.color.rgb = RGBColor(RGB[0], RGB[1], RGB[2]) 

<strong>標籤

Strong就是加粗

  1. def strong(self, label, p, RGB, bold):  
  2.     for i in label:  
  3.         if i.name == None:  
  4.             self.text(i,p, RGB, True)  
  5.         elif i.name == 'span':  
  6.             self.span(i,p, RGB, True) 

<section>標籤

Section常常會出現套疊的情況,即便是裡面有字體顏色大小的指示,我還是以span指示的顏色為準。那麼如何正確處理section便是一個難題。

  1. <sectionstylesectionstyle="font-family: -apple-system-font, BlinkMacSystemFont, &quot;HelveticaNeue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino SansGB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;MicrosoftYaHei&quot;, Arial, sans-serif;letter-spacing: 0.544px;white-space:normal;background-color: rgb(255, 255, 255);line-height: 1.5em;margin-left:0px;margin-right: 0px;"> 
  2.         <span style="color: rgb(136,136, 136);font-family: helvetica;font-size: 14px;font-weight:700;letter-spacing: 1px;text-align: left;text-indent: 28px;widows: 1;"></span> 
  3.          <span style="color: rgb(136,136, 136);font-family: helvetica;font-size: 14px;font-weight:700;letter-spacing: 1px;text-align: left;text-indent: 28px;widows: 1;">俄總統網站聲明截圖</span></section> 

上面的section中出現了span,所以思路來了,遍歷section中的標籤,如果出現span和stong,直接按段落處理

  1. def section(self,label):  
  2.     for i in label:  
  3.         if i.name=='p':  
  4.             self.para(i)  
  5.         elif i.name in ['span','strong']:  
  6.             self.para(label)  
  7.             return 0  
  8.         elif i.name=='section':  
  9.             self.section(i)  
  10.         elif i.name in ['ul','ol']:  
  11.             self.ul2(i)  
  12.         elif i.name=='img':  
  13.             self.img(i)  
  14.         elif i.name in ['br','svg','center']:  
  15.             pass  
  16.         elif i.name=='blockquote':  
  17.             self.blockquote(i)  
  18.         elif i.name=='pre':  
  19.             self.pre(label)  
  20.         else:  
  21.             print('section中:%s:%s'%(i.name,str(i))) 

最後else表示沒有這個標籤的處理函數,就提示這個標籤的位置,以及名稱,所含內容

<img>標籤

我們知道img標籤是圖像,一篇文章加上圖像可謂畫龍點睛,現在很少出現沒有圖的文章了,正所謂有圖有真相。

以下面兩個圖像為例

  1. <img datadata-ratio="0.7717391304347826"data-s="300,640" data-type="jpeg" datadata-w="828"data-backw="578" data-backh="446"src="https://mmbiz.qpic.cn/mmbiz_jpg/qkQTRn2Z9NwC8nNHScsBAFeOFtHHb95ftWKOZve0QJMqJPFtoicdYO8uTWom8fBdG07icCKDo0FoyNjHUyoBibI2g/640?wx_fmt=jpeg"style="text-align: center;width: 660.994px;box-sizing: border-box!important;visibility: visible !important;"  /> 
  2. <imgdata-ratioimgdata-ratio="1.345"src="https://mmbiz.qpic.cn/mmbiz_gif/wlCrBZoK8HF5AE2ibhItnFJgoIQBcJhTzO438azQniaRJRYNFk0CzlORnm0g1hG7HX3bhXAIC1J4E2XGb1WKA4qA/640?wx_fmt=gif"data-type="gif" data-w="200" style="vertical-align:middle;box-sizing: border-box;" /> 

我們發現data-w是設定圖片的寬度,當圖片過大的時候,需要將圖片寬度設定好。Img處理函數如下

  1. def img(self, label):  
  2.     src = label.attrs['src']  
  3.     da_s = label.attrs.get('data-s')  
  4.     data_type = label.attrs.get('data-type')  
  5.     data_w = label.attrs.get('data-w')  
  6.     self.img_num += 1  
  7.     a = urlopen(src)  
  8.     b = a.read()  
  9.     path = io.BytesIO(b)  
  10.     if da_s:  
  11.         num = re.findall('\d+', da_s)  
  12.         h = int(num[0]) // 75  
  13.         w = int(num[1]) // 75  
  14.         if w > 6:  
  15.             self.doc.add_picture(path, width=Inches(6))  
  16.         else:  
  17.             self.doc.add_picture(path, width=Inches(w), height=Inches(h))  
  18.     elif data_w:  
  19.         data_w = int(data_w)  
  20.         if data_w < 75:  
  21.             # 標籤太小,直接忽略  
  22.             print('忽略太小圖片%d.%s' % (self.img_num, data_type))  
  23.         elif data_w > 450:  
  24.             self.doc.add_picture(path, width=Inches(6))  
  25.         else:  
  26.             self.doc.add_picture(path, width=Inches(data_w / 75))  
  27.     else:  
  28.         self.doc.add_picture(path, width=Inches(6))  
  29.     print("圖片%d打入成功!" % (self.img_num - 1)) 

transit方法

最後我們編寫transit方法

  1. def transit(self, label, p, RGB, bold):  
  2.     "本函數提供label的中轉方案 其中br由中轉方案解決"  
  3.     if label.name == 'span':  
  4.         self.span(label, p,RGB,bold)  
  5.     elif label.name == None:  
  6.         self.text(label, p,RGB,bold)  
  7.     elif label.name in ['strong','em']:  
  8.         self.strong(label, p,RGB,bold)  
  9.     elif label.name=='section':  
  10.         self.section(label)  
  11.     elif label.name =='p':  
  12.         self.para2(label,p,RGB,bold)  
  13.     elif label.name == 'img':  
  14.         self.img(label)  
  15.     elif label.name in ['br','svg','mpcpc','center']:  
  16.         pass  
  17.     elif label.name == 'a':  
  18.         self.link(label, p,RGB,bold)  
  19.     elif label.name == 'iframe':  
  20.         self.iframe(label, p)  
  21.     elif label.name == 'blockquote':  
  22.         self.blockquote(label)  
  23.     elif label.name == 'ul':  
  24.         self.ul(label, p)  
  25.     elif label.name=='pre':  
  26.         self.pre(label)  
  27.     else:  
  28.         print('p中:%s %s'%(str(label.name),str(label.text)))  
  29.         t = label.text  
  30.         if len(t) < 2:  
  31.             return 0  
  32.         r = p.add_run(t)  
  33.         r.font.bold = bold  
  34.         r.font.color.rgb = RGBColor(RGB[0], RGB[1], RGB[2]) 

transit函數要處理一個標籤,如果已經編寫好了這個標籤方法,那麼將這個標籤交給對應的標籤方法處理,如果沒有,就提示這個標籤的位置,以及名稱,所含內容

main 核心處理

最後我們當然是處理並且轉換成文檔啦,加入文章標題,發布者,和內容,直接發完整代碼吧,如下:

  1. def main(self) -> None:  
  2.     hd = Request(self.url, headers=qingqiu 
  3.     a = urlopen(hd)  
  4.     b = a.read()  
  5.     bbb = b.decode('UTF-8')  
  6.     bs = BeautifulSoup(bb, 'lxml')  
  7.     h2 = bs.find('h2', {'class': "rich_media_title"})  
  8.     title = guolv(h2.text)  
  9.     self.head(title, 2, 18)  
  10.     pingtai = bs.find('strong', {'class': "profile_nickname"})  
  11.     PMV=bs.findAll('span',{'class':'profile_meta_value'})  
  12.     p = self.doc.add_paragraph()  
  13.     r = p.add_run('%s' % pingtai.text)  
  14.     r.font.bold = True 
  15.     r.font.color.rgb = RGBColor(0, 191, 255)  
  16.     r.font.size = Pt(12)  
  17.     r=p.add_run('(%s: %s)'%(PMV[0].text,PMV[1].text))  
  18.     r.font.size = Pt(9)  
  19.     wb = bs.find('div', {'class': "rich_media_content"})  
  20.     for i in wb:  
  21.         if i.name =='p':  
  22.             self.para(i)  
  23.         elif i.name=='section':  
  24.             self.section(i)  
  25.         elif i.name == 'blockquote':  
  26.             self.blockquote(i)  
  27.         elif i.name == 'table':  
  28.             self.table(i)  
  29.         elif i.name in[None,'center','hr']:  
  30.             pass  
  31.         elif i.name in ['h1', 'h2', 'h3','h4']:  
  32.             self.head(i.text, int(i.name[1]) + 1)  
  33.         elif i.name in ['ul','ol']:  
  34.             self.ul2(i) 
  35.          elif i.name == 'pre':  
  36.             self.pre(i)  
  37.         else:  
  38.             print("%s"%str(i))  
  39.     self.save_docx(title)  
  40.     wz_pa=join(self.path,title+'.docx')  
  41.     print('文檔保存成功!保存路徑:%s'%wz_pa)  
  42.     self.ok=False  
  43.     print(wz_pa) 

3、實戰測試

運行後輸入微信url,結果如下:

保存下來的Word文檔如下:

4、其他標籤的處理說明

剛剛我們僅僅是編寫了section,span,p,strong等標籤,就可以對付一個簡單的文章,但是實際上還有其他的標籤,僅僅是這篇文章沒出現而已。所以為了讓這程序越來越好,我們需要添加一些標籤處理的方法。

<blockquote>標籤

Blockquote代表著引用,比如文章引用的哪句話,抄了哪些文獻的句子,都用這個標籤。為了和正文區別,我將字體大小設置為9默認顏色(100,100,100)

  1. def blockquote(self, label):  
  2.     "定義一個摘自另一個源的塊引用"  
  3.     p = self.doc.add_paragraph('')  
  4.     p.style.font.size = Pt(9)  
  5.     for i in label:  
  6.         self.transit(i,p,(100,100,100),False) 

<iframe>標籤

iframe標籤出現代表著這篇微信熱文嵌入了一個視頻。

  1. def iframe(self, label, p):  
  2.     t = '\n' + '*' * 20 + '\n一個視頻\n連結是:%s\n' % label.attrs['src'] + '*' * 20 + '\n'  
  3.     r = p.add_run(t)  
  4.     r.font.size = Pt(10)  
  5.     print('發現一個視頻,文檔只能留下連結') 

<ul>和<ol>標籤

出現ul和ol是列舉,比如列舉1.…… 2.……,有兩套方法,如果ul和ol是在<p>標籤內,那麼需要將它寫在這個段落裡面,使用ul,如果單獨出現,使用ul2。

  1. def ul(self, label, p):  
  2.     "零個或更多個 <li> 元素,可以混合使用 <ol> 與<ul> 元素。"  
  3.     lis = label.findAll('li')  
  4.     for i in lis:  
  5.         t = i.text  
  6.         r = p.add_run("   ★ %s\n" % t)  
  7.         r.font.size = Pt(9)  
  8. def ul2(self, label):  
  9.     p = self.doc.add_paragraph()  
  10.     lis = label.findAll('li')  
  11.     for i in lis:  
  12.         t = i.text  
  13.         r = p.add_run("● %s\n" % t)  
  14.         r.font.size = Pt(9) 

<a>標籤

<a>是連結,如果微信文章出現連結,轉換為Word文檔需要特殊一下,加上下劃線,附上連結的url

  1. def link(self, label, p, RGB, bold):  
  2.     "就是標籤a"  
  3.     r = p.add_run(label.text)  
  4.     r.font.underline = True  
  5.     r.font.color.rgb = RGBColor(0,0,139)  
  6.     r.font.bold = bold  
  7.     href=label.attrs['href']  
  8.     r=p.add_run("(%s)"%href)  
  9.     r.font.color.rgb = RGBColor(135,206,250)  
  10.     r.font.size=Pt(9)  
  11.     r.font.underline = True 

<table>標籤

Table是表格,當出現這個的時候,就需要添加表格啦,這個方法只適合整齊的表格,有合併的無效

  1. def table(self, label):  
  2.     "只適合整齊的表格,對於不整齊的(就是有合併)無效"  
  3.     pave = {'color': (0, 0, 0), 'bold': False}  
  4.     tr = label.findAll('tr')  
  5.     td = label.findAll('td')  
  6.     row = len(tr)  
  7.     col = len(td) // len(tr)  
  8.     if len(td) % len(tr) != 0:  
  9.         col += 1  
  10.     del td  
  11.     tab = self.doc.add_table(rowrows=row, colcols=col, style='Table Grid' 
  12.     for i in range(row):  
  13.         tdlb = tr[i].findAll('td')  
  14.         for j in range(col):  
  15.             td = tdlb[j]  
  16.             dqcell = tab.cell(i, j)  
  17.             p = dqcell.paragraphs[0]  
  18.             for nr in td:  
  19.                 if nr.name == 'p':  
  20.                     for nrr in nr:  
  21.                         self.transit(nrr, p, (0, 0, 0), False)  
  22.                 else:  
  23.                     self.transit(nr, p, (0, 0, 0), False) 

<pre>和<code>標籤

Pre標籤和code經常出現在一起,如果pre內含code,那麼就是代碼行了,交給code函數,如果pre單獨出現,直接按照段落處理。Code處理,就是將文字,啊不是,是將代碼框入到一個表格中,文字大小9,以示區別。

  1. def pre(self,label):  
  2.     "pre分兩種情況考慮,內嵌代碼行和普通pre"  
  3.     code = label.findAll('code')  
  4.     if code:  
  5.         for i in code:  
  6.             self.code(i)  
  7.     else:  
  8.         self.para(label)  
  9. def code(self, label):  
  10.     "特殊標籤,用於代碼行"  
  11.     RGB = (0, 0, 0)  
  12.     bold = False  
  13.     tab = self.doc.add_table(rows=1cols=1style='Table Grid' 
  14.     p = tab.cell(0, 0).paragraphs[0]  
  15.     p.style.font.size = Pt(10)  
  16.     for i in label:  
  17.         if i.name == 'br':  
  18.             p.add_run('\n')  
  19.         elif i.name == 'span':  
  20.             self.span(i, p, RGB, bold)  
  21.         elif i.name == None:  
  22.             p.add_run(str(i)) 

加上了其他標籤處理方法,那麼我們需要將section、transit和main主函數修改一下了,加上對應的標籤處理語句。

5、總結

1.  對於圖像,gif動圖導入Word文檔後不會播放

2.  標籤分類如下

核心標籤:<p>,<strong>,<section>,<img>,<span>,<h1>,<h2>,<h3>……(這些標籤可以用head方法處理)

其他標籤:<blockquote>,<iframe>,<ul>和<ol>,<a>,<table>,<pre>,<code>……

忽略標籤:<br>,<hr>,<mpcpc>(微信廣告投放點),<center>,<svg>

3.  編寫其他標籤函數,如果你覺得新的標籤方法需要增加,只需要加入新的標籤方法,並且在transit和section以及main中加入它即可

4.  個性化設置你覺得合理的標籤方法,只需改動標籤方法原始碼即可

【責任編輯:

龐桂玉

TEL:(010)68476606】

點讚 0

相關焦點

  • word轉存技巧:如何將每頁文檔轉換為圖片保存?
    01、利用截圖工具Word自帶有屏幕截圖的功能,如下圖所示:但其實小編我很少用Word自帶的屏幕截圖功能,主要是因為該功能很單一,不支持滾動截屏等操作。目前市面上好用的截圖工具非常多,常用的有QQ截圖、微信截圖等。下面,小編就教大家利用QQ截圖來實現將Word中的文檔截取成一張張圖片。
  • 如何在線免費將pdf轉成word文檔?
    很多時候大家都有需要將pdf轉成word文檔的需求,怎奈又不想花錢去做這個事情,市面上確實有免費的軟體,但是,要麼只能轉一半,要麼就是轉換出來的word文檔丟東少西,作為一個經常需要用到pdf轉word文檔的網際網路人士來說,找到免費的軟體容易的很。下面給大家推薦一些。
  • PDF怎麼轉換成word?這些PDF轉word方法很好用
    PDF怎麼轉換成word?這些PDF轉word方法很好用 PDF怎麼轉換成word?作為一名辦公人員,經常接觸到PDF文件是很正常的事情。
  • 如何用Python快速優雅的批量修改Word文檔樣式?
    之前講過很多基於Excel的數據及樣式調整案例,今天分享一個Python操作Word的真實自動化需求實現過程:「使用Python批量修改Word樣式」主要將涉及os模塊綜合應用glob模塊綜合應用docx模塊讀寫Word文檔及樣式修改需求描述手上現有若干份財務分析報告的Word文檔,如下:每一份Word文檔中的內容如下:
  • word文檔的處理:將word文檔轉為PDF格式
    我們在生活中,經常會需要將word轉換成PDF格式的。我們通常會下一些軟體來實現。現在word軟體就有帶這種轉換的功能,今天我們分享下怎麼運用。首先,我們雙擊滑鼠左鍵打開需要轉換的word文檔。現在我們點擊下圖所示的按鈕。
  • 如何將word轉換成pdf?超簡單的使用教程免費分享
    如何將word轉換成pdf?PDF 格式的文檔在閱讀體驗方面有更高的視覺效果,再加上PDF文檔不易修改的特性,使得很多人在保留文檔的時候都會留存為PDF格式。一般我們編輯文檔都用的是Word,如何將Word轉換成PDF呢?今天免費教大家幾種常見的方法。
  • Python自動化辦公之Word,全網最全看這一篇就夠了
    環境安裝 使用Python操作word大部分情況都是寫操作,也有少許情況會用到讀操作,在本次教程中都會進行講解,本次課程主要用到以下4個庫,請大家提前安裝。 很多人學習python,不知道從何學起。
  • 怎麼把pdf轉換成word?分享1個在線轉換文件格式的技巧
    在文字工作者的學習、工作生活中,應該沒少進行「把pdf轉換成word」的操作吧,這兩種格式的文件經常都會使用到。特別地,當一份pdf文件的內容出錯時,我們往往要把它先轉word文檔後,再來修改其中的內容。
  • 圖片怎麼轉換成word?快用這個方法試一試
    一般情況下,我都會把圖片轉換成word格式的文檔,這樣就可以直接提取、使用其中的文字啦。不過,現在很多常見的office工具可能都沒有「圖片轉word」這個功能,對此我們可以使用多功能的pdf轉換軟體。平時,我就常用迅捷PDF轉換器來把圖片轉word文檔,整個操作過程還挺方便的。這款軟體有3個版本,包括有app、pc以及web,可以滿足到大家不同的設備需求。
  • 手機上ppt怎麼轉文檔?沒想到手機還有這樣的神操作!
    在外出差的領導突然發微信:小李,麻煩幫我把PPT轉下文檔,我要發給客戶,我在外面不方便。小李:好的。(小李內心:領導要轉哪種文檔呢?問了會不會被說蠢啊?可不問的話我轉哪種文檔呢?而且我身邊也沒有電腦啊,咋辦啊?可拒絕領導會不會減少印象分啊?)。
  • 《Word文檔的基本操作》100招技巧
    但是需要統計多篇文檔的總字數,這樣一篇篇的統計,也就太慢了,效率也很低。可以先打開其中任意一篇文檔,然後依次點擊「插入-文件」菜單,然後把其它文檔全部插入進來,合併成一篇文檔,然後再點擊「字數統計」菜單項,就可以輕鬆的查看所有文檔的總字數了。
  • 手機上的PDF文檔如何轉換成PPT?
    在日常工作中有時需要把PDF文檔轉成PPT幻燈片使用,在電腦上有很多軟體可以選擇操作也非常簡單,但如果是手機上的PDF文檔轉換應該如何操作呢?手機有哪些方法可以將PDF轉成PPT呢?2、根據頁面提示即可選擇PDF文檔並上傳,支持批量上傳多個文檔;3、上傳成功後下方列表會顯示所有已上傳文檔,點擊單個文檔後的convert即可開始轉換;一般幾分鐘就能處理完成,點擊下載即可查看已轉換成功的PPT文檔。
  • 萬能word轉pdf轉換器 高質文件轉換軟體
    沒處理過文檔轉換的問題,你可能無法體會這裡面的麻煩。我以前也以為轉換文檔很簡單,隨便下載個轉換器就能完成。後來在單位需要處理幾百份word文檔轉為pdf電子書文檔的時候,我才深深體會到這其中的麻煩,一連在網上下載了好幾個轉換軟體,但都無法成功轉換,有些是格式不支持的問題,有些軟體看著完成轉換了,但是打開一看卻全是亂碼。
  • Word如何轉換成PPT,其實並不是一頁一頁複製粘貼的哦!
    Word如何轉換成PPT,其實並不是一頁一頁複製粘貼的哦!大家好,很高興又見面了。在前面的分享中,我們主要交流了辦公軟體中Excel和Word的一些常用方法和技巧。作為辦公 「三劍客」的PPT,我們當然不能少。今天我們交流的是Word直接轉換為PPT的一些操作方法。
  • 慢步學習,python語言編程,來扯扯語言的學習理解
    簡單解釋一下實例內容:引用 python-docx庫的Document模塊/函數/對象,打開目標操作文檔作為變量d,輸出目標操作文檔標題(即第一行內容,這個是筆者用來顯示操作前後變化用的),將修改後的標題內容賦值給變量changetotext,再將這個變量內文本賦值給目標操作文本。
  • 神操作!掃描的PDF文件如何轉為可編輯的WORD?
    哈嘍~小夥伴們早上好呀,大家都知道現在PDF文檔在我們的日常辦公學習中,佔據了c位,關於為什麼大家那麼喜歡用PDF文檔,這個原因就不多說了,反正簡單來說大家都是看中PDF文件的穩定性,不會亂碼便於傳輸。
  • word中怎樣製作目錄? word文檔添加目錄圖文教程
    川北在線核心提示:原標題:word中怎樣製作目錄? word文檔添加目錄圖文教程 關於word中怎樣製作目錄的方法技巧大全 word中製作目錄方法一: 步驟一:右鍵單擊,新建一個word文檔,修改名稱為論文,並雙擊打開。
  • PDF轉word,一鍵轉換?沒有這麼簡單
    發布傳播文檔時,希望文檔無論在什麼終端、系統下都能保持版面不變,同時不希望別人可以隨意更改文檔,PDF剛好能滿足需求。所以發布文檔時,大都選擇pdf格式。為什麼想要把pdf轉換成word或者其他格式呢?
  • 怎樣將紙質舊文檔變成word文檔
    我們生活在電子時代,現在數位相機技術越來越發達,日常生活中出門在外時看到一些好看的文字,第一個想法就是用相機拍下來,或者是去圖書館看書看到一些好的文章想保存下來時,就會想到用手機或相機拍下來,但是這個時候也會出現一個問題就是拍攝圖片中的文字是圖片格式的無法編輯,怎樣提取圖片中的文字,將圖片中的文字轉換為可以編輯的文本格式呢
  • PDF怎麼轉換成Word?分享免費PDF轉Word文檔的方法
    PDF怎麼轉換成Word?有很多朋友都會為辦公中的一些事情很煩惱,其中就有關於文件格式轉換的。在文件格式轉換過程中,最常見的便是PDF轉Word。如果有朋友不知道怎麼將PDF轉換成Word,那麼一定要看今天的內容,今天我就主要講講PDF轉Word的方法。