我在Python中进行一些网络抓取,我遇到了一个奇怪的错误。有时当我尝试使用URL打开并读取html文件时,我收到以下错误:
'IOError: [Errno 2] No such file or directory'
产生此错误的代码在这里:终端不喜欢此代码块中的最后一行。
for game in games:
url = game
page = urllib.urlopen(url).read()
列表games
是一个肯定存在的网址列表。这是games
打印出来时的样子:
['nba.com/games/20160323/ATLWAS/gameinfo.html',
'nba.com/games/20160323/MILCLE/gameinfo.html',
'nba.com/games/20160323/TORBOS/gameinfo.html',
'nba.com/games/20160323/ORLDET/gameinfo.html',
'nba.com/games/20160323/NYKCHI/gameinfo.html',
'nba.com/games/20160323/UTAHOU/gameinfo.html',
'nba.com/games/20160323/SACMIN/gameinfo.html',
'nba.com/games/20160323/MIASAS/gameinfo.html',
'nba.com/games/20160323/PHIDEN/gameinfo.html',
'nba.com/games/20160323/LALPHX/gameinfo.html',
'nba.com/games/20160323/DALPOR/gameinfo.html',
'nba.com/games/20160323/LACGSW/gameinfo.html']
有谁知道我为什么会收到这个错误?我实际上曾经遇到过这个错误,虽然我在那个场合解决了它,但我不明白为什么我做了什么工作所以我想问社区。以前,我设置了games
,因此它不是拥有完整的网址,而是只有部分网址。
例如,旧games
中的第一个元素是/games/20160323/ATLWAS/gameinfo.html
。然后在上面显示的for循环中,我写了url = game
而不是nba.com+url
。当我使用上面描述的更改运行它时,它按预期运行。
任何帮助将不胜感激。
答案 0 :(得分:0)
Python 2 :
for game in games:
url = "http://" + game
page = urllib.urlopen(url).read()
(对于 Python 3 ,您必须包含.request)
page = urllib.request.urlopen(url).read()