我正在开展国际象棋相关项目,我必须从ChessTempo下载大量文件。
运行以下代码时:
import urllib.request
url = "http://chesstempo.com/requests/download_game_pgn.php?gameids="
for i in range (3,500):
urllib.request.urlretrieve(url + str(i),'Games/Game ' + str(i) + ".pgn")
print("Downloaded file nº " + str(i))
我得到了500~文件的预期列表,但它们都是空白的,除了第二个和第三个文件,其中包含正确的数据。
当我手动打开网址时,一切都完美无缺。我错过了什么?
答案 0 :(得分:1)
事实上,我只能下载文件2& 3,其他所有人都是空的......
您在访问这些文件时是否已登录"手动"? (我假设使用的是网络浏览器。)
如果是这样,FYI的http请求不仅包含URL,还会传输大量其他信息。因此,如果您没有获得相同的信息,您几乎肯定不会提出相同的请求。
在Chrome中,您可以看到您在页面中发出的请求。
从开发人员工具转到网络> 从列表中选择一个名称> 请求标题(See picture)
您可能正在寻找的最可能的事情是 cookies
希望它有所帮助。