如何在Beautiful Soup中选择列表中每个元素的第一个孩子

时间:2018-08-27 13:37:18

标签: python html beautifulsoup

我想从每个外部div的第一个内部div获取文本

<body>
    <div class="outer">
        <div class="inner">text1</div> 
        <div class="inner">text2</div>
        <div class="inner">text3</div>
    </div>
    <div class="outer">
        <div class="inner">text4</div>
    </div>
    <div class="outer">
        <div class="inner">text5</div>
        <div class="inner">text6</div>
    </div>
</body>

这意味着检索text1,text4,text5

我已经尝试了下面显示的代码,但是无法正常工作

outers = soup.select('body > .outer')
for outer in outers:
    inners = outer.select_one('.inner')
    for inner in inners:
        print(inner.text)

非常感谢

2 个答案:

答案 0 :(得分:1)

也许可行,

compile 'com.android.support:multidex:1.0.3'

或 您可以使用这种方式,

soup = BeautifulSoup(text, 'html.parser')
for outer in soup.find_all('div', class_='outer'):
    inners = outer.find('div', class_='inner')
    for inner in inners:
        print(inner)


# Output as:
#           text1
#           text4
#           text5

答案 1 :(得分:1)

欢迎使用StackOverflow!

此代码对我有用:

[div.find("div", {"class": "inner"}) for div in soup.findAll("div", {"class": "outer"})]

也就是说,同一件事的单行版本。