Phi*_*ich 3 python beautifulsoup
我试图从本文中提取文章文本(https://www.vanityfair.com/style/society/2014/06/monica-lewinsky-humiliation-culture)并排除底部的合法容器。文本部分看起来很简单,但似乎无法摆脱容器。为了方便使用,我将它与 legal 变量分开。
到目前为止,这是我的代码:
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()
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
小智 5
始终找到您想要的部分,并了解如何单独提取该部分,而不是获取所有文本,然后删除不需要的文本。
在您的情况下,您可能需要的文本被分组在具有属性的sectiona 内的标签中。您可以使用以下方法得到它:divclasscontent drop-cap
content_div = soup.find('div', {'class': 'content drop-cap'})
Run Code Online (Sandbox Code Playgroud)
这样,您就可以灵活地按部分对文本进行分组:
sections = content_div.findAll('section')
Run Code Online (Sandbox Code Playgroud)
但是,如果您仍然坚持获取所有段落并专门排除合法容器,则可以从对象中删除合法容器soup。
分解()
Tag.decompose() 从树中删除标签,然后完全销毁它及其内容
如果您选择这样做,请在提取文本之前删除不需要的标签:
soup.find('div', {'class': 'legal-container'}).decompose()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5189 次 |
| 最近记录: |