【问题标题】:'IOError: [Errno 2] No such file or directory' on website -- Python'IOError: [Errno 2] No such file or directory' on website -- Python
【发布时间】:2016-03-26 19:16:21
【问题描述】:

我正在用 Python 进行一些网页抓取,但遇到了一个奇怪的错误。有时,当我尝试使用 URL 打开和读取 html 文件时,会出现以下错误:

'IOError: [Errno 2] No such file or directory'

产生此错误的代码在这里:终端不喜欢此代码块中的最后一行。

for game in games:
            url = game
            page = urllib.urlopen(url).read()

games 列表是肯定存在的 url 列表。这是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,这样它就没有完整的URL,而是只有一部分。

例如,旧的games 中的第一个元素是/games/20160323/ATLWAS/gameinfo.html。然后在上面显示的for循环中,我写了nba.com+url,而不是url = game。当我使用上述更改运行它时,它按预期运行。 任何帮助将不胜感激。

【问题讨论】:

  • 如果你去网站你可以看到你的url不一样
  • 我也不认为"nba.com"+/games/20160323/ATLWAS/gameinfo.html 曾经工作过

标签: python web-scraping


【解决方案1】:

Python 2

for game in games:
        url = "http://" + game
        page = urllib.urlopen(url).read()

(对于 Python 3,您必须包含 .request)

page = urllib.request.urlopen(url).read()

【讨论】:

  • 我认为您不需要将字符串转换为字符串。
  • 如果您访问games中的链接,浏览器会附加http://www。也许 OP 应该尝试同样的事情,而不仅仅是 http://
  • @Goyo 确实有效。然而,我们在这里谈论的是一个 python 模块,而不是一个合适的网络浏览器。也许 OP 也应该尝试一下。
  • @Alessiox,你不需要 www
  • @Ash-Ishh,不,除非他们使用 python3,否则它永远不会适用于任何 url
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-25
  • 1970-01-01
  • 1970-01-01
  • 2013-07-23
  • 2018-06-10
  • 2013-11-14
相关资源
最近更新 更多