Python Найти текст в конце HTML-элемента - PullRequest
1 голос
/ 23 мая 2019

Мне нужно вытащить заголовок фильма и год из текста HTML ниже, используя метод BeautifulSoup find ().

ниже приводится название фильма, но я не могу вернуть только год

find ('p'). Find ('a'). Text

<div class="col-sm-6 col-lg-3">
<div class="poster-container">
<a class="poster-link" href="/title/80244680/">
<img alt="A Tale of Two Kitchens (2019)" class="poster" src="https://occ-0-37-33.1.nflxso.net/dnm/api/v6/0DW6CdE4gYtYx8iy3aj8gs9WtXE/AAAABfTGUtIG2HYlEhUbvzPHmiAyPSkDcBIhQx_Ey06KfkgaUEwELBtJsJYP71-Vsx06NTKFKWZQupZGNVE8DCo8dC0j-zpcaNCPGFiyNJKN7tonZ3gMSAM.jpg?r=397"/>
<div class="overlay d-none d-lg-block text-center">
<span class="d-block font-weight-bold small mt-3">Documentaries</span>
<span class="d-block font-weight-bold small">International Movies</span>
</div>
</a>
</div>
<p><strong><a href="/title/80244680/">A Tale of Two Kitchens</a></strong><br/>2019</p>
</div>
A Tale of Two Kitchens
<br/>

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

Используйте следующий code.find тег <a>, а затем используйте next_element

from bs4 import BeautifulSoup
html='''<div class="col-sm-6 col-lg-3">
<div class="poster-container">
<a class="poster-link" href="/title/80244680/">
<img alt="A Tale of Two Kitchens (2019)" class="poster" src="https://occ-0-37-33.1.nflxso.net/dnm/api/v6/0DW6CdE4gYtYx8iy3aj8gs9WtXE/AAAABfTGUtIG2HYlEhUbvzPHmiAyPSkDcBIhQx_Ey06KfkgaUEwELBtJsJYP71-Vsx06NTKFKWZQupZGNVE8DCo8dC0j-zpcaNCPGFiyNJKN7tonZ3gMSAM.jpg?r=397"/>
<div class="overlay d-none d-lg-block text-center">
<span class="d-block font-weight-bold small mt-3">Documentaries</span>
<span class="d-block font-weight-bold small">International Movies</span>
</div>
</a>
</div>
<p><strong><a href="/title/80244680/">A Tale of Two Kitchens</a></strong><br/>2019</p>
</div>
A Tale of Two Kitchens
<br/>'''
soup=BeautifulSoup(html,'html.parser')

item=soup.select_one('.col-sm-6.col-lg-3').find_next('p')
print(item.text)

Выход:

Сказка о двух кухнях2019


item=soup.select_one('.col-sm-6.col-lg-3').find_next('p').find('a').text
print(item)

выход:

Сказка о двух кухнях


item=soup.select_one('.col-sm-6.col-lg-3').find_next('p').find('a').next_element.next_element.next_element
print(item)
* * Тысяча двадцать-одина выход:

2019

0 голосов
/ 23 мая 2019
my_element.contents[-1]

Это даст вам последний элемент, содержащийся внутри my_element: в этом случае, если my_element является <p>, это даст текст "2019" как NavigableString. ( первый дочерний элемент - это тег <strong>, который содержит <a> и все остальные.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...