我正在尝试使用BeautifulSoup从网页获取文本。
以下是我编写的脚本。它带有两个参数,第一个是输入HTML或XML文件,第二个是输出文件。
import sys
from bs4 import BeautifulSoup
def stripTags(s): return BeautifulSoup(s).get_text()
def stripTagsFromFile(inFile, outFile):
open(outFile, 'w').write(stripTags(open(inFile).read()).encode("utf-8"))
def main(argv):
if len(sys.argv) <> 3:
print 'Usage:\t\t', sys.argv[0], 'input.html output.txt'
return 1
stripTagsFromFile(sys.argv[1], sys.argv[2])
return 0
if __name__ == "__main__":
sys.exit(main(sys.argv))
不幸的是,对于许多网页来说,例如:http : //www.greatjobsinteaching.co.uk/career/134112/Education-
Manager-
Location
我得到这样的信息(我只显示了几行):
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
Education Manager Job In London With Caleeda | Great Jobs In Teaching
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-15255540-21']);
_gaq.push(['_trackPageview']);
_gaq.push(['_trackPageLoadTime']);
我的脚本有什么问题吗?我试图将“ xml”作为第二个参数传递给BeautifulSoup的构造函数以及“ html5lib”和“
lxml”,但这没有帮助。是否有BeautifulSoup的替代方法可以更好地完成此任务?我想要的只是提取要在浏览器中呈现的用于该网页的文本。
任何帮助都感激不尽。
nltkclean_html()
在这方面非常擅长!
假设您已经将html存储在html
像这样的变量中
html = urllib.urlopen(address).read()
然后就用
import nltk
clean_text = nltk.clean_html(html)
更新
支持clean_html
和clean_url
将被丢弃的NLTK的未来版本。请暂时使用BeautifulSoup …这很不幸。
此页面上提供了有关如何实现此目的的示例:
BeatifulSoup4
get_text仍然具有JavaScript
问题内容: 假设我有一个这样的html片段: 我想从中提取的是: 所以我的问题是:如何从html中剥离所有包装标签,并仅以与html中相同的顺序获取文本?正如您在标题中看到的那样,我想使用jsoup进行解析。 重音html的示例(注意’á’字符): 我想要的是: 这个html并不是静态的,通常我只希望通用html片段的每个文本都以已解码的人类可读形式显示,宽度换行。 问题答案: 使用Jsoup:
问题内容: 我有以下html: 我要删除从开始到结束为止的所有内容。我怎么做? 问题答案: 使用本机DOM
问题内容: 是否存在现有的Java库,该库提供了一种从字符串中剥离所有HTML标记的方法?我正在寻找与PHP中的功能等效的东西。 我知道我可以使用这个问题中描述的正则表达式,但是我很好奇,是否可能已经有一种方法可以在Apache Commons库中的某个地方使用。 问题答案: 在开放了将近一个星期的问题之后,我可以肯定地说,Java API或Apache库中没有可用的方法可从字符串中剥离HTML标
问题内容: 我需要用ajax调用产生的html替换页面中div的内容。问题是html中包含一些必要的脚本,并且jquery html()函数似乎将它们剥离了,我需要过滤响应并仅获取特定的div。 我正在考虑一种解决方法,该方法是从ajax响应中提取所有脚本标签,然后将其附加到DOM中,但是这样做很麻烦。 这是我的代码; 但这是任何结论。我尝试了那里提出的解决方案,但没有一个起作用。 编辑:我似乎找
问题内容: 我如何脱衣 我知道您可以使用剥离标签删除标签,但是我也希望两者之间的所有内容都消失了。 任何帮助,将不胜感激。 问题答案: 在处理HTML时,应使用HTML解析器正确处理它。您可以使用PHP的DOMDocument并使用DOMXPath查询元素,例如:
问题内容: 我已经看到很多表达式可以删除一个特定的标签(或许多指定的标签),一个可以删除除一个特定标签之外的所有标签,但是我没有找到一种方法来删除其中除许多除外(即所有除外)之外的所有标签。 PHP。我对正则表达式不是很满意,所以我需要帮助。:) 谢谢! 问题答案: 确实做到这一点。