How to extract the last div?

Viewed 40

How can I extract the last div from these ones:

<div class="_1mil">
    <div class="_2yjq">Медсестра - Регистратор</div>
    <div class="pz-o"><span><span>требуемый опыт работы <span>от года до 3 лет</span></span></span></div> 
    <div>80 000 — 120 000 тг</div>
</div>

I need only the last one without a class

2 Answers

Personally, I would retrieve just the last item by doing the filtering with css selectors. It's more compact and likely faster.

Here are two possibilities based on the html as shown:

import re
from bs4 import BeautifulSoup as bs

html='''
<div class="_1mil">
    <div class="_2yjq">Медсестра - Регистратор</div>
    <div class="pz-o">
        <span>
            <span>требуемый опыт работы <span>от года до 3 лет</span></span>
        </span>
    </div>
    <div>80 000 — 120 000 тг</div>
</div>

'''

soup = bs(html, 'lxml')
print(soup.select_one('._1mil div:last-child').text)
print(soup.select_one('._1mil div:last-of-type').text)

You can use [-1] to access the last element - in this case <div>:

from bs4 import BeautifulSoup

html_doc = """<div class="_1mil">
    <div class="_2yjq">Медсестра - Регистратор</div>
    <div class="pz-o"><span><span>требуемый опыт работы <span>от года до 3 лет</span></span></span></div> 
    <div>80 000 — 120 000 тг</div>
</div>"""

soup = BeautifulSoup(html_doc, "html.parser")


print(soup.select("._1mil div")[-1].text)

Prints:

80 000 — 120 000 тг

Or: Without .select():

print(soup.find(class_="_1mil").find_all("div")[-1].text)
Related