

Python,速成心法
敲代码,查资料,问Ai
练习,探索,总结,优化

★★★★★博文创作不易,使用代码的过程中,如有疑问的地方,欢迎大家指正留言交流。喜欢的老铁可以多多点赞+收藏分享+置顶,小红牛在此表示感谢。★★★★★
---------★爬虫系列教程★----------
Python爬虫教程33:you-get爬虫利器,一行代码实现,视频+音频+图片的下载
Python爬虫教程32:东财上面获取,股票行业板块的名称+代码数据(json解析)
Python爬虫教程31:requests手动指定网页编码+自动检测的方法
Python爬虫教程30:Selenium网页元素,定位的8种方法!
Python爬虫教程29:使用fake_useragent模块,随机生成User Agent字符串
Python教程69:解密JavaScript中,常见的加密方法
Selenium教程05:使用webdriver-manager自动下载浏览器驱动,再也不用担心driver版本的问题了
Python爬虫教程28:聊聊反爬爬虫经常遇到的问题及解决方法
Python爬虫教程27:秀啊!用Pandas 也能爬虫??
Python爬虫教程26:selenium使用stealth.min.js文件,隐藏浏览器指纹特征
Python爬虫教程20:ip138.com手机号码,归属地查询
Python爬虫教程12:使用urlretrieve下载王者荣耀英雄皮肤
Python爬虫教程10:使用json解析股票数据,并画上证指数K线图
Python爬虫教程09:使用Json解析艺恩娱数网票房数据可视化
Python爬虫教程08:使用json解析中国气象局的天气数据
Python爬虫教程06:使用xpath和正则表达式采集豆瓣250数据
以下是一个 Python 示例,演示如何在访问网址失败后按递增间隔(2秒、3秒)进行重试,成功后立即停止。有些网页设限的访问频率比较高,可以用延时请求试试。
↓ 完整源码如下 ↓
import requestsimport timedef fetch_url_with_retry(url, max_retries=2):"""尝试访问网址,失败后自动重试。:param url: 目标网址:param max_retries: 最大重试次数(此处设为2,即最多尝试3次)"""retry_delays = [2, 3] # 第一次重试前等待2秒,第二次重试前等待3秒for attempt in range(max_retries + 1): # attempt: 0, 1, 2try:response = requests.get(url, timeout=5)# 如果状态码表示成功(2xx),则认为访问成功response.raise_for_status() # 非2xx会抛出HTTPError异常print(f"访问成功!状态码:{response.status_code}")return responseexcept requests.exceptions.RequestException as e:print(f"第{attempt + 1}次访问失败:{e}")if attempt < max_retries: # 如果还有重试机会wait_time = retry_delays[attempt]print(f"等待 {wait_time} 秒后重试...")time.sleep(wait_time)else:print("已达最大重试次数,放弃访问。")raise # 重新抛出最后一次异常# 示例用法if __name__ == "__main__":url = "https://httpbin.org/status/500" # 模拟返回500错误# url = "https://httpbin.org/get" # 正常网址try:result = fetch_url_with_retry(url)# 成功后可进一步处理 result.content 等except Exception:print("最终未能获取到有效响应。")
也可以参考以下示例写法
def get_stock_bwdd_jsdata(self, symbol, date, amount_threshold=200):url = "你的网址...."params = {"symbol": symbol,"num": 10000,"page": 1,"sort": "ticktime","asc": 0,"volume": 0,"amount": amount_threshold * 10000,"type": 0,"day": date}headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36","Referer": f"https://vip.stock.finance.sina.com.cn/quotes_service/view/cn_bill.php?symbol={symbol}",}# 重试延时策略:第一次不等待,之后分别等待2秒、3秒delays = [0, 2, 3] # 共3次尝试机会for attempt, wait_sec in enumerate(delays):if attempt > 0: # 非首次请求,先等待对应秒数time.sleep(wait_sec)print(f"【{symbol}】第{attempt}次重试,等待 {wait_sec} 秒后重新请求")try:response = requests.get(url, params=params, headers=headers, timeout=15)response.raise_for_status()# 请求成功,记录日志并返回数据self.log_api_request(symbol, date, amount_threshold, "请求成功", is_error=False)return response.json()except Exception as e:# 记录本次失败日志error_msg = f"请求失败 (尝试 {attempt+1}/{len(delays)}): {e}"self.log_api_request(symbol, date, amount_threshold, error_msg, is_error=True)# 如果是最后一次尝试,则抛出异常if attempt == len(delays) - 1:raise Exception(f"股票 {symbol} 数据请求失败,已重试 {len(delays)-1} 次: {e}")# 否则继续下一次循环
完毕!!感谢您的收看
------★★历史博文集合★★------
