<div class="meaning"><span class="hinshi">[副]</span>物事の重点・大勢を述べるときに用いる。</div>
我需要的只是おもに。もっぱら。物事の重点・大勢を述べるときに用いる
。
通常,hinshi类与我试图解析的句子是分开的,但对于其中一些句子,它们似乎是组合在一起的。无论如何只是打印句子而忽略[副]
?
答案 0 :(得分:1)
您可以通过以下几种方式完成此操作,即:
alcxe和che介绍了如何使用方法#3,所以这里有两种方法:
的XPath:
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])
上述两种方法都要求您学习一些新的库/“子语言”(XPath / Regex),但它们是通用的,可以用于许多其他语言(Beautiful Soup只适用于Python)。
快乐解析!
答案 1 :(得分:0)
如果要省略所有子标签并且只能对div.meaning
的内容进行字符串排序,则可以通过查看其name
属性(仅标记有)来过滤节点:
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)
会帮你的
物事の重点・大勢を述べるときに用いる。
(假设&#34;おもに。もっぱら。&#34;是一个错字,因为它在源字符串中没有任何地方)
答案 2 :(得分:0)
有多种方法可以获得所需的文字。
我在div
中找到了class="meaning"
recursive=False
的文字节点:
soup.find('div', class_="meaning").find(text=True, recursive=False)
或者,您可以获取内部span
元素并找到next sibling:
soup.find('div', class_="meaning").find('span', class_="hinshi").next_sibling
或使用CSS selector
:
soup.select('div.meaning > span.hinshi')[0].next_sibling
或者,您可以从contents
列表中获取最后一个元素:
soup.select('div.meaning')[0].contents[-1]
所有四个选项都会产生:
物事の重点・大勢を述べるときに用いる。