Разобрать сложный блок html с помощью BeautifulSoup

avatar
Jshee
8 августа 2021 в 23:48
84
1
0

Я перепробовал множество вариантов с BeautifulSoup, но не могу понять, как разобрать следующее:

<div class="docSection profileQuestionsSection">
    <div id="D_memberProfileQuestions" class="dotted-section">
        <div id="D_memberProfileMeta" class="line">
            <div class="unit size1of3">
                <div class="D_memberProfileContentItem">
                    <h4 class="flush--bottom">Location:</h4>
                    <p itemprop="address" itemscope="" itemtype="http://schema.org/PostalAddress">
                        
                            <a href="https://www.website.com/cities/us/97298/"><span class="locality" itemprop="addressLocality">website</span>  <span class="region" itemprop="addressRegion">WA</span></a><span class="display-none country-name" itemprop="addressCountry">USA</span>
                        
                        
                    </p>
                </div>
            </div>
            <div class="unit size1of3">
                                    <div class="D_memberProfileContentItem">
                                        <h4 class="flush--bottom">Member since:</h4>
                                        <p>July 14, 2021</p>
                                    </div>
            </div>
            <div class="size1of3 lastUnit">
                <div class="D_memberProfileContentItem">
                </div>
            </div>
        </div>
        <div class="line">
        </div>
                <div class="D_memberProfileContentItem">
                <h4 class="flush--bottom">What types of events in the area interest you?</h4>
                                <p class="D_empty">No answer yet</p>
                </div>
            <div class="D_memberProfileContentItem">
                <h4 class="flush--bottom">Introduction</h4>
                                <p class="D_empty">No introduction yet</p>
            </div>
    </div>
</div>

Из приведенного выше фрагмента я пытаюсь разобрать следующий выделенный жирным шрифтом text из <p>: Какие виды событий в области вас интересуют? Пока нет ответа

Если я попытаюсь сделать следующее, просто напечатаются пустые списки [] что я могу сделать неправильно?

req=requests.get(member)

soupp=BeautifulSoup(req.text, "html.parser")

div=soupp.find('div',attrs={"class":"D_memberProfileContentItem"})
children=div.findChildren("div", recursive=True)
for child in children:
    print(child)

Есть мысли? Спасибо.

Источник
MendelG
9 августа 2021 в 00:02
0

Какой URL?

Jack Fleeting
9 августа 2021 в 00:34
0

В вашем вопросе не указан критерий выбора вашего выхода: это ответ на вопрос о событиях в районе? Это позиция в соответствующем div? Что-то другое?

Ответы (1)

avatar
αԋɱҽԃ αмєяιcαη
9 августа 2021 в 00:23
2
from bs4 import BeautifulSoup

html = '''<div class="docSection profileQuestionsSection">
    <div id="D_memberProfileQuestions" class="dotted-section">
        <div id="D_memberProfileMeta" class="line">
            <div class="unit size1of3">
                <div class="D_memberProfileContentItem">
                    <h4 class="flush--bottom">Location:</h4>
                    <p itemprop="address" itemscope="" itemtype="http://schema.org/PostalAddress">

                        <a href="https://www.website.com/cities/us/97298/"><span class="locality"
                                itemprop="addressLocality">website</span>  <span class="region"
                                itemprop="addressRegion">WA</span></a><span class="display-none country-name"
                            itemprop="addressCountry">USA</span>


                    </p>
                </div>
            </div>
            <div class="unit size1of3">
                <div class="D_memberProfileContentItem">
                    <h4 class="flush--bottom">Member since:</h4>
                    <p>July 14, 2021</p>
                </div>
            </div>
            <div class="size1of3 lastUnit">
                <div class="D_memberProfileContentItem">
                </div>
            </div>
        </div>
        <div class="line">
        </div>
        <div class="D_memberProfileContentItem">
            <h4 class="flush--bottom">What types of events in the area interest you?</h4>
            <p class="D_empty">No answer yet</p>
        </div>
        <div class="D_memberProfileContentItem">
            <h4 class="flush--bottom">Introduction</h4>
            <p class="D_empty">No introduction yet</p>
        </div>
    </div>
</div>'''

soup = BeautifulSoup(html, 'lxml')
print(soup.select_one('.D_memberProfileContentItem:nth-child(3) > p').text)

Вывод:

No answer yet