Невозможно извлечь некоторый адрес из некоторых элементов HTML - PullRequest
0 голосов
/ 01 февраля 2019

Я написал скрипт на python, чтобы очистить адрес от фрагмента HTML-элементов.Адрес находится в пределах пары br тегов.Однако, когда я запускаю свой скрипт, я получаю [<br/>, <br/>, <br/>, <br/>] в качестве вывода.

Как получить полный адрес?

HTML-элементы, с которых я пытаюсь получить адрес:

<div class="ACA_TabRow ACA_FLeft">
 Mailing
 <br/>
 1961 MAIN ST #186
 <br/>
 WATSONVILLE, CA, 95076
 <br/>
 United States
 <br/>
</div>

Я пробовал до сих пор:

from bs4 import BeautifulSoup
import re

html = """
<div class="ACA_TabRow ACA_FLeft">
 Mailing
 <br/>
 1961 MAIN ST #186
 <br/>
 WATSONVILLE, CA, 95076
 <br/>
 United States
 <br/>
</div>
"""
soup = BeautifulSoup(html,"lxml")
items = soup.find(class_="ACA_TabRow").find(string=re.compile("Mailing")).find_next_siblings()
print(items)

Ответы [ 3 ]

0 голосов
/ 01 февраля 2019

Я буду проверять, начинается ли разделенная строка внутри div с Mailing

soup = BeautifulSoup(html,"lxml")
items = soup.find(class_="ACA_TabRow")

for i,item in enumerate(items.stripped_strings):
    if i==0 and not item.startswith('Mailing'):
        break
    if i!=0:
        print(item)

Вывод

1961 MAIN ST #186
WATSONVILLE, CA, 95076
United States
0 голосов
/ 02 февраля 2019

Кажется, я нашел лучшее решение:

from bs4 import BeautifulSoup
import re

html = """
<div class="ACA_TabRow ACA_FLeft">
 Mailing
 <br/>
 1961 MAIN ST #186
 <br/>
 WATSONVILLE, CA, 95076
 <br/>
 United States
 <br/>
</div>
"""
soup = BeautifulSoup(html,"lxml")
items = soup.find(class_="ACA_TabRow").find(string=re.compile("Mailing")).find_parent()
find_text = ' '.join([item.strip() for item in items.strings])
print(find_text)

Вывод:

Mailing 1961 MAIN ST #186 WATSONVILLE, CA, 95076 United States
0 голосов
/ 01 февраля 2019
from bs4 import BeautifulSoup
import re

html = """
<div class="ACA_TabRow ACA_FLeft">
 Mailing
 <br/>
 1961 MAIN ST #186
 <br/>
 WATSONVILLE, CA, 95076
 <br/>
 United States
 <br/>
</div>
"""
soup = BeautifulSoup(html,"lxml")
items = soup.find(class_="ACA_TabRow")

items_list = items.text.split('\n')

results = [ x.strip() for x in items_list if x.strip() != '' ]

Выход:

print (results)
['Mailing', '1961 MAIN ST #186', 'WATSONVILLE, CA, 95076', 'United States']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...