BeautifulSoup get_text не удаляет все теги и JavaScript

Я пытаюсь использовать 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, которая лучше подойдет для этой задачи? Все, что я хочу, это извлечь текст, который будет отображаться в браузере для этой веб-страницы.

Будем признательны за любую помощь.

7
задан piokuc 9 May 2012 в 21:31
поделиться