首页 > 解决方案 > 即使在传递标头后,Python 请求也无法获取站点

问题描述

我正在尝试抓取电子商务网站 Myntra,但请求继续加载而没有返回结果。我尝试使用不同的用户代理将标头传递给请求,但它仍然不起作用。如果添加超时参数,则请求超时但不成功。这是我正在尝试执行的示例代码

import requests

url = 'https://www.myntra.com'
s = requests.Session()
headers = {
'authority': 'www.myntra.com',
'method': 'GET',
'path': '/',
'scheme': 'https',
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'en-US,en;q=0.9',
'cache-control': 'max-age=0',
# dnt: 1
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'none',
'sec-fetch-user': '?1',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
}

response = s.get(url, headers=headers, timeout=10).content
print(response)

如果我尝试 curl 同一个站点,我会得到一个 403 状态代码,并带有以下输出。

<HTML><HEAD>
<TITLE>Access Denied</TITLE>
</HEAD><BODY>
<H1>Access Denied</H1>
 
You don't have permission to access "http&#58;&#47;&#47;www&#46;myntra&#46;com&#47;" on this server.<P>
Reference&#32;&#35;18&#46;24092e17&#46;1601830542&#46;453a61c2
</BODY>
</HTML>

标签: pythonweb-scrapingpython-requests

解决方案


推荐阅读