Выскабливание для id = "author" с использованием Beautiful Soup - PullRequest
0 голосов
/ 25 мая 2018

Я изучаю, как использовать Python для просмотра веб-страниц, и получил следующий HTML-файл:

<html><head><title>The Website Title</title></head>
<body>
<p>Download my <strong>Python</strong> book from <a href="http://inventwithpython.com">my website</a>.</p>
<p class="slogan">Learn Python the easy way!</p>
<p>By <span id="author">Al Sweigart</span></p>
</body></html>

Я открыл файл и прочитал его в переменной exampleSoup.Затем я хотел очистить его для автора, и мне сказали использовать

elems = exampleSoup.select('#author')

Это, однако, вернул пустой список.Затем я попытался

elems = exampleSoup.select('span#author')

и получил желаемый результат.

Мой вопрос: почему первый метод не работал в этом случае?

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Я думаю, что версия python вызывает эту проблему

Я использую: Python 3.6.2 и bs 4.6.0

и вот мой подход

from bs4 import  BeautifulSoup

content = '<html><head><title>The Website Title</title></head><body><p>Download my <strong>Python</strong> book from <a href="http://inventwithpython.com">my website</a>.</p><p class="slogan">Learn Python the easy way!</p><p>By <span id="author">Al Sweigart</span></p></body></html>'
soup = BeautifulSoup(content, 'html.parser')

result1 = soup.select("[id='author']")
print (result1) # output [<span id="author">Al Sweigart</span>]

result2 = soup.select('#author')
print (result2) # output [<span id="author">Al Sweigart</span>]

result3 = soup.select('span#author')
print (result3) # output [<span id="author">Al Sweigart</span>]

result4 = soup.span # this how the decumentation did it 
print (result4) # output <span id="author">Al Sweigart</span>
0 голосов
/ 25 мая 2018
    from bs4 import BeautifulSoup
    htmlFile = """<html>
    <head>
    <title>The Website Title</title>
    </head>
    <body>
<p>Download my <strong>Python</strong> book from <a href="http://inventwithpython.com">my website</a>.</p>
<p class="slogan">Learn Python the easy way!</p>
<p>By <span id="author">Al Sweigart</span></p>
</body>
</html>"""

    soup=BeautifulSoup(htmlFile, 'html.parser')
    print(soup.select("#author"))

Я получил вывод в соответствии с желанием: [<span id="author">Al Sweigart</span>] возможно, вы используете более старую версию модуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...