Ваш результат zip_codes
имеет тип bs4.element.ResultSet
, который представляет собой набор bs4.element.Tag
. Так что zip_codes[0]
- это то, что вас интересует (первый найденный тег). Используйте метод .text
для удаления тегов <hr>
. Теперь у вас есть длинная строка почтовых индексов, разделенных пробелами. Каким-то образом вычеркните их из списка (два варианта ниже, первый вариант более питонический и более быстрый).
from bs4 import BeautifulSoup as soup
from requests import get
url = 'https://worldpostalcode.com/portugal/lisboa/'
response = get(url)
html_soup = soup(response.text,'lxml')
zip_codes = html_soup.find_all('div', {'class' : 'rightc'})
# option one
zips = zip_codes[0].text.split(' ')
print(zips[:8])
# option two (slower)
zips = []
for zc in zip_codes[0].childGenerator():
zips.append(zc.extract().strip())
print(zips[:8])
Выход:
['1000-246', '1050-138', '1069-188', '1070-204', '1100-069', '1100-329', '1100-591', '1150-144']
['1000-246', '1050-138', '1069-188', '1070-204', '1100-069', '1100-329', '1100-591', '1150-144']