Python find#all on span标记在AttributeError中:ResultSet对象没有属性';获取文本';

Python find#all on span标记在AttributeError中:ResultSet对象没有属性';获取文本';,python,beautifulsoup,Python,Beautifulsoup,警告:这只是我第二次尝试Python代码,所以我可能会犯一些错误,这会给专业人士带来痛苦: 我想从soup\r中的一组结果中获得使用“addressLocality”的城市列表: import requests from bs4 import BeautifulSoup URL = 'https://www.tjhughes.co.uk/map' page = requests.get(URL, verify=False) soup_r = BeautifulSoup(page.text, 'h

警告:这只是我第二次尝试Python代码,所以我可能会犯一些错误,这会给专业人士带来痛苦:

我想从soup\r中的一组结果中获得使用“addressLocality”的城市列表:

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相同的格式返回结果的完整列表(即通过隔离城市名称),但以下代码给出了错误“AttributeError:ResultSet对象没有属性‘get_text’”

最接近的方法是删除get_text():

…从而在一个包中返回结果:

[<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>]

我一直在寻找一个非常简单的解决方案,我很感激我可能需要一个解决方案,但我看不出还有什么其他方法可以解决这个问题,因此任何输入都是值得赞赏的。

当你开始讨论单个元素的列表时,有时你必须进行字符串切分

spans = soup_r.find_all('span',itemprop = 'addressLocality')

# [<span itemprop="addressLocality">Bradford</span>, <span 

cities = []
for span in spans:
    left_angle=span.find('>'+1)
    sec_rangle=spane.find('<',1)
    city=span[left_angle:sec_rangle]
    print(city)
    cities.append(city)
print(cities)
span=soup\r.find\u all('span',itemprop='addressLocality')

#[Bradford,您可以使用列表理解获得您的城市列表

例如:

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')

cities = [span.get_text() for span in soup_r.select('span[itemprop="addressLocality"]')]
print(cities)
印刷品:

['Bradford', 'Birkenhead', 'Bootle', 'Bury', 'Chelmsford', 'Chesterfield', 'Glasgow', 'Cumbernauld', 'London', 'Coventry', 'Dundee', 'Durham', 'East Kilbride', 'Glasgow', 'Harlow', 'Hartlepool', 'Liverpool', 'Maidstone', 'Middlesbrough', 'Newcastle upon Tyne', 'Nuneaton', 'Oldham', 'Preston', 'Sheffield', 'St Helens', 'Widnes']

正如所希望的那样,这是一个非常简单的解决方案。我开始喜欢这种语言,通过这样的帮助和及时的回答,它变得非常容易。非常感谢。谢谢你的输入,但我不太确定你在演示什么。我试着纠正我认为有一些拼写错误,但我仍然会出错,所以我必须不要错过什么。当我有更多的时间去探索时,我会尝试给出更多建设性的反馈。总是分享整个错误信息。
cities = []
for check in soup:
    check = soup.find('span',itemprop = 'addressLocality').text
    cities.append(check)
spans = soup_r.find_all('span',itemprop = 'addressLocality')

# [<span itemprop="addressLocality">Bradford</span>, <span 

cities = []
for span in spans:
    left_angle=span.find('>'+1)
    sec_rangle=spane.find('<',1)
    city=span[left_angle:sec_rangle]
    print(city)
    cities.append(city)
print(cities)
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')

cities = [span.get_text() for span in soup_r.select('span[itemprop="addressLocality"]')]
print(cities)
['Bradford', 'Birkenhead', 'Bootle', 'Bury', 'Chelmsford', 'Chesterfield', 'Glasgow', 'Cumbernauld', 'London', 'Coventry', 'Dundee', 'Durham', 'East Kilbride', 'Glasgow', 'Harlow', 'Hartlepool', 'Liverpool', 'Maidstone', 'Middlesbrough', 'Newcastle upon Tyne', 'Nuneaton', 'Oldham', 'Preston', 'Sheffield', 'St Helens', 'Widnes']