在python 2.7中排除其属性的元素

问题描述 投票:1回答:2

我想从列表'all_size'中使用'disabled'属性排除元素'input'。

html:

<div class="container">
<input id="skuAndSize__22356651:7" disabled="" />
<input id="skuAndSize__22356650:7.5" />
</div>

我目前的python代码:

soup = bs(response.text,"html.parser")
div = soup.find("div",{"class":"container"})
all_sizes = div.find_all("input")

size_in_stock = []
for size in all_sizes:
        size_id = size["id"]
        size_in_stock.append(size_id.split("__")[1])

谢谢你的每一个答案

python beautifulsoup
2个回答
1
投票

您只需添加一个条件:

size_in_stock = []
for size in all_sizes:
    size_id = size["id"]
    if 'disabled' not in size.attrs:
        size_in_stock.append(size_id.split("__")[1])

作为列表理解的整个事情:

size_in_stock = [size["id"].split("__")[1] for size in all_sizes
                 if 'disabled' not in size.attrs]

0
投票

Deep Space击败了我,所以接受他的回答。但作为替代方案,相反,我检查了"disabled" IS存在,如果是,跳过并继续下一个项目:

from bs4 import BeautifulSoup as bs

html = '''<div class="container">
<input id="skuAndSize__22356651:7" disabled="" />
<input id="skuAndSize__22356650:7.5" />
</div>'''


soup = bs(html,"html.parser")
div = soup.find("div",{"class":"container"})
all_sizes = div.find_all("input")

size_in_stock = []
for size in all_sizes:
        size_id = size["id"]
        if 'disabled' in size.attrs:
            continue
        size_in_stock.append(size_id.split("__")[1])
© www.soinside.com 2019 - 2024. All rights reserved.