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

2020-12-14 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

相關焦點

  • 如何簡單、方便地把PDF轉換成WORD文檔?
    其中,把pdf文件轉為word文檔的這個操作,是比較常見的。當pdf格式的文件內容有出錯時,大家要先把pdf轉word,然後在word文檔裡把內容給改正過來。 接下來,我給小夥伴們分享把PDF轉換成WORD文檔的操作技巧,大家看看難不難。 把PDF轉換成WORD文檔的操作技巧 在電腦瀏覽器中打開網站,我們就可以進入到它的首頁中去了,在【pdf轉其他格式】分區裡面,就有很多功能可以選擇的。
  • word轉存技巧:如何將每頁文檔轉換為圖片保存?
    編按:日常辦公過程中,將Word文檔轉為圖片的情況雖然不常見,但若遇到了總是會難倒一大批人。因為Word沒有為用戶提供直接將文檔存儲為圖片格式的功能,因此,這就需要我們曲線救國,借用其他工具來實現目的。今天小編將為大家分享2個常用方法,供大家參考。學習更多技巧,請收藏關注部落窩教育word圖文教程。
  • word批量doc轉docx格式-python
    今天想要實現一個功能是將word內容轉換成HTML,查看了網上的代碼,還是比較簡單的,python中的PyDocX類庫可以實現功能。但是存在一個問題,就是word2003版本文檔後綴是.doc,在後期版本中後綴是.docx。
  • pdf怎麼轉換成word?教你用3種方式轉換pdf文檔,快來了解一下吧
    pdf文檔格式具有較強的兼容性和安全性,也正因為這兩個優點讓很多人在傳遞或分享文件前都喜歡把已有文件轉換成pdf格式。俗話說『尺有所短,寸有所長』,想要編輯pdf文件卻並沒有那麼容易。所以在下載或獲得pdf文檔後不少人會想pdf怎麼轉換成word或excel等格式。
  • 如何在線免費將pdf轉成word文檔?
    很多時候大家都有需要將pdf轉成word文檔的需求,怎奈又不想花錢去做這個事情,市面上確實有免費的軟體,但是,要麼只能轉一半,要麼就是轉換出來的word文檔丟東少西,作為一個經常需要用到pdf轉word文檔的網際網路人士來說,找到免費的軟體容易的很。下面給大家推薦一些。
  • pdf轉換成word手機版軟體用哪個?迅捷PDF轉換器可以嗎?
    pdf轉換成word手機版軟體用哪個?平時,需要把pdf轉word的時候,小夥伴們總需要藉助電腦作為基本設備。現在,用迅捷PDF轉換器手機版即可實現pdf轉word操作哦,這樣更加方便了人們進行文件格式轉換。
  • pdf怎麼轉換成word?教你學會兩個好用的pdf轉word方法
    pdf怎麼轉換成word?pdf文件是大家在工作和學習中會用到的一種文件,這種文件不易變成亂碼文件,但是編輯能力也是不如其他文件的。大多說人對word文檔的編輯操作是熟悉的,那麼今天就給大家分享一些pdf轉word方法,比較簡單的,大家可以嘗試看看。
  • 如何將pdf轉成word,excel,ppt,以及jpg格式?方法推薦-PDF轉換
    如何將pdf轉成word,excel,ppt,以及jpg格式?
  • 如何將word轉換成pdf?超簡單的使用教程免費分享
    如何將word轉換成pdf?PDF 格式的文檔在閱讀體驗方面有更高的視覺效果,再加上PDF文檔不易修改的特性,使得很多人在保留文檔的時候都會留存為PDF格式。一般我們編輯文檔都用的是Word,如何將Word轉換成PDF呢?今天免費教大家幾種常見的方法。
  • pdf怎麼轉換成word?告訴你一個好用的轉換方法
    pdf怎麼轉換成word?不管是生活還是工作中,很多個人或企業都喜歡把手中的文檔轉換成pdf格式,因為pdf格式的文檔能夠儘可能避免亂碼的情況。但是我們在獲得pdf文檔後發現其修改是不太方便的,所以想修改pdf時通常會將其還原成原有格式。
  • PDF文檔如何免費轉換成WORD、PPT、EXCEL?
    如下圖所示,轉換時要求必須為高級VIP會員。看見這種對話框的時候我就想說,比我臉皮厚!遇到這種情況,該怎麼辦?今天小助給大家分享一款免費PDF轉換word軟體—親測200+頁PDF轉換毫無壓力,這個神器的名字是——OfficeBox離線打包版神器使用方法Step1:打開軟體如下
  • 怎麼把其他格式轉換成Word文檔?
    雖然目前編寫和展示文本的方式有很多,文檔格式也非常多,但相對來說Word格式的文檔依然還是我們最常用,操作最熟悉的,那麼如何把其他格式轉換成我們需要的Word文檔呢?方法1:文字識別這種方法比較常用於日常圖片、網頁等無法直接複製的小部分文本段落;操作方法:首先打開我們需要的轉換成Word的圖片或網頁後,登錄PC版的QQ聊天工具(手機版本也有這個識別功能,操作略微不同),使用快捷鍵Ctrl+Alt+A進行框選文本部分並截圖,點擊下方工具中的「屏幕識別
  • 手機上pdf轉換成word可以用什麼軟體實現
    有什麼比較不錯的pdf轉換APP?不管是學習,還是工作中,我們經常都可以接觸到pdf格式文件。對它進行格式轉換、內容編輯等操作,也是較為普遍的一個操作。但對於職場新人來說,可能對於pdf轉換操作還不是那麼熟悉。
  • pdf轉換器哪個好用?教你轉換文檔格式的方法
    pdf轉換器哪個好用?由於pdf文檔具有較好的兼容性和安全性使得其常用於文檔的傳遞,但是當我們接收到pdf文檔後發現這種格式不容易修改,因此要將其轉換成原有的格式,所以不禁會問pdf轉換器哪個好用。
  • 圖片怎麼轉換成word?快用這個方法試一試
    一般情況下,我都會把圖片轉換成word格式的文檔,這樣就可以直接提取、使用其中的文字啦。 平時,我就常用迅捷PDF轉換器來把圖片轉word文檔,整個操作過程還挺方便的。這款軟體有3個版本,包括有app、pc以及web,可以滿足到大家不同的設備需求。接下來,我分享了圖片轉換word文檔的方法,大家有需要的話可繼續往下看。
  • 教你快速把pdf文檔轉換成word格式的方法
    最近有小夥伴問到怎麼把pdf文檔轉換成doc格式,因為拿到pdf後發現修改文檔是很不方便的,所以要將其轉換成原有的doc格式(當然了,除了word的doc能生成pdf格式外,還有Excel、ppt或圖片等諸多格式也可以生成pdf)。接下來教你把pdf轉doc的方法。
  • 如何將手機裡的Word文檔轉換成圖片?
    在如今的移動辦公時代,我們經常使用手機處理一些日常工作問題,比如有時接收的Word文檔需要轉成圖片後再發送應該如何處理呢?一、轉成每頁對應一張圖片;1、首頁手機下載和安裝軟體會相對麻煩些,所以一般更習慣使用一些免費的在線轉換工具。
  • word格式怎麼轉換成pdf?這有2個簡單的轉換方法
    word格式怎麼轉換成pdf?由於pdf的兼容性和安全性較高,讓越來越多辦公族和學生黨等群體注意到pdf文檔格式並頻繁使用。因此多數人在閱讀或傳遞文檔時會將其轉換成pdf,即使是word怎麼轉換成pdf這個問題的處理方式也是較少的,那你知道我們該怎麼去把word格式轉換成pdf嗎?下面就來介紹2種可以將word轉換成pdf的方法和軟體。
  • PDF怎麼轉換成word?辦公常用PDF轉換方法分享
    PDF怎麼轉換成word?PDF文件的優點想必很多的小夥伴都是知道的,其體積小、安全性高、兼容性好,在工作中深受大家的喜歡。但是所有的東西都是有好的一面和壞的一面,PDF文件的缺陷就是不易編輯了。想要對PDF文件進行編輯可以選擇轉換文件的方式,今天給大家分享一些PDF轉word的方法,希望可以在工作中幫助到大家。轉換方法一:PDF轉換器對於大量文件轉換的工作,我們可以藉助PDF轉換器完成。首先,需要大家在電腦上下載安裝迅捷PDF轉換器,之後,對應的功能頁面也就隨之彈出。
  • 通過網站可以把pdf在線轉換成word嗎?
    而且,這份pdf文件內容有點多,新建一份word文檔也費時費力。 這款軟體有app、pc以及web這3個不同的版本,看大家的需要,可以選擇不同版本來操作。下面,我帶來了pdf在線轉換word的操作技巧,對此感興趣的話,小夥伴們可耐心閱讀下去哦。 pdf在線轉換word的操作技巧 我比較喜歡使用網站把pdf轉word,這樣就不用在電腦上獲取更多軟體,因為辦公室的電腦內存已經用得差不多了。