我正在尝试从本文(https://www.vanityfair.com/style/society/2014/06/monica-lewinsky-humiliation-culture)中提取文章文本,并在底部排除合法容器。文本部分看似简单,但似乎无法摆脱容器。我已将其与法律变量分开以便于使用。
到目前为止,这是我的代码:
import requests
from bs4 import BeautifulSoup
base_url = 'https://www.vanityfair.com/style/society/2014/06/monica-lewinsky-humiliation-culture'
r = requests.get(base_url)
r_html = r.text
soup = BeautifulSoup(r_html)
legal = soup.find('div',{'class': 'legal-container'})
paragraphs = soup.find_all('p')
for text in paragraphs:
print text.get_text()
我应该怎么做?
答案 0 :(得分:1)
始终找到您想要的部分,看看如何单独提取该部分,而不是获取所有文本,然后消除不需要的部分。
在您的情况下,您可能需要的文字会分组在section
个div
内,class
属性为content drop-cap
。你可以使用:
content_div = soup.find('div', {'class': 'content drop-cap'})
通过这种方式,您可以灵活地按部分对文本进行分组:
sections = content_div.findAll('section')
但是,如果您仍然坚持获取所有段落并专门排除合法容器,则可以从soup
对象中删除合法容器。
<强>分解()强>
Tag.decompose()从树中删除标签,然后完全销毁 它及其内容
如果您选择这样做,请在提取文本之前删除您不想要的标记:
soup.find('div', {'class': 'legal-container'}).decompose()