本文の内容だけを取得する最も簡単な方法はunwrap()
、 body タグ内から内容を取得することです。
>>> html = "<p>Hello World</p>"
>>> soup = BeautifulSoup(html, "html5lib")
>>> print(soup)
<html><head></head><body><p>Hello World</p></body></html>
>>>
>>> soup.html.unwrap()
<html></html>
>>>
>>> print(soup)
<head></head><body><p>Hello World</p></body>
>>>
>>> soup.head.unwrap()
<head></head>
>>>
>>> print(soup)
<body><p>Hello World</p></body>
>>>
>>> soup.body.unwrap()
<body></body>
>>>
>>> print(soup)
<p>Hello World</p>
より効率的で再利用可能にするために、これらの望ましくない要素をリストに入れてループすることができます...
>>> def get_body_contents(html):
... soup = BeautifulSoup(html, "html5lib")
... for attr in ['head','html','body']:
... if hasattr(soup, attr):
... getattr(soup, attr).unwrap()
... return soup
>>>
>>> html = "<p>Hello World</p>"
>>> print(get_body_contents(html))
<p>Hello World</p>