python - 错误:AttributeError:“NoneType”对象没有属性“find”
问题描述
我正在编写网页抓取代码,但出现上述错误。
import requests
import lxml
import bs4
title = ''
date = ''
text = ''
top = []
link = []
web_link = 'https://timesofindia.indiatimes.com/{}/'
web_link = web_link.format('india')
req = requests.get(web_link)
soup = bs4.BeautifulSoup(req.text, 'lxml')
topi = soup.find('div', {'class':'main-content'})
topi = topi.find_all('span', {'class':'w_tle'})
for i in range(len(topi)):
top = topi[i].find('a').get('href')
link.append('https://timesofindia.indiatimes.com' + top)
for i in range(len(link)):
rq = requests.get(link[i])
sp = bs4.BeautifulSoup(rq.text, 'lxml')
title = sp.find('div', {'class':'_2NFXP'})
title = title.find('h1',{'class':'_23498'})
追溯:
Traceback (most recent call last):
File "C:\Users\xxx\xxx\py\so65702068.py", line 26, in <module>
title=title.find('h1',{'class':'_23498'})
AttributeError: 'NoneType' object has no attribute 'find'
我是网络抓取的新手,我不明白为什么会显示此错误。
解决方案
您应该尝试自己从错误中学习。Python 错误还指定错误的位置(行)。
无论如何,你的最后一行导致了问题。您基本上将sp.find()
功能应用于另一个sp.find()
功能。作为sp.find('div',{'class':'_2NFXP'})
返回None
,它证明了你得到的错误是正确的。
推荐阅读
- visual-studio - 如何为 Visual Studio 2022 与 Visual Studio 2019 使用不同的 KeyMap
- javascript - 如何在 Javascript 中的函数之间共享变量?
- unity3d - 在 Unity 上添加资产
- python - 如果从文件中读取,Python 在使用它创建连接字符串时将“”添加到字符串
- python - os.environ 最近才产生错误?
- python - 如果我只是对字符串的每个字符执行恒定时间操作,空间复杂度是否是线性的?还要反转字符串?
- api - 如何在发布请求颤动中设置多项
- python - 有没有其他方法可以发布数据?
- linq - Linq with join - 获取单个结果
- python - 我在尝试抓取 tiktok api 时不断出错