从同一类bs4 beautifulSoup

时间:2020-10-27 00:58:20

标签: python beautifulsoup

我正在尝试从div不同但类名相同的网站上抓取数据。

<div class="release-date-text-wrapper" >
                        <div class='release-date-title'><a href="/pharrell-x-adidas-nmd-hu-sesame">Pharrell x adidas NMD Hu Sesame</a></div>
                        <div class='release-date-style'>Sesame/Sand-Bright Red</div>
                    </div>
                </div>
            </div>
                                <div class='col-xs-6 col-sm-3 col-md-3 release-date-item-continer clear-padding'>
                <div class='release-date-item-wrapper'>
                    <div class="release-event-date-wrapper">
                        <div class="event-date ">
                            <div>
                                25&nbsp;Oct                            </div>
                            <div>2020</div>
                        </div>
                    </div>
                    <div class='release-date-image-wrapper'>
                                                <a href="/pharrell-x-adidas-nmd-hu-crystal-white" class='thumbnail'>
                                                        <img  src="https://4app.kicksonfire.com/kofapp/upload/events_master_images/thumb_ipad_pharrell-x-adidas-nmd-hu-crystal-white.jpg" alt="Pharrell x adidas NMD Hu Crystal White" class="img-responsive imagecache imagecache-kofapp_list"  width="250" height="200" />
                        </a>
                    </div>
                    <div class="release-date-text-wrapper" >
                        <div class='release-date-title'><a href="/pharrell-x-adidas-nmd-hu-crystal-white">Pharrell x adidas NMD Hu Crystal White</a></div>
                        <div class='release-date-style'>Crystal White/Clear Mint-Shock Yellow</div>

我正在尝试从应显示为以下内容的2个div中提取“ release-date-title”

Pharrell x adidas NMD Hu Sesame
Pharrell x adidas NMD Hu Crystal White

这是我使用的当前代码。

Name = soup.find('div',attrs={'class':'release-date-title'}).text

这给我第一个没有问题,我遇到的麻烦是得到第二个。我尝试了.find_next(“ div”),但它显示了类'release-date-style'。

编辑: 我需要能够逐个选择它们,稍后再将它们添加到不和谐的嵌入中,为每个标题添加颜色和日期。

2 个答案:

答案 0 :(得分:1)

代替使用汤.find返回单个项目,而使用汤.findAll返回所有匹配结果的列表。这样,您可以遍历结果以获取所需的内容。

Names = soup.findAll('div',attrs={'class':'release-date-title'})
for name in Names:
    print(name.text)

打印:

Pharrell x adidas NMD Hu Sesame
Pharrell x adidas NMD Hu Crystal White

根据下面的评论,您将如何打印结果4:

Names = soup.findAll('div',attrs={'class':'release-date-title'})
print(Names[3].text) #Change this index to get the result you want, right now it is 3 since you wanted result #4

答案 1 :(得分:0)

如果html_doc是问题的HTML代码段,则此脚本:

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

for t in soup.select('.release-date-text-wrapper > div:nth-child(1)'):
    print(t.text)

打印:

Pharrell x adidas NMD Hu Sesame
Pharrell x adidas NMD Hu Crystal White

CSS选择器.release-date-text-wrapper > div:nth-child(1)将选择元素<div>正下方的第一个class="release-date-text-wrapper"子对象


或者:

for t in soup.select('.release-date-title > a'):
    print(t.text)

或者:

for t in soup.select('.release-date-title'):
    print(t.text)