如何使用BeautifulSoup(Python)排除元素

如何使用BeautifulSoup(Python)排除元素,python,beautifulsoup,Python,Beautifulsoup,我试图从本文()中提取文章文本,并排除底部的合法容器。文本部分似乎很简单,但似乎无法摆脱容器。为了便于使用,我将其与法律变量分开 以下是我目前的代码: 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_

我试图从本文()中提取文章文本,并排除底部的合法容器。文本部分似乎很简单,但似乎无法摆脱容器。为了便于使用,我将其与法律变量分开

以下是我目前的代码:

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()

我应该怎么做呢?

总是找到你想要的部分,看看如何单独提取该部分,而不是获取所有文本,然后删除不需要的部分

在您的情况下,您可能需要的文本被分组在
部分的
标签中,该标签位于
div
中,该div具有
class
属性
content-drop-cap
。您可以通过以下方式获得此信息:

content_div = soup.find('div', {'class': 'content drop-cap'})
这样,您就可以灵活地按节对文本进行分组:

sections = content_div.findAll('section')
但是,如果您仍然坚持获取所有段落并明确排除合法容器,则可以从
soup
对象中删除合法容器

发件人:

分解()

decompose()从树中删除标记,然后完全销毁 它及其内容

如果选择执行此操作,请在提取文本之前删除不需要的标记:

soup.find('div', {'class': 'legal-container'}).decompose()

除了排除之外,你不能定义一个比所有
p
标记更好的选择吗?我试过了,但是似乎找不到一个好方法。所有文本,包括合法容器中的文本,都有选择器
div.article-main p
?文章中的所有段落谢谢!那太有用了!我还是个新手:)