我正在尝试使用 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 更适合这项任务的替代品?我想要的只是提取将在浏览器中为该网页呈现的文本。
任何帮助都感激不尽。