如何用 Python 将若干 html 文件提取正文,并转换成 mobi 或 txt 格式?

2015 年 4 月 14 日
 hatni
新手看不懂 Beautiful Soup文档,大家可以提供一些思路吗? 我不是伸手党
8135 次点击
所在节点    Python
22 条回复
staticor
2015 年 4 月 14 日
我也不熟悉bs4, 楼主可以尝试一下先查看html文档, 熟悉熟悉基本结构.

<head> <body> <td>... 什么的

然后就把html当成一个很长的字符串, 用正则分割处理一下.

这个搞利落的咱们再找找更优雅的方式吧
staticor
2015 年 4 月 14 日
source = open(file1, 'r').read()

print(source.split('<title>')[1].split('</title>')[0])

这里没用正则, 就是str的最基本的split函数. 希望有所帮助
(我也是抛砖引玉了)
saki
2015 年 4 月 14 日
如果不复杂的话,直接用HTMLPaser就可以了,可以提取指定标签

https://docs.python.org/2/library/htmlparser.html

栗子:
http://www.pythonclub.org/python-files/htmlparser

只要<body> 提取出来,随便你写成什么格式
icedx
2015 年 4 月 14 日
Out=[]
Pass=0
for char in page:
if Pass=0:
if char=='<':
Pass=1
continue
else:
if char=='>'
Pass=0
continue
else:
Out.append(Char)
else:
pass
Fatch=''.join(Out)

既然楼主不是伸手党
补全缩进就可以用了
tinybvjk
2015 年 4 月 14 日
readability提供了提取正文的api,返回的html可以使用amazon kindlegen生成mobi格式
icedx
2015 年 4 月 14 日
不对 我那个不能用...
icedx
2015 年 4 月 14 日
https://gist.github.com/anonymous/bf0e27d046e3c5c90168

这个还有一点瑕疵 但是已经接近完美
ztmark
2015 年 4 月 14 日
xiaoboost
2015 年 4 月 14 日
mobi?想要在kindle上看的是吗?

我以前用正则提取的,最后程序把正文存成docx文件,发到自己kindle邮箱
mobi是亚马逊自己的格式,不开源的,貌似没有现成的制作方法吧
crccw
2015 年 4 月 15 日
BeautifulSoup挺好用的啊。。
endoffight
2015 年 4 月 15 日
更直观的话,我给楼主推荐
pyquery
endoffight
2015 年 4 月 15 日
忘了给给文档了 )逃

https://pypi.python.org/pypi/pyquery
metrue
2015 年 4 月 15 日
http://get.jobdeer.com/122.get 可以参考实现。
XcodeUser
2015 年 4 月 15 日
学下xpath,然后用lxml不就挺好挺快吗
hatni
2015 年 4 月 15 日
@icedx 感谢你的代码,刚刚试了下打开乱码,手动添加了网页编码 可行。我经管系,自学python,看了点Html CSS,陆续几个月始终没入门JavaScript。
hatni
2015 年 4 月 15 日
@endoffight pyquery ,这个需要懂Jquery,计划准备学,
BOYPT
2015 年 4 月 15 日
@hatni pyquery 和jquery可没什么关系,共同个的是,pyquery和jquery都实现了类似的css选择器的功能。
MayLava
2015 年 4 月 15 日
pyquery+html2text 直接转成markdown格式
hatni
2015 年 4 月 15 日
多谢各位的帮助,我只刚看完《Learn Python the Hard Way》。Beautiful Soup 、xpath 、xml 、 pyquery 、正则表达式,上面各种 新手应该按照怎样的难易顺序来学。
icedx
2015 年 4 月 15 日
@hatni 以后要从事开发么

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/183675

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX