python - 使用 python requests 库网站总是挂起

标签 python html python-requests

我正在尝试使用 python requests 库从这个 url https://www.adidas.com/api/products/EF2302/availability?sitePath=us 获取 html

但是,每次我运行代码时,它都会在发出获取请求时挂起

header = BASE_REQUEST_HEADER
url = 'https://www.adidas.com/api/products/EF2302/availability?sitePath=us'
r = requests.get(url, headers = header)

我检查了 Chrome 中的网络选项卡并复制了所有使用的 header (包括用户代理),因此这不是问题。我还能够在禁用 javascript 和 cookie 的情况下在 Chrome 中加载页面。

此代码在其他网站上运行良好。我根本无法从任何阿迪达斯网站(包括 https://www.adidas.com/us )得到回复。

非常感谢任何建议。

最佳答案

该网站不喜欢请求提供的默认 User-Agent 字段,将其更改为 Firefox/Chrome(我在示例中选择了 Firefox),即可成功读取数据:

from bs4 import BeautifulSoup
import requests
import json

headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0'}
url = 'https://www.adidas.com/api/products/EF2302/availability?sitePath=us'
r = requests.get(url, headers=headers)

json_data = json.loads(r.text)
print(json.dumps(json_data, indent=4))

打印:

{
    "id": "EF2302",
    "availability_status": "PREORDER",
    "variation_list": [
        {
            "sku": "EF2302_530",
            "availability": 15,
            "availability_status": "PREORDER",
            "size": "4",
            "instock_date": "2018-08-16T00:00:00.000Z"
        },
        {
            "sku": "EF2302_550",
            "availability": 15,
            "availability_status": "PREORDER",
            "size": "5",
            "instock_date": "2018-08-16T00:00:00.000Z"
        },
        {
            "sku": "EF2302_570",
            "availability": 15,
            "availability_status": "PREORDER",
            "size": "6",
            "instock_date": "2018-08-16T00:00:00.000Z"
        },
        {
            "sku": "EF2302_590",
            "availability": 15,
            "availability_status": "PREORDER",
            "size": "7",
            "instock_date": "2018-08-16T00:00:00.000Z"
        },
        {
            "sku": "EF2302_610",
            "availability": 15,
            "availability_status": "PREORDER",
            "size": "8",
            "instock_date": "2018-08-16T00:00:00.000Z"
        },
        {
            "sku": "EF2302_630",
            "availability": 15,
            "availability_status": "PREORDER",
            "size": "9",
            "instock_date": "2018-08-16T00:00:00.000Z"
        },
        {
            "sku": "EF2302_650",
            "availability": 15,
            "availability_status": "PREORDER",
            "size": "10",
            "instock_date": "2018-08-16T00:00:00.000Z"
        },
        {
            "sku": "EF2302_670",
            "availability": 15,
            "availability_status": "PREORDER",
            "size": "11",
            "instock_date": "2018-08-16T00:00:00.000Z"
        },
        {
            "sku": "EF2302_690",
            "availability": 15,
            "availability_status": "PREORDER",
            "size": "12",
            "instock_date": "2018-08-16T00:00:00.000Z"
        },
        {
            "sku": "EF2302_710",
            "availability": 15,
            "availability_status": "PREORDER",
            "size": "13",
            "instock_date": "2018-08-16T00:00:00.000Z"
        }
    ]
}

关于python - 使用 python requests 库网站总是挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51586059/

相关文章:

google-maps - Google API 上的 Google API 配额自动完成

python - Beautiful Soup - 列表中所有项目的结果转为 CSV

Python <函数函数名称位于 0x00000000>

javascript - jQuery 代码失败(在所有浏览器上)

python - oauth2 获取访问 token 时的错误凭据响应

asp.net - 如何使用 web-api 上传文件

html - 反转 CSS 悬停过渡的顺序

python-3.x - Cloud Natural Language API 返回 socket.gaierror : nodename nor servname provided after performing Sentiment Analysis every now and then

python - 循环不会进入 if-else 循环中的 else 部分

python - 使用 Python 的 CFFI 并排除系统头文件