gpt4 book ai didi

python - BeautifulSoup get_text 不会去除所有标签和 JavaScript

转载 作者:太空狗 更新时间:2023-10-29 14:01:02 25 4
gpt4 key购买 nike

我正在尝试使用 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 的替代品可以更好地完成这项任务?我只想提取将在该网页的浏览器中呈现的文本。

任何帮助将不胜感激。

最佳答案

nltk 的 clean_html() 非常擅长这个!

假设您已经将 html 存储在变量 html

html = urllib.urlopen(address).read()

然后就用

import nltk
clean_text = nltk.clean_html(html)

更新

nltk 的 future 版本将不再支持 clean_htmlclean_url。请暂时使用 BeautifulSoup……非常不幸。

有关如何实现此目的的示例位于此页面上:

BeatifulSoup4 get_text still has javascript

关于python - BeautifulSoup get_text 不会去除所有标签和 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10524387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com