我想获取位于div中的标签内的多个id的值

时间:2019-10-19 20:00:04

标签: python html parsing beautifulsoup

这是HTML代码:

<div class="sizeBlock">
 <div class="size"> 
    <a class="selectSize" id="44526" data-size-original="36.5">36.5</a> 
 </div> 
 <div class="size inactive active"> 
    <a class="selectSize" id="44524" data-size-original="40">40</a> 
 </div> 
 <div class="size "> 
    <a class="selectSize" id="44525" data-size-original="40.5">40.5</a> 
 </div> 
</div>

我想获取id标签和原始数据大小的值。

这是我的代码:

for sizeBlock in soup.find_all('a', class_="selectSize"):
        aid  = sizeBlock.get('id')
        size = sizeBlock.get('data-size-us')

问题在于,它获取具有相同类“ selectSize”的其他ID的值。

2 个答案:

答案 0 :(得分:1)

我想这就是你想要的。 div class ='size inactive active'

中的数据将不包含ID和大小
for sizeBlock in soup.select('div.size a.selectSize'):
    aid = sizeBlock.get('id')
    size = sizeBlock.get('data-size-us')

答案 1 :(得分:0)

已经在这里How to Beautiful Soup (bs4) match just one, and only one, css class

回答了

使用soup.select。这是一个简单的测试:

from bs4 import BeautifulSoup

html_doc = """<div class="size">
<a class="selectSize otherclass" id="44526" data-ean="0193394075362" " data-tprice="" data-sku="1171177-36.5" data-size-original="36.5">5</a>
</div>"""

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

#for sizeBlock in soup.find_all('a', class_= "selectSize"): # this would include the anchor
for sizeBlock in soup.select("a[class='selectSize']"):
    aid = sizeBlock.get('id')
    size = sizeBlock.get('data-size-original')
    print aid, size