BeautifulSoupを使用してWebページからテキストを取得しようとしています。
以下は私がそうするために書いたスクリプトです。2つの引数を取ります。1つは入力HTMLまたはXMLファイル、2つ目は出力ファイルです。
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))
残念ながら、多くのWebページでは、たとえば次のようになります。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']);
スクリプトに何か問題がありますか?BeautifulSoupのコンストラクターの2番目の引数として「xml」と「html5lib」および「lxml」を渡そうとしましたが、役に立ちません。このタスクに適したBeautifulSoupの代替品はありますか?私が欲しいのは、このWebページのブラウザでレンダリングされるテキストを抽出することだけです。
どんな助けでも大歓迎です。