【问题标题】:error message: 'NoneType' object has no attribute 'split'错误消息:'NoneType' 对象没有属性 'split'
【发布时间】:2014-03-30 01:09:35
【问题描述】:

我正在尝试使用 BeautifulSoup 从 html 文档中提取位置信息和电影标题信息。

我从这样的行中提取信息:

<div class="filmo-row even" id="writer-tt1308667">

我想用“-”分隔“writer”和“tt1308667”

我的代码是:

i=0
b = soup.find_all('div')
for row in b:
    Position_ttcode=row.get('id')
    print Position_ttcode
    split=Position_ttcode.split('-')

我得到了错误:

AttributeError: 'NoneType' object has no attribute 'split' 

我错过了什么?请帮忙!

【问题讨论】:

  • 行真的有ID吗?
  • 另外,你能显示完整的堆栈跟踪吗?
  • 不确定如何显示完整的堆栈跟踪,但打印 Position_ttcode 给出如下内容:actor-tt2133326 actor-tt0121955 无 无 无 无 无 more-episodes-tt0121955-actor 无 actor-tt1308667 actor-tt0372588演员-tt0338479 演员-tt0263206 演员-tt0267939 演员-tt0158983 演员-tt0169299 演员-tt1626206 演员-tt0470926 演员-tt0205423 演员-tt0131857 演员-tt0124819
  • 当您收到 AttributeError 时,应该有一堆文本告诉您错误发生的确切位置以及当时正在进行的函数调用。这就是堆栈跟踪。
  • 回溯(最近一次调用最后):文件“/private/var/folders/00/yl1lkzc90kg05rgs3m4g2qtr0000gn/T/Cleanup At Startup/Parse_practice-417835156.088.py”,第 48 行,在 中=Position_ttcode.split('-') AttributeError: 'NoneType' object has no attribute 'split' logout

标签: python html parsing html-parsing beautifulsoup


【解决方案1】:

问题在于,并非页面上的所有div 元素都具有id 属性。

您应该通过向find_all() 提供类名或id 属性来缩小搜索范围:

for div in soup.find_all("div", {'class': 'filmo-row'}):
    print div.get('id')

或者,例如,您可以使用re 模块检查div 是否具有包含 writer- 文本的id 属性:

for div in soup.find_all("div", {'id': re.compile('writer-'}):
    print div.get('id')

希望对您有所帮助。

【讨论】:

  • 这真的很有帮助!非常感谢:D!
猜你喜欢
  • 2022-11-29
  • 2019-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-13
  • 2017-07-23
  • 1970-01-01
相关资源
最近更新 更多