Python - AttributeError: 'NoneType' object has no attribute 'get_text'

左心房为你撑大大i 提交于 2019-12-10 11:55:14

问题


I am following some tutorial for bs4. I am trying to get_text() for below example with 'a'. Tutorial return result McDermott International and MDR without problem. But when I do I got AttributeError: 'NoneType' object has no attribute 'get_text'. Please help. Many thanks!

with open('Energy.htm') as f:
    soup = BeautifulSoup(f,"lxml")
energylist = soup.find_all('td', {"style" : "text-align:left;"})
for stock in energylist:
    try:
        stock_name = stock.find('a').get_text()
    except:
        stock_name = ''

#sample of the energylist
[<td style="text-align:left;">
<a href="/finance?q=NYSE:MDR&amp;ei=nblKWaDrOs7AmgH0l7S4Bg">McDermott 
International</a>
</td>, <td style="text-align:left;">
<a href="/finance?q=NYSE:MDR&amp;ei=nblKWaDrOs7AmgH0l7S4Bg">MDR</a>
</td>, <td style="text-align:left;">
<a href="/finance?q=NYSE:EQT&amp;ei=nblKWaDrOs7AmgH0l7S4Bg">EQT</a>
</td>, <td colspan="8" style="text-align:left;">
Companies <b>1 - 20</b> of about <b>476</b> in <b>Energy</b> 
</td>]

回答1:


It would seem energylist has some tags that do not contain the anchor tag within them. You'll need to add a condition to handle those gracefully:

for stock in energylist:
    try:
        stock_name = stock.find('a').get_text()
        ... # more code
    except AttributeError:
        pass


来源:https://stackoverflow.com/questions/45255709/python-attributeerror-nonetype-object-has-no-attribute-get-text

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!