0

そこで、Webページからすべてのテキストを取得するための最小限の関数を作成しました。

url = 'http://www.brainpickings.org'
request = requests.get(url)
soup_data = BeautifulSoup(request.content)
texts = soup_data.findAll(text=True)

def visible(element):
    if element.parent.name in ['style', 'script', '[document]', 'head', 'title']:
        return False

    return True
print filter(visible,texts)

しかし、それはそれほどスムーズには機能しません。そこにはまだ不要なタグがあります。また、不要なさまざまな文字の正規表現を削除しようとすると、

error     elif re.match('<!--.*-->', str(element)):
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 209: ordinal not in range(128)

したがって、これをもう少し改善して改善するにはどうすればよいですか?

4

1 に答える 1

1

lxmlを使用すると、これは非常に簡単です。

from lxml import html

doc = html.fromstring(content)
print doc.text_content()

編集:頭のフィルタリングは次のように行うことができます:

print doc.body.text_content()
于 2012-06-05T09:31:19.077 に答える