получить следующий пункт в красивом супе - PullRequest
0 голосов
/ 14 апреля 2019

С красивым супом мне нужно определить значение одного выражения. Из многих определений нужно только одно. В прекрасном супе содержимое выглядит так:

<strong>occhio della testa</strong><br/>
loc.s.m <br/>
<span class="mu"title="">CO</span><span style="color:#000"> </span><br/>
follia<br/>
<strong>pagare un occhio della testa</strong><br/>
loc.v.<br/>
<span class="mu"title="">CO</span><span style="color:#000"> </span><br/>
strapagare<br/>
<strong>passare per la testa</strong><br/>
loc.v.<br/>
<span class="mu" title="">CO</span><span style="color:#000"> </span><br/>
passare per la mente<br/>
<strong>perdere la testa</strong><br/>
loc.v.<br/>
<span class="mu" title="">CO</span><span style="color:#000"> </span><br/>
entrare in uno stato di confusione mentale; impazzire, spec. fig.: ha perso la testa per quella donna, se ne è perdutamente innamorato<br/>
<strong>

Что мне нужно из приведенного выше текста:

pagare un occhio della testa:strapagare

Я пробовал это

# list of expressions that I need their meaning
myitems = ['pagare un occhio della testa', '....' , '....']

for ex in myitems:
    ws = ex.split()
    li = ""
    url = "https://mydictionary/" + ws[-1]+ ""
    if urllib.request.urlopen(url):
        htmlfile = urllib.request.urlopen(url)
        soup = BeautifulSoup(htmlfile, 'lxml')
        txt = soup.text
        if ex in txt:
           li = '%s = %r' % (es, soup.next_siblings)
    print(li)

Этот код дает только отл. Может кто-нибудь помочь?

1 Ответ

0 голосов
/ 14 апреля 2019

Я не знаю, насколько регулярна структура, но для вышесказанного вы можете использовать следующее (bs4 4.7.1):

soup.select_one('strong:contains("pagare un occhio della testa") ~ span + span').next_sibling.next_sibling.strip()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...