Solution 1 :

You need to get the tag text, convert to a number and then it should work.

For example:

from bs4 import BeautifulSoup

sizes = """[<span class="product__sizes-size-1">6</span>, <span class="product__sizes-size-1">6.5</span>, <span class="product__sizes-size-1">7</span>, <span class="product__sizes-size-1">7.5</span>, <span class="product__sizes-size-1">8</span>, <span class="product__sizes-size-1">8.5</span>, <span class="product__sizes-size-1">9</span>, <span class="product__sizes-size-1"></span>, <span class="product__sizes-size-1"></span>, <span class="product__sizes-size-1"></span>, <span class="product__sizes-size-1"></span>, <span class="product__sizes-size-1"></span>, <span class="product__sizes-size-1"></span>, <span class="product__sizes-size-1"></span>]
"""

soup = BeautifulSoup(sizes, "html.parser").find_all(True, {'class': 'product__sizes-size-1'}, text=True)
parsed_sizes = [
    item.getText(strip=True) for item in soup 
    if 1 <= float(item.getText(strip=True)) <= 20
]
print(parsed_sizes)

Output:

['6', '6.5', '7', '7.5', '8', '8.5', '9']

Problem :

Heres my code:

with requests.Session() as s:
      r = s.get(url, headers=headers)
      soup = BeautifulSoup(r.text, 'html.parser')
      sizes = soup.findAll(True,{'class':'product__sizes-size-1'})

I want to turn sizes into a string object instead of a tag so i can complete

parsed_sizes = [item for item in sizes if 1 <= item <= 20]

which requires a string to compare
Right now priting sizes outputs:

[<span class="product__sizes-size-1">6</span>, <span class="product__sizes-size-1">6.5</span>, <span class="product__sizes-size-1">7</span>, <span class="product__sizes-size-1">7.5</span>, <span class="product__sizes-size-1">8</span>, <span class="product__sizes-size-1">8.5</span>, <span class="product__sizes-size-1">9</span>, <span class="product__sizes-size-1"></span>, <span class="product__sizes-size-1"></span>, <span class="product__sizes-size-1"></span>, <span class="product__sizes-size-1"></span>, <span class="product__sizes-size-1"></span>, <span class="product__sizes-size-1"></span>, <span class="product__sizes-size-1"></span>]

If I do type() i get <class'bs4.element.ResultSet'>

Comments

Comment posted by Mureinik

Help us help you – share what you get for

By