为什么我的Python代码中会出现“无”?

为什么我的Python代码中会出现“无”?,python,loops,for-loop,Python,Loops,For Loop,我试着在六个维基百科页面上循环,以获得链接的每首歌曲的列表。当我在终端中运行它时,它会给我这个错误: Traceback (most recent call last): File "scrapeproject.py", line 31, in <module> print (getTableLinks(my_url)) File "scrapeproject.py", line 20, in getTableLinks html = urlopen(my_u

我试着在六个维基百科页面上循环,以获得链接的每首歌曲的列表。当我在终端中运行它时,它会给我这个错误:

Traceback (most recent call last):
  File "scrapeproject.py", line 31, in <module>
    print (getTableLinks(my_url))
  File "scrapeproject.py", line 20, in getTableLinks
    html = urlopen(my_url)
  File "/Users/adriana/Software/Python-3.5.1/mybuild/lib/python3.5/urllib/request.py", line 162, in urlopen
    return opener.open(url, data, timeout)
  File "/Users/adriana/Software/Python-3.5.1/mybuild/lib/python3.5/urllib/request.py", line 456, in open
    req.timeout = timeout
AttributeError: 'NoneType' object has no attribute 'timeout'

您没有从createUrl返回任何内容,因此不会返回任何内容


如果您想创建一批包含六个URL的URL,然后对其进行数据解析/使用。。我建议将它们附加到一个列表中,或者将每个url映射到函数,以便按程序进行解析,然后执行此操作,或者返回列表并遍历它进行解析。

问题不在您突出显示的区域。问题在于构建完整URL的循环中。完全摆脱它,因为您不需要函数来构造链接

然后在函数定义下面,尝试:

for n in range(2008,2015):
    print(getTableLinks(main + str(n)))
改变年份以适应你的需要

老实说,为了将来的使用,更好的方法是使用错误处理。这将允许您运行该函数,直到没有年份抛出异常,循环将退出。这样你就不必检查有多少年了,你所要做的就是调整起始年。要正确地执行此操作,您需要查找错误处理,并特别处理通过尝试无效年份返回的错误,并使用下面的代码示例执行类似于除AttributeError:之外的操作或任何错误

for n in range(2008,2015):
    try:
        print(getTableLinks(main + str(n)))
    except:
        break

所以,如果我从print fullUrl改为return fullUrl,它会给我:2010/wiki/Tik\Tok/wiki/Need\u You\u Now\u Lady\u Antebellum\u song/wiki/Hey,\u Soul\u Sister/wiki/California\u Gurls/wiki/教我如何做Dougie/wiki/试着与心碎的人睡觉/wiki/爱人没有这正是我想要的,但我希望它做到这一点直到2015年,而不是仅仅停留在那里。我认为“无”意味着它由于某种原因无法进入2011年?非常感谢!我仍然得到一个奇怪的无,但它最终通过我的代码循环,并获得所有我需要的链接。好。请随意投票。我很乐意。。。但我是个新手,我没有特权lol@Chris作为记录,随意投票是一件粗鲁的事。以适当的谨慎和谦逊要求接受可能更为恰当。但首先你应该等待OP自己选择。只有当你怀疑他们缺乏像你这样的网站运作知识时,你才应该试着指导他们如何接受和更新投票;语气应该是肯定的,你应该至少等一天!在为这些事纠缠OP之前。就这些,我现在让你一个人呆着,只是想弄清楚我的意思。
for n in range(2008,2015):
    try:
        print(getTableLinks(main + str(n)))
    except:
        break