【发布时间】:2021-01-26 05:35:43
【问题描述】:
更新:
我想我找到了问题所在。我正在使用requests_cache 模块,并且我可能会继续请求从缓存中返回许多之前空测试的 URL。换句话说,缓存存在“错误”,我一直默默地使用该缓存请求。
我正在尝试运行以下代码,但由于requests.get(url) 部分返回为空,所以它出错了。我正在遍历一堆 URL,其他 URL 工作正常。有一些关于这个的东西继续以这种方式表现。
urls = ['http://www.basketball-reference.com/players/b/brogdma01.html',
'http://www.basketball-reference.com/players/b/brokaga01.html',
'http://www.basketball-reference.com/players/b/brookpr01.html',
'http://www.basketball-reference.com/players/b/brookcl01.html',
'http://www.basketball-reference.com/players/b/brookaa01.html',
'https://www.basketball-reference.com/players/c/cookqu01.html']
for url in urls:
page_source = requests.get(url).text
问题网址是这个:https://www.basketball-reference.com/players/c/cookqu01.html
有人知道为什么这个会有不同的行为吗?
【问题讨论】:
-
你能检查一下status_code吗?示例:requests.get(url).status_code。如果不是 200 则说明访问或链接有问题。这是理解代码的状态码文档:developer.mozilla.org/en-US/docs/Web/HTTP/Status
-
我尝试了您在上面提供的问题 URL,对我来说,我能够获取文本。您能否提供更多信息。
-
可能站点速率限制了您的请求。你为什么不在每次请求后用 time.sleep(2) 再试一次。
-
@lllrnr101 它确实有速率限制,我尝试过不同的睡眠间隔和不同的顺序。它总是在那个特定的 URL 上出错。
标签: python python-3.x web-scraping python-requests