【问题标题】:Error: AttributeError: 'NoneType' object has no attribute 'find'错误:AttributeError:“NoneType”对象没有属性“find”
【发布时间】:2021-01-13 12:32:20
【问题描述】:

我正在编写网页抓取代码,但出现上述错误。

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'

我是网络抓取的新手,我不明白为什么会显示此错误。

【问题讨论】:

  • 看起来前面的指令 - title = sp.find('div', {'class':'_2NFXP'}) - 失败了,所以在执行 title = title.find('h1',{'class':'_23498'}) 时,titleNone。顺便说一句,请同时发布错误消息/回溯 - 我在这里为你做了。

标签: python python-3.x web-scraping


【解决方案1】:

您应该尝试自己从错误中学习。 Python 错误还指定了错误的位置(行)。

无论如何,您的最后一行导致了问题。您基本上将sp.find() 函数应用于另一个sp.find() 函数。 当 sp.find('div',{'class':'_2NFXP'}) 返回 None 时,它证明了你得到的错误是正确的。

【讨论】:

  • 非常感谢!实际上,我真的很新,所以这就是我遇到问题的原因。
  • 很高兴能帮上忙。如果你下次想最大限度地提高学习效率,Python的错误指导对于初学者来说非常有帮助且易于理解。祝你好运!
  • 好的。我会提高自己。
猜你喜欢
  • 1970-01-01
  • 2021-12-22
  • 1970-01-01
  • 2019-02-04
  • 2016-05-06
  • 2019-03-07
  • 2022-01-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多