Разбор HTML-сниппрет в Python с BeautilfulSoup - PullRequest
0 голосов
/ 28 ноября 2018

Мне нужно проанализировать эту строку HTML, используя BeautifulSoup.Строка:

<address><span rel="v:address"><span dir="ltr"><span class="street-address" property="v:street-address">5015 Campbell Blvd</span>, <span class="locality"><span property="v:locality">Baltimore</span>, <span property="v:region">MD</span> <span property="v:postal-code">21236</span></span> </span></span></address>

Я на самом деле хочу получить значение Baltimore внутри тега <span property="v:locality">.

Но каким-то образом, когда я запускаю следующий код, я могу достичь только до <span class="street-address" property="v:street-address">.Как можно получить значение тега <span property="v:locality">

Ниже приведен мой код.

from bs4 import BeautifulSoup
str = <address><span rel="v:address"><span dir="ltr"><span class="street-address" property="v:street-address">5015 Campbell Blvd</span>, <span class="locality"><span property="v:locality">Baltimore</span>, <span property="v:region">MD</span> <span property="v:postal-code">21236</span></span> </span></span></address>
soup = BeautifulSoup(str)
print(soup.address.span.span.find_all('property'))

вывод

[]

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018
>>> from bs4 import BeautifulSoup
>>> html = '''<address><span rel="v:address"><span dir="ltr"><span class="street-address" property="v:street-address">5015 Campbell Blvd</span>, <span class="locality"><span property="v:locality">Baltimore</span>, <span property="v:region">MD</span> <span property="v:postal-code">21236</span></span> </span></span></address>'''
>>> soup = BeautifulSoup(html, "lxml")
>>> target = soup.find_all('span', attrs={'property': 'v:locality'})
>>> for value in target:
        print(value.text)

Baltimore
0 голосов
/ 28 ноября 2018
from bs4 import BeautifulSoup

str_html = '''<address><span rel="v:address"><span dir="ltr"><span class="street-address" property="v:street-address">5015 Campbell Blvd</span>, <span class="locality"><span property="v:locality">Baltimore</span>, <span property="v:region">MD</span> <span property="v:postal-code">21236</span></span> </span></span></address>'''

soup = BeautifulSoup(str_html, 'html.parser')
print (soup.findAll('span', {'property':'v:locality'})[0].text)
...