I have this structure:
JavaScript
x
3
1
<span class="_1p7iugi">
2
<span class="_krjbj">Price:</span>$39</span>
3
and I want to get only the $39, but when I do this code:
JavaScript
1
3
1
def getListingPrice2(listing):
2
return listing.find("span", {"class":"_1p7iugi"}).text
3
It returns me:
JavaScript
1
2
1
Price: $39
2
How can I get only the part I want?
Advertisement
Answer
Interesting question
JavaScript
1
17
17
1
from bs4 import BeautifulSoup
2
mainSoup = BeautifulSoup("""
3
<html>
4
<span class="_1p7iugi">
5
<span class="_krjbj">Price:</span>$39</span>
6
</html>
7
""")
8
9
external_span = mainSoup.find('span')
10
print("1 HTML:", external_span)
11
print("1 TEXT:", external_span.text.strip())
12
13
unwanted = external_span.find('span')
14
unwanted.extract()
15
print("2 HTML:", external_span)
16
print("2 TEXT:", external_span.text.strip())
17
will get you
JavaScript
1
7
1
1 HTML: <span class="_1p7iugi">
2
<span class="_krjbj">Price:</span>$39</span>
3
1 TEXT: Price:$39
4
2 HTML: <span class="_1p7iugi">
5
$39</span>
6
2 TEXT: $39
7
so
JavaScript
1
6
1
def getListingPrice2(listing):
2
outer = listing.find("span", {"class":"_1p7iugi"})
3
unwanted = outer.find('span')
4
unwanted.extract()
5
return outer.text.strip()
6
will get you
$39