在python3上获取带有请求的“状态码206:部分内容”

时间:2018-08-28 11:49:25

标签: python-3.x python-requests http-status-codes

我正在制作一个个人项目,以了解有关请求和解析HTML / XML内容的更多信息。

我面临的问题是,当我执行URL请求时,我得到Response 206: Partial Content,但由于不完整而无法解析requests.contentlxml。我发现AJAX URL可以发出请求,并在可以正常工作并加载内容的浏览器上尝试该URL,但是在我的脚本上似乎不起作用。

我在这里阅读了一篇文章,说将标头更改为著名的浏览器是个好主意,请使用默认值。所以我创建了这个标题:

__header = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q',
    'Accept-Encoding': 'gzip, deflate, br',
    'DNT': str(1),
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0',
    'Upgrade-Insecure-Requests': str(1)
}

然后将其添加到请求中:

html_response = requests.get(url_with_parameters, headers=__header, timeout=3)

但是调试我得到了:

html_response.status_code -> 206

在调试器上,我可以看到以下标头:

{'Date': 'Tue, 28 Aug 2018 11:37:55 GMT', 'Content-Type': 'text/html;
charset=UTF-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 
'Set-Cookie': '__cfduid=dd1ac4b7e2a0e044ff0ed5fb231b9a3d91535456275;
expires=Wed, 28-Aug-19 11:37:55 GMT; path=/; domain=.theDomain.com;
HttpOnly', 'currentItems': '24', 'totalItems': '130', 'totalPages': '6',
'currentPage': '0',
'idArticles':'139503,161195,160398,139863,91574,140718,160383,129408,105828,
100062,144419,139524,117941,168674,111993,139848,168672,157792,140714,168680,
141568,135058,159480,89354', 'X-Backend': 'WEB_W15', 
'Cache-control': 'max-age=60, public', 'X-Cache-Status': 'GENERATED', 
'X-Cache-URL-Requested': 'the AJAX url I generate', 
'Expect-CT': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 
'Server': 'cloudflare', 'CF-RAY': '45167d1ab9036199-BCN'}

我尝试使用以下方法清除Cookie:

 html_response.cookies.clear()

但是似乎不起作用。我不知道expires'Expect-CT': 'max-age=604800...属性是否与我获取的206代码有关。

我首先在隐身选项卡上的浏览器中加载URL,以使用Firefox DevTools打开HTML,并查看要恢复的元素,然后执行脚本以查看程序的运行方式。我不知道是否首先在浏览器上加载URL会导致此206代码。

我的问题是如何避免使用此206并获得一个200的所有内容以便能够对其进行解析。

致谢!

0 个答案:

没有答案