Странная вещь с BeautifulSoup? - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь использовать BeautifulSoup для анализа веб-страницы, как показано ниже:

     <div id="block-info-advan" style="width: 760px;">
        <div class="content-0">
            <div class="left-col">
                <div class="number">
                    1</div>
                <div class="nq">
                    <p class="nqTitle" lawid="435943">
                        <a>...</a>
                    </p>
                </div>
            </div>
        </div>
        <div class="content-1">
            <div class="left-col">
                <div class="number">
                    2</div>
                <div class="nq">
                    <p class="nqTitle" lawid="435632">
                        <a <...</a>
                    </p>
                </div>
            </div>
        </div>
    </div>

Если я использую:

test = soup.select(".nqTitle")
result: 2

Но почему, если я использую:

test = soup.select("body .nqTitle")
result: 1

или

test = soup.select("body")
test2 = test[0].select(".nqTitle")
result: 1

Во втором коде я ожидаю результат как 2.

Может кто-нибудь объяснить мне?

Спасибо.

1 Ответ

0 голосов
/ 04 марта 2020

Я попробовал это двумя способами, но ничего из этого не произошло. Может быть, это из-за данных в другом месте вашего HTML.

html = '''
<body>
<div id="block-info-advan" style="width: 760px;">
        <div class="content-0">
            <div class="left-col">
                <div class="number">
                    1</div>
                <div class="nq">
                    <p class="nqTitle" lawid="435943">
                        <a>...</a>
                    </p>
                </div>
            </div>
        </div>
        <div class="content-1">
            <div class="left-col">
                <div class="number">
                    2</div>
                <div class="nq">
                    <p class="nqTitle" lawid="435632">
                        <a>...</a>
                    </p>
                </div>
            </div>
        </div>
</div></body>
'''

BeautifulSoup:

from bs4 import BeautifulSoup
soup = BeautifulSoup(html,'lxml')
test = soup.select(".nqTitle")
print (test)
test = soup.select("body .nqTitle")
print (test)
test = soup.select("body")
test = test[0].select(".nqTitle")
print (test)

Результат:

[<p class="nqTitle" lawid="435943">
<a>...</a>
</p>, <p class="nqTitle" lawid="435632">
<a>...</a>
</p>]
[<p class="nqTitle" lawid="435943">
<a>...</a>
</p>, <p class="nqTitle" lawid="435632">
<a>...</a>
</p>]

SimplifiedDo c:

doc = SimplifiedDoc(html)
test = doc.selects('p.nqTitle')
print (test)
test = doc.selects('body>p.nqTitle')
print (test)
test = doc.select('body').selects('p.nqTitle')
print (test)

Результат:

[{'class': 'nqTitle', 'lawid': '435943', 'tag': 'p', 'html': '\n                        <a>...</a>\n                    '}, {'class': 'nqTitle', 'lawid': '435632', 'tag': 'p', 'html': '\n                        <a>...</a>\n                    '}]
[{'class': 'nqTitle', 'lawid': '435943', 'tag': 'p', 'html': '\n                        <a>...</a>\n                    '}, {'class': 'nqTitle', 'lawid': '435632', 'tag': 'p', 'html': '\n                        <a>...</a>\n                    '}]
[{'class': 'nqTitle', 'lawid': '435943', 'tag': 'p', 'html': '\n                        <a>...</a>\n                    '}, {'class': 'nqTitle', 'lawid': '435632', 'tag': 'p', 'html': '\n                        <a>...</a>\n                    '}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...