如何正确获取带有 BeautifulSoup 的元素?
How to properly get an element with BeautifulSoup?
我是 Python 的新手,正在尝试解析一个简单的 HTML。但是,有一件事阻止了我:例如,我有这个 html:
<div class = "quote">
<div class = "whatever">
some unnecessary text here
</div>
<div class = "text">
Here's the desired text!
</div>
</div>
我需要从第二个 div(文本)中提取文本。这样我就明白了:
print repr(link.find('div').findNextSibling())
不过,这个returns整个div(带"div"字):<div class="text">Here's the desired text!</div>
而且我不知道如何只获取文本。
- 添加
.text
导致 \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431
个字符串\
- 添加
.strings
returns"None"
- 同时添加
.string
returns "None"
和 \u042f\u0445\u0438\u043a\u043e - \u0435\u0441\u043b\u0438\
可能repr
有问题
P.S。我也需要在 div
中保存标签。
为什么不直接根据 class
属性搜索 <div>
元素?像下面这样的东西似乎对我有用:
from bs4 import BeautifulSoup
html = '''<div class = "quote">
<div class = "whatever">
some unnecessary text here
</div>
<div class = "text">
Here's the desired text!
</div>
</div>'''
link = BeautifulSoup(html, 'html')
print link.find('div', class_="text").text.strip()
它产生:
Here's the desired text!
我是 Python 的新手,正在尝试解析一个简单的 HTML。但是,有一件事阻止了我:例如,我有这个 html:
<div class = "quote">
<div class = "whatever">
some unnecessary text here
</div>
<div class = "text">
Here's the desired text!
</div>
</div>
我需要从第二个 div(文本)中提取文本。这样我就明白了:
print repr(link.find('div').findNextSibling())
不过,这个returns整个div(带"div"字):<div class="text">Here's the desired text!</div>
而且我不知道如何只获取文本。
- 添加
.text
导致\u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431
个字符串\ - 添加
.strings
returns"None"
- 同时添加
.string
returns"None"
和\u042f\u0445\u0438\u043a\u043e - \u0435\u0441\u043b\u0438\
可能repr
P.S。我也需要在 div
中保存标签。
为什么不直接根据 class
属性搜索 <div>
元素?像下面这样的东西似乎对我有用:
from bs4 import BeautifulSoup
html = '''<div class = "quote">
<div class = "whatever">
some unnecessary text here
</div>
<div class = "text">
Here's the desired text!
</div>
</div>'''
link = BeautifulSoup(html, 'html')
print link.find('div', class_="text").text.strip()
它产生:
Here's the desired text!