python错误:requests.exceptions.HTTPError: 418 Client Error

res = requests.get(url)
res.raise_for_status()

执行后抓取没有结果,提示如下:

一般是网站存在反爬虫机制,请求消息里没带浏览器信息,需模拟浏览器访问,加一个headers,把浏览器信息写进去

获取headers的方法:

加入headers时,注意是一个字典类型,代码如下:

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                         'Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.57'}
url = 'https://www.douban.com/photos/photo/2630242246/#image'
res = requests.get(url, headers=headers)
res.raise_for_status()

 

当使用`response.json()`方法解析请求返回的响应数据时,如果响应数据不是合法的JSON数据格式,则会出现`JSONDecodeError`异常。这种情况通常发生在服务器返回的响应数据不是JSON格式数据时,或者在网络传输过程中出现了数据损坏等问题。 为了解决这个问题,您可以使用`try except`语句来捕获异常,并在出现异常时进行相应的处理。以下是一个示例代码,用于捕获`JSONDecodeError`异常并记录日志: ```python from locust import HttpUser, task, between import json import logging class MyUser(HttpUser): wait_time = between(1, 2.5) @task def post_request(self): headers = { "Authorization": "Bearer your_token", "Content-Type": "application/json" } data = { "key": "value" } response = self.client.post("/your-post-endpoint", headers=headers, json=data) # 断言请求返回的状态码是否为200 assert response.status_code == 200 # 解析请求返回的JSON格式数据 try: response_data = response.json() except json.JSONDecodeError: # 记录日志并忽略该请求 logging.error("Failed to parse response data as JSON: %s", response.text) return # 断言请求返回的JSON格式数据中是否包含了指定的键值对 assert "result" in response_data assert response_data["result"] == "success" ``` 在上面的示例代码中,我们使用`try except`语句来捕获`JSONDecodeError`异常。如果出现异常,则记录日志并忽略该请求。否则,我们继续使用`assert`语句断言请求返回的JSON格式数据是否符合预期。 通过这种方式,您可以避免由于响应数据不是合法的JSON格式数据而导致测试失败的情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值