Предупреждение: это всего лишь моя вторая попытка ввода кода Python, поэтому я могу делать ошибки, которые могут вызвать проблемы у профессионала:
Я хотел бы получить список городов, используя addressLocality из набора результатов в soup_r:
import requests
from bs4 import BeautifulSoup
URL = 'https://www.tjhughes.co.uk/map'
page = requests.get(URL, verify=False)
soup_r = BeautifulSoup(page.text, 'html.parser')
это тип результата, который я хотел бы получить, указав только название города (в данном случае = Брэдфорд)
single_span = soup_r.find('span',itemprop = 'addressLocality').get_text()
Я хотел бы иметь возможность возвращать полный список результатов в том же формате, что и single_span (ie, изолируя название города), но следующий код выдает ошибку «AttributeError: ResultSet объект не имеет атрибута get_text»
spans_fail = soup_r.find_all('span',itemprop = 'addressLocality').get_text()
Самое близкое, что я могу получить, это сбросить get_text ():
spans = soup_r.find_all('span',itemprop = 'addressLocality')
..., таким образом, возвращая результаты в одном пакете:
[<span itemprop="addressLocality">Bradford</span>, <span itemprop="addressLocality">Birkenhead</span>, <span itemprop="addressLocality">Bootle</span>, <span itemprop="addressLocality">Bury</span>,
...
<span itemprop="addressLocality">Sheffield</span>, <span itemprop="addressLocality">St Helens</span>, <span itemprop="addressLocality">Widnes</span>]
Предполагая, что это лучшее, что я могу сделать, я все еще завязываю узлы, когда пытаюсь перестроить результаты.
Например, это просто возвращает Брэдфорд 52 раза, что сбивает меня с толку, потому что в 26 городах оригинальный список, так что я не знаю, как я удваиваюсь, не говоря уже о том, как получить доступ к другим 25:
cities = []
for check in soup:
check = soup.find('span',itemprop = 'addressLocality').text
cities.append(check)
Я искал элегантно простое решение, и я ценю, что мне может понадобиться обходной путь, но я не вижу как еще подойти к этому, и поэтому любой вклад приветствуется.