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