Как выбрать первого потомка каждого элемента в списке в Beautiful Soup - PullRequest
0 голосов
/ 27 августа 2018

Я хочу получить текст из первого внутреннего 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>

Это означает получение текста1, текста4, текста5

Я экспериментировал с кодом, показанным ниже:

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

Но не могу заставить его работать

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Добро пожаловать в StackOverflow!

Этот код работал для меня:

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

То есть однострочная версия одного и того же.

0 голосов
/ 27 августа 2018

Может быть, это работает,

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

OR Вы можете использовать этот способ,

soup = BeautifulSoup(text, 'html.parser')
for outer in soup.find_all('div', class_='outer'):
    inners = outer.find('div', class_='inner')
    print(inners.get_text())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...