python處理轉載部落格html
阿新 • • 發佈:2018-11-19
前景
在轉載別人部落格的時候通常我們會通過複製html然後放到編輯器裡面, 但是通常html裡有很多雜七雜八的東西, 比如script, svg這些標籤導致排版出現問題
例如由lu標籤引起的
由svg標籤引起的
當然要說你直接把不要的東西刪除也可以, 但是作為一個程式設計師,能用電腦做的事當然是不用自己做啦, 於是就有了下面一步
程式碼實現
程式碼採用Python, 因為Python有BeautifulSoup,能很好的處理html檔案, 例如指定標籤刪除等, 所以就採用Python3來寫這些程式碼。
分析出現排版問題的原因
-
程式碼行下方出現數字是因為 有
-
開頭顯示不正常 是因為註釋和
<svg>
如何去除指定標籤和註釋
#去除屬性ul
[s.extract() for s in soup("ul")]
# 去除屬性svg
[s.extract() for s in soup("svg")]
# 去除屬性script
[s.extract() for s in soup("script")]
Python程式碼
# 輸入網址把 html變成md
import requests
import time
from bs4 import BeautifulSoup, Comment
def get_page_source(url):
try:
r = requests.get(url, timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return "failed"
if __name__ == '__main__':
blogUrl = "https://blog.csdn.net/qq_36124194/article/details/83686823"
#blogUrl = input("請輸入轉載地址\n")
blogText = get_page_source(blogUrl)
soup = BeautifulSoup(blogText, 'html.parser')
#去除屬性ul
[s.extract() for s in soup("ul")]
# 去除屬性svg
[s.extract() for s in soup("svg")]
# 去除屬性script
[s.extract() for s in soup("script")]
#去除註釋
comments = soup.findAll(text=lambda text: isinstance(text, Comment))
[comment.extract() for comment in comments]
#得到正文
articleText = soup.find('div', attrs={'class': 'markdown_views prism-atom-one-dark'})
# 加入 轉載地址說明
finalStr = "## 轉載地址 \n" + "## " +blogUrl + " \n" + str(articleText)
print(finalStr)