【问题标题】:Python requests.get(url) returning empty but can't figure out whyPython requests.get(url) 返回空但不知道为什么
【发布时间】: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


【解决方案1】:

我看到的唯一一件事是您的无效网址是唯一一个带有“https”而不是“http”的网址。

但我认为它是同一个网站,所以这可能是你的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-23
    • 2021-06-15
    • 2022-06-28
    • 2023-03-20
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    • 2014-02-11
    相关资源
    最近更新 更多