avi*_*iss 4 beautifulsoup python-2.7
我需要从新闻文章中提取有用的文本。我用 BeautifulSoup 做这件事,但输出把一些段落粘在一起,这阻止了我进一步分析文本。
我的代码:
import requests
from bs4 import BeautifulSoup
r = requests.get("http://www.bbc.co.uk/news/uk-england-39607452")
soup = BeautifulSoup(r.content, "lxml")
# delete unwanted tags:
for s in soup(['figure', 'script', 'style']):
s.decompose()
article_soup = [s.get_text() for s in soup.find_all(
'div', {'class': 'story-body__inner'})]
article = ''.join(article_soup)
print(article)
Run Code Online (Sandbox Code Playgroud)
输出看起来像这样(只有前 5 个句子):
在耶路撒冷被刺死的英国学生汉娜·布拉登 (Hannah Bladon) 的家人表示,他们对这场“毫无意义和悲惨的袭击”感到“震惊”。 20 岁的布拉登女士于耶稣受难日在耶路撒冷的一辆电车上遭到袭击。她去世时在耶路撒冷希伯来大学学习,那天早上一直在参与考古挖掘。布拉登女士的胸部被刺了几次,在医院里死亡。她遭到一名男子的袭击,他从包里拿出一把刀,在老城附近的电车上反复刺伤她,因为基督徒庆祝耶稣受难节和犹太人庆祝逾越节,电车很忙。
我尝试在某些标点符号后添加一个空格,例如“.”、“?”和“!”。
article = article.replace(".", ". ")
Run Code Online (Sandbox Code Playgroud)
它适用于段落(尽管我相信应该有更聪明的方法来做到这一点),但不适用于文章不同部分的字幕,这些部分最终没有任何标点符号。它们的结构如下:
</p>
<h2 class="story-body__crosshead">
Subtitle text
</h2>
<p>
Run Code Online (Sandbox Code Playgroud)
我将不胜感激您的建议。
PS:当我“加入”article_soup 时添加一个空格没有帮助。
Zro*_*roq 12
您可以使用separatorin your get_text,它将获取当前元素中由给定字符分隔的所有字符串。
article_soup = [s.get_text(separator="\n", strip=True) for s in soup.find_all( 'div', {'class': 'story-body__inner'})]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1562 次 |
| 最近记录: |