from BeautifulSoup import BeautifulSoup
s = BeautifulSoup('[<div class="meaning"><span class="hinshi">[副]</span>物事の重点・大勢を述べるときに用いる。</div>]')
nodes = s.find('div', 'meaning').contents
only_strings = [x for x in nodes if getattr(x, 'name', None) is None]
print ''.join(only_strings)
from lxml.html import fromstring
s = u'<div class="meaning"><span class="hinshi">[副]</span>物事の重点・大勢を述べるときに用いる。</div>'
print(fromstring(s).xpath('//div/text()')[0])
正则表达式:
import re
s = u'<div class="meaning"><span class="hinshi">[副]</span>物事の重点・大勢を述べるときに用いる。</div>'
print(re.findall("</span>(.*)</div>", s)[0])
有多种方法可以获得所需的文本。你知道吗
我会在
div
中找到一个文本节点,其中class="meaning"
具有recursive=False
:或者,您可以获取内部
span
元素并找到next sibling:或使用^{} :
或者,您可以从^{} 列表中获取最后一个元素:
这四个选项的结果都是:
如果您想省略所有子标签,只需将
div.meaning
的内容串起来,就可以通过查看其name
属性(只有标签才有)来过滤节点:我会抓到你的
(假定“おもに.もっぱら”是一个打字错误,因为它不在源字符串中)
您可以通过两种方式来实现这一点,即:
alcxe和che介绍了如何使用方法3,所以这里还有两种方法:
XPath:
正则表达式:
以上两种方法都要求您学习一些新的库/“子语言”(XPath/Regex),但是它们是通用的,并且可以在许多其他语言中使用(Beautiful Soup仅适用于Python)。你知道吗
快乐解析!你知道吗
相关问题 更多 >
编程相关推荐