sla*_*law 7 python beautifulsoup css-selectors html-parsing python-2.7
示例HTML
<h2 id="name">
ABC
<span class="numbers">123</span>
<span class="lower">abc</span>
</h2>
Run Code Online (Sandbox Code Playgroud)
我可以用以下内容获得数字:
soup.select('#name > span.numbers')[0].text
Run Code Online (Sandbox Code Playgroud)
如何ABC使用BeautifulSoup和select函数获取文本?
在这种情况下怎么样?
<div id="name">
<div id="numbers">123</div>
ABC
</div>
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,获取前一个兄弟:
soup.select_one('#name > span.numbers').previous_sibling
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,获得下一个兄弟:
soup.select_one('#name > #numbers').next_sibling
Run Code Online (Sandbox Code Playgroud)
请注意,我认为这是故意的,你在这里有numbers一个id值而标签div代替span.因此,我调整了CSS选择器.
要涵盖这两种情况,您可以转到标记的父级,并以非递归模式查找非空文本节点:
parent = soup.select_one('#name > .numbers,#numbers').parent
print(parent.find(text=lambda text: text and text.strip(), recursive=False).strip())
Run Code Online (Sandbox Code Playgroud)
注意选择器中的更改 - 我们要求匹配numbersid或numbersclass.
虽然,我觉得这种通用的解决方案不太可靠,因为对于初学者来说,我不知道你的真实投入是什么.
| 归档时间: |
|
| 查看次数: |
5744 次 |
| 最近记录: |