Python报错AttributeError: 'int'对象无'find'属性,请求技术帮助
问题排查:AttributeError: 'int' object has no attribute 'find'
接触Python仅1小时,修改代码时将遍历soup查询结果的循环改为遍历range(1,52)的整数后,出现错误:AttributeError: 'int' object has no attribute 'find'。以下是可运行与不可运行代码的对比,请求排查问题:
可运行代码
contents = soup.find('table').find_all('a') for i in contents: print("---------------------------") link = i.find("td", class_= "cafecoffee").find_all("a")[0] print("link :") print("naver.com" + link) title = i.find("td") print("title:",title.text)
不可运行代码
contents = soup.find('table').find_all('a') for i in range(1,52): # <<<<changed print("---------------------------") link = i.find("td", class_= "cafecoffee").find_all("a")[0] print("link :") print("naver.com" + link) title = i.find("td") print("title:",title.text)
问题原因&解决方法
- 错误根源:原来的
for i in contents中,i是BeautifulSoup解析后得到的Tag对象,自带find等解析方法;改成range(1,52)遍历后,i变成了1到51的整数,整数没有find方法,自然报错。 - 若要遍历前51个查询结果:直接用
for i in contents[:51]:(前提是contents的长度≥51) - 若非要用索引遍历:需要通过索引从
contents里取对应的Tag对象,代码修改如下:
contents = soup.find('table').find_all('a') for idx in range(1,52): i = contents[idx-1] # 列表索引从0开始,所以要减1 print("---------------------------") link = i.find("td", class_= "cafecoffee").find_all("a")[0] print("link :") print("naver.com" + link) title = i.find("td") print("title:",title.text)
内容的提问来源于stack exchange,提问作者임민서
相关产品推荐
相关产品推荐

