把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文件都这么难看……

0 0
原创粉丝点击