近日碰到此问题,其实是很弱智的问题,但此知识点,为大家总结,也为自己加深记忆。
没错总结下来就是string返回的是字符串,strings返回的是生成器,stripped_strings返回的也是个生成器
// An highlighted block
from bs4 import BeautifulSoup as bs
url="""
<div class="contents" data-type="district">
<a class="active">不限</a>
<a>浦东新区</a>
<a>徐汇区</a>
<a>闵行区</a>
<a>长宁区</a>
<a>杨浦区</a>
<a>静安区</a>
<a>黄浦区</a>
<a>普陀区</a>
<a>虹口区</a>
<a>嘉定区</a>
<a>宝山区</a>
<a>松江区</a>
<a>青浦区</a>
<a>闸北区</a>
<a>奉贤区</a>
<a>金山区</a>
<a>崇明县</a>
</div>
"""
btree=bs(url,"html.parser")
district = list(btree.find("div", class_="contents")).stripped_strings
for d in district[1:]:
print(d)
district = list(btree.find(“div”, class_=“contents”)).stripped_strings
AttributeError: ‘list’ object has no attribute ‘stripped_strings’
只需将此行换成
// An highlighted block
district = list(btree.find("div", class_="contents").stripped_strings)
即可
此时的district的返回值是
[‘不限’, ‘浦东新区’, ‘徐汇区’, ‘闵行区’, ‘长宁区’, ‘杨浦区’, ‘静安区’, ‘黄浦区’, ‘普陀区’, ‘虹口区’, ‘嘉定区’, ‘宝山区’, ‘松江区’, ‘青浦区’, ‘闸北区’, ‘奉贤区’, ‘金山区’, ‘崇明县’]
因为生成器可以for循环也可以list()处理