如何将抓取的 html 列表变成浮点数
How to turn scraped html list into a float
我正在抓取数据并通过 soup 对其进行解析,然后尝试进行浮动比较
这是我的代码:
with requests.Session() as s:
r = s.get(url[pid], headers=headers)
soup = BeautifulSoup(r.text, 'html.parser')
sizes = soup.findAll(True,{'class':'product__sizes-size-1'})
uksizes = [f"UK {allsize.text}" for allsize in sizes]
parsed_sizes = [item for item in sizes if float(sizes) >=1 and float(sizes) <=20]
这是我的 html:
[<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>]
我试过使用 str(sizes) 将它们变成浮点数,但还是没用。
好吧,您的一个衬里有误,您应该将其与新创建的“item”变量而不是整个列表进行比较。
这是一个例子
sizes = [6, 5, 10, 30]
parsed_sizes = [item for item in sizes if 1 <= item <= 20]
print(parsed_sizes)
输出:
[6, 5, 10]
我正在抓取数据并通过 soup 对其进行解析,然后尝试进行浮动比较
这是我的代码:
with requests.Session() as s:
r = s.get(url[pid], headers=headers)
soup = BeautifulSoup(r.text, 'html.parser')
sizes = soup.findAll(True,{'class':'product__sizes-size-1'})
uksizes = [f"UK {allsize.text}" for allsize in sizes]
parsed_sizes = [item for item in sizes if float(sizes) >=1 and float(sizes) <=20]
这是我的 html:
[<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>]
我试过使用 str(sizes) 将它们变成浮点数,但还是没用。
好吧,您的一个衬里有误,您应该将其与新创建的“item”变量而不是整个列表进行比较。
这是一个例子
sizes = [6, 5, 10, 30]
parsed_sizes = [item for item in sizes if 1 <= item <= 20]
print(parsed_sizes)
输出:
[6, 5, 10]