把Html页面转化为简单的Markdown文件
来源:互联网 发布:excel筛选数据删除 编辑:程序博客网 时间:2024/04/25 15:25
其一,代码内容
用Python3.5.2可以运行,产生正常结果,详细内容看代码。
这个东西的缺点还是比较明显的:
1. 目前只适配了萌娘百科这种大段文字的网站,a标签和img标签还没写出来;
2. 对萌娘百科常见的del
标签处理的很难看;
3. 对translate方法中的大片if-elif-else很不满,因为修改起来太麻烦了,又不可能对选择分支加装饰器一类的东西。暂时还想不到别的办法。
from urllib.request import urlopenfrom bs4 import BeautifulSoupimport reclass Translator(object): markList = {"h1", "h2", "h3", "p"} def find_we_need(self, url): sourcePage = urlopen(url) bsObj = BeautifulSoup(sourcePage, "html.parser") #这个mw-navigation是萌娘百科的导航块,这么写就只能适用于萌娘百科了,很不爽, #以后用在其他网站的时候再想怎么兼容好了。 bsObj.find('div', id = 'mw-navigation').decompose() contents = bsObj.findAll(self.markList) return contents def translate(self, sources): md_file = open("markdown.md", "w") for content in sources: # 直接取消html的换行符,自己加 if re.search('</?br ?/?>', str(content)): continue # 萌娘百科吐槽特色用的删除线,其他网站应该有类似的 elif re.search('<del>.*?</del>', str(content)): p = re.compile(r'</?del>') for a in p.split(str(content)): if re.search(r'<.*?>', a) == None: md_file.write('<del>' + a + '</del>') else: tbs = BeautifulSoup(a, "html.parser") #下面两行是用来去除回车符的 #与最下面处理p标签的分支具有相同的功能 #求大神指导一下QAQ r_content = tbs.get_text() r_content = re.match(r'.*?$', r_content) md_file.write(r_content.group()) md_file.write(' \n') # h1~h6,最省心标签 elif re.search('<h1+', str(content)): md_file.write('#' + content.get_text() + ' \n') elif re.search('<h2+', str(content)): md_file.write('##' + content.get_text() + ' \n') elif re.search('<h3+', str(content)): md_file.write('###' + content.get_text() + ' \n') elif re.search('<h4+', str(content)): md_file.write('####' + content.get_text() + ' \n') elif re.search('<h5+', str(content)): md_file.write('#####' + content.get_text() + ' \n') elif re.search('<h6+', str(content)): md_file.write('######' + content.get_text() + ' \n') # p标签,随意写就好 elif re.search('<p>.*?', str(content)): r_content = content.get_text() #这里利用了正则匹配符$的“只到结尾或回车符之前”的特性,屏蔽了结尾的换行 r_content = re.match(r'.*?$', r_content) md_file.write(r_content.group() + ' \n') # print(content) md_file.close()if __name__ == "__main__": translator = Translator() #这个Url指向一个百合老番的女主的简介页面,可以改成别的。 url = "https://zh.moegirl.org/%E5%A8%9C%E8%92%82" sources = translator.find_we_need(url) translator.translate(sources)
教训:
在设定需要的标签的时候,一定要分清楚必须的标签和不太重要的标签(如del),否则外面的p标签会打印一遍,里面的del标签又会打印一遍.
其二,转化的结果
显示出来的样子:
娜蒂
娜蒂是由真下耕一所导演的美少女枪战三部曲最终作《魔女猎人》及其衍生作品的登场角色。
简介
流浪着的赏金猎人,虽然开朗却从没有旅伴。接下了Blue Eyes的委托因而接近并控制住了艾丽丝,但在与艾丽丝的相处过程中与艾丽丝产生了强烈的互相依赖,并以一己之力护送艾丽丝踏上了向南追寻故乡的旅程。常伴身边的武器是旧式45口径柯尔特自动手枪,在打倒对手之前会骄傲地宣告:“如果有什么遗言的话,现在就说吧!”而唯一一次没能把这句话说出口的时候,是结尾之前娜蒂将子弹射向了艾丽丝的片段。在了结了艾丽丝之后,红发的乐天少女向自己扣动了扳机。
娜蒂与艾丽丝
在遇见艾丽丝之前,娜蒂毫无疑问已经非常适应故事背景所在的社会了。游刃有余的流浪生活,乐天开朗的性格,强于常人的与能力,出众的枪法,这些无一不让赏金猎人娜蒂的生活顺利地进行着。在接触艾丽丝最开始的一段时间里,娜蒂完整而忠实地完成着赏金猎人的任务,但是随着与艾丽丝的旅途逐渐深入展开,娜蒂反而不知道自己追寻的到底是什么了。向南,向南,娜蒂与艾丽丝见到了很多不同的人,经历了很多不同的故事,也一路披襟斩棘地击退了所有让艾丽丝不开心的人,最终发现自己想要的似乎是温暖的陪伴。为了这一个陪伴,娜蒂表露出了愿意放弃自己喜欢的生活的决心。在故事的结尾,娜蒂与艾丽丝本已隐于无名小镇,但是当艾丽丝看着娜蒂的眼睛认真地说出:“喜欢娜蒂发光的眼睛!”的时候,娜蒂又一次宠溺地笑了。于是,在连天的公路上,两个人再一次踏上了新的旅途。
在pinterest上,娜蒂与艾丽丝毫无争议地被外国友人选进了best couple ever的名单…注释与外部链接
(日文)动画官网角色页
Markdown:
#娜蒂 娜蒂是由真下耕一所导演的美少女枪战三部曲最终作《魔女猎人》及其衍生作品的登场角色。 ##简介 流浪着的赏金猎人,虽然开朗却从没有旅伴。接下了Blue Eyes的委托因而接近并控制住了艾丽丝,但在与艾丽丝的相处过程中与艾丽丝产生了强烈的互相依赖,并以一己之力护送艾丽丝踏上了向南追寻故乡的旅程。常伴身边的武器是旧式45口径柯尔特自动手枪,在打倒对手之前会骄傲地宣告:“如果有什么遗言的话,现在就说吧!”而唯一一次没能把这句话说出口的时候,是结尾之前娜蒂将子弹射向了艾丽丝的片段。在了结了艾丽丝之后,红发的乐天少女向自己扣动了扳机。 ##娜蒂与艾丽丝 在遇见艾丽丝之前,娜蒂毫无疑问已经非常适应故事背景所在的社会了。游刃有余的流浪生活,乐天开朗的性格,强于常人的与能力,出众的枪法,这些无一不让赏金猎人娜蒂的生活顺利地进行着。在接触艾丽丝最开始的一段时间里,娜蒂完整而忠实地完成着赏金猎人的任务,但是随着与艾丽丝的旅途逐渐深入展开,娜蒂反而不知道自己追寻的到底是什么了。向南,向南,娜蒂与艾丽丝见到了很多不同的人,经历了很多不同的故事,也一路披襟斩棘地击退了所有让艾丽丝不开心的人,最终发现自己想要的似乎是温暖的陪伴。为了这一个陪伴,娜蒂表露出了愿意放弃自己喜欢的生活的决心。在故事的结尾,娜蒂与艾丽丝本已隐于无名小镇,但是当艾丽丝看着娜蒂的眼睛认真地说出:“喜欢娜蒂发光的眼睛!”的时候,娜蒂又一次宠溺地笑了。于是,在连天的公路上,两个人再一次踏上了新的旅途。 在pinterest上,娜蒂与艾丽丝<del>毫无争议地</del>被外国友人选进了best couple ever的名单... ##注释与外部链接 (日文)动画官网角色页
注:页面来自萌娘百科——娜蒂
最后吐槽一下,为什么我写md文件都这么难看……
- 把Html页面转化为简单的Markdown文件
- 把Word文档转化为Html文件
- showdown.js使用示例(把markdown转化为html)
- MarkDown 导出为 HTML 页面
- 把HTML表单提交的数据转化成XML文件
- 把HTML表单提交的数据转化成XML文件
- 把HTML表单提交的数据转化成XML文件
- blog 如何把html转化为jsp
- 如何把html转化为图象
- 把页面中的JSON转化为JAVA
- 简单的jQuery.jqprint插件实现打印HTML页面,页面导出为PDF文件
- pdf2htmlEX将pdf文件转化为html最优参数以及把生成文件等比例缩小
- 把HTML转化成PDF文件
- 把文件转化为byte[],java
- 将csv文件转化为可视化的html表格
- sphinx rst文件转化为html文件
- 用pandoc把markdown转化为pdf文档
- java把html转化为图片,并且和另一张图片合成新的图片
- 字符串加密
- Java Applet与Java Application的区别
- 如何实现主机与VirtualBox上虚拟机(如Linux)互相粘贴东西
- MyBatis学习总结[4]-ResultMap子元素
- js 事件监听原理,及兼容写法,jquer基本封装原理
- 把Html页面转化为简单的Markdown文件
- 全志R58的官方开发板加载bmi160驱动的步骤2A
- linux网络命令 ss
- 笔试知识点总结(一)
- activity,fragment传值
- linux安装mysl出错
- maven+tomcat插件自动化部署SpringMVC项目(返回JSON)
- "javax.servlet.http.HttpServlet" was not found 的解决方法
- ADB简述