Python requests请求网页无HTML响应状态码返回问题
问题描述
- 爬虫初学者使用Python编写代码爬取网站信息,运行代码检测HTML响应状态码时,终端没有任何返回结果,已修复print语句相关的基础语法错误。
- 涉及的代码如下:
import requests url = "https://www.sephora.ae/en/shop/makeup-c302/" page = requests.get(url) print(page.status_code)
问题根因
终端无输出不是语法错误导致的,是代码卡在requests.get(url)请求步骤,根本没有执行到后续的打印逻辑,常见诱因有两个:
- 目标站点是海外电商平台,配置了基础反爬规则,默认的requests请求会携带Python爬虫标识,直接被站点拦截,请求持续挂起得不到响应。
- 代码没有设置超时时间,如果本地网络访问目标站点连通性差,请求会无限等待,不会返回任何结果。
修复方案
给请求添加模拟浏览器的请求头绕过基础反爬,同时设置超时时间避免无限等待,增加异常捕获方便定位问题,修改后代码如下:
import requests url = "https://www.sephora.ae/en/shop/makeup-c302/" # 模拟Chrome浏览器的请求头 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-US,en;q=0.5" } try: # 设置10秒超时,避免请求无限挂起 page = requests.get(url, headers=headers, timeout=10) print(page.status_code) except Exception as e: print(f"请求异常:{e}")
结果说明
- 运行后终端打印
200代表请求正常,可以继续后续解析逻辑 - 打印
403代表被站点反爬识别,可以尝试更新请求头参数、使用代理IP解决 - 打印连接超时错误,先确认本地网络可以正常访问目标站点
内容的提问来源于stack exchange,提问作者ItzJad
相关产品推荐
相关产品推荐

