【问题标题】:Python - AttributeError: 'NoneType' object has no attribute 'get_text'Python - AttributeError:“NoneType”对象没有属性“get_text”
【发布时间】:2017-12-28 13:42:04
【问题描述】:

我正在关注 bs4 的一些教程。我正在尝试使用“a”获取以下示例的 get_text()。教程返回结果 McDermott International 和 MDR 没有问题。但是当我这样做时,我得到了 AttributeError:'NoneType' 对象没有属性 'get_text'。请帮忙。非常感谢!

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>]

【问题讨论】:

  • 表示没有找到a标签。你能说明你是如何将源代码处理成energylist的吗?
  • 谢谢 Willem,我在这个项目中使用了 Google 财经。示例页面是这样的:google.com/finance?catid=TRBC%3A50&ei=erHdV6HdFcKgeJXHlrgO 在我用漂亮的汤解析之后。我试图将我的数据缩小到市场的顶部。我编辑了原始帖子中的代码以包括如何获取能量列表。再次感谢您

标签: python html css bs4


【解决方案1】:

看起来energylist 有一些标签中不包含锚标签。你需要添加一个条件来优雅地处理这些:

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

【讨论】:

  • 我尝试了 get_text,但返回空白。错误已经消失,但我仍然从那里提取股票名称。似乎问题是用
  • @David 抱歉,我不明白问题出在哪里。你在打印你的数据吗?
猜你喜欢
  • 1970-01-01
  • 2015-04-07
  • 1970-01-01
  • 2020-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多