2017-02-15 39 views
1

我使用readbility来检索一些HTML页面。我需要从没有HTML标签的HTML页面获取正文文本。我可以用readability来做到这一点吗?使用可读性清除HTML标记

+0

你想要整个页面还是特定的部分?是否该页面没有HTML标签,或者您希望提取没有HTML标签? – celestialroad

+0

我想提取文本,以便它没有任何html标记。 – Mehdi

回答

0

通过readability源代码挖后,我发现,虽然确实出现了利用图书馆的cleaners模块清理HTML的方式,使用的方法来检索内容(使用lxml)存储它作为unicode文本。这是一个问题,因为cleaners用于去除HTML标签的方法返回Unicode对象的AttriuteError

import requests 
from readability import Document 

response = requests.get('http://example.com') 
doc = Document(response.text) 
doc.summary() 
# raw content of HTML page with tags 
doc.get_clean_html() 
# AttributeError: 'unicode' object has no attribute 'get_clean_html' 

它的出现,那就是,这个包还没有看到积极的发展了一段时间,因此具有许多错误。

BeautifulSoup是另一个更好开发的库,它可以完成readability所做的所有工作。对于同样使用BeautifulSoup代替的问题,也有an excellent answer。这是一个长期的解决方案。

在短期内,根据页面是多么复杂,你可以使用re删除所有的HTML标签,并留下文字,如下图所示使用我的网站:

import re 
import requests 
from readability import Document 

response = requests.get('http://ryanmcginnis.co/') 
doc = Document(response.text) 
cleanme = doc.summary() 
print(re.sub('<.*?>', '', cleanme)) 

该程序从我的文本网站返回纯文本。