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

2015-04-14 17:43:18 +08:00
 hatni
新手看不懂 Beautiful Soup文档,大家可以提供一些思路吗? 我不是伸手党
7173 次点击
所在节点    Python
22 条回复
staticor
2015-04-14 18:16:41 +08:00
我也不熟悉bs4, 楼主可以尝试一下先查看html文档, 熟悉熟悉基本结构.

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

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

这个搞利落的咱们再找找更优雅的方式吧
staticor
2015-04-14 18:28:12 +08:00
source = open(file1, 'r').read()

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

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

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

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

只要<body> 提取出来,随便你写成什么格式
icedx
2015-04-14 20:16:48 +08:00
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-04-14 21:50:21 +08:00
readability提供了提取正文的api,返回的html可以使用amazon kindlegen生成mobi格式
icedx
2015-04-14 22:24:02 +08:00
不对 我那个不能用...
icedx
2015-04-14 22:35:14 +08:00
https://gist.github.com/anonymous/bf0e27d046e3c5c90168

这个还有一点瑕疵 但是已经接近完美
ztmark
2015-04-14 23:01:00 +08:00
xiaoboost
2015-04-14 23:07:28 +08:00
mobi?想要在kindle上看的是吗?

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

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

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

https://www.v2ex.com/t/183675

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

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

© 2021 V2EX