2015-05-05 2 views
2
<div class="meaning"><span class="hinshi">[副]</span>物事の重点・大勢を述べるときに用いる。</div> 

Все, что мне нужно, это おもに。もっぱら。物事の重点・大勢を述べるときに用いる.Не знаете, как разобрать это

Обычно hinshi класс отдельно от фраз я пытаюсь разобрать, но для некоторых из них кажется, что они объединены вместе. Есть ли вообще, чтобы просто напечатать предложение, не обращая внимания на [副]?

+2

Откуда взялись первые несколько персонажей? – user2963623

ответ

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] 

Все четыре варианта приводят к:

物事の重点・大勢を述べるときに用いる。 
+0

Примечание: этот ответ использует BeautifulSoup –

+0

@JosepValls уверен, что именно об этом спрашивал OP. – alecxe

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) 

поможет вам

物事の重点・大勢を述べるときに用いる。 

(предполагается, что "お も に. も っ ぱ ら." была опечатка, как это нигде в исходной строке)

1

Вы можете сделать это несколькими способами, а именно:

  1. Использование XPath (через lxml)
  2. Использование регулярных выражений (через re module)
  3. Использование Beautiful Soup

alcxe и че рассмотрели, как сделать это с помощью метода № 3, так вот еще два способа сделать это:

  1. XPath:

    from lxml.html import fromstring 
    s = u'<div class="meaning"><span class="hinshi">[副]</span>物事の重点・大勢を述べるときに用いる。</div>' 
    print(fromstring(s).xpath('//div/text()')[0]) 
    
  2. Регулярные выражения:

    import re 
    s = u'<div class="meaning"><span class="hinshi">[副]</span>物事の重点・大勢を述べるときに用いる。</div>' 
    print(re.findall("</span>(.*)</div>", s)[0]) 
    

Оба вышеуказанных метода требуют, чтобы вы изучали новые библиотеки/«подъязыки» (XPath/Regex), но универсальны и могут использоваться на многих других языках (Beautiful Soup - только Python).

Счастливый разбор!

Смежные вопросы