首页 > 解决方案 > urllib.error.HTTPError:HTTP 错误 413:有效负载太大

问题描述

我正在the_url使用以下代码在大型网站中抓取各种页面 ( ):

opener = urllib.request.build_opener()

url = opener.open(the_url)

contents_of_webpage = url.read()
url.close()

contents_of_webpage = contents_of_webpage.decode("utf-8") 

这几乎适用于每个页面,但偶尔我会得到: urllib.error.HTTPError: HTTP Error 413: Payload Too Large

寻找解决方案我遇到了以下形式的答案:网络服务器可能会选择将此作为响应......好像没有什么可做的一样 - 但我所有的浏览器都可以毫无问题地阅读页面,大概是我的浏览器应该发出相同类型的请求。所以肯定存在某种解决方案......例如,您可以一次请求一个网页以避免大量有效负载吗?

标签: pythonweb-scraping

解决方案


这在很大程度上取决于您请求的站点和 URL。为避免您的问题,大多数站点/API 在其端点上提供分页。尝试检查您请求的端点是否接受诸如?offset=<int>&limit=<int>或 smth 之类的 GET 参数。

UPD:除此之外,urllib在模拟浏览器行为方面并不是那么好。因此,您可以尝试使用requests或设置User-Agent浏览器的标头发出相同的请求。


推荐阅读