Research Http error code

本文详细解析了HTTP状态码的含义及其分类,包括2xx、3xx、4xx、5xx系列状态码的具体解释,并列举了400、401、403、404、500等常见错误码的详细说明。
Research Http error code
16小时前
  It's so shamed to say that during the previous years of development, I experienced several Web projects, but some basic content have been overlooked. Taking Http protocol internal error as example, I never understand it deeply, only go through Google to check solution while encountering the project application . So currently I need to review and start study again. Details are as following in CHS: 2xx 成功
  200 正常;请求已完成。
  201 正常;紧接 POST 命令。
  202 正常;已接受用于处理,但处理尚未完成。
  203 正常;部分信息 ― 返回的信息只是一部分。
  204 正常;无响应 ― 已接收请求,但不存在要回送的信息。
  3xx 重定向
  301 已移动 ― 请求的数据具有新的位置且更改是永久的。
  302 已找到 ― 请求的数据临时具有不同 URI。
  303 请参阅其它 ― 可在另一 URI 下找到对请求的响应,且应使用 GET 方法检索此响应。
  304 未修改 ― 未按预期修改文档。
  305 使用代理 ― 必须通过位置字段中提供的代理来访问请求的资源。
  306 未使用 ― 不再使用;保留此代码以便将来使用。
  4xx 客户机中出现的错误
  400 错误请求 ― 请求中有语法问题,或不能满足请求。
  401 未授权 ― 未授权客户机访问数据。
  402 需要付款 ― 表示计费系统已有效。
  403 禁止 ― 即使有授权也不需要访问。
  404 找不到 ― 服务器找不到给定的资源;文档不存在。
  407 代理认证请求 ― 客户机首先必须使用代理认证自身。
  415 介质类型不受支持 ― 服务器拒绝服务请求,因为不支持请求实体的格式。
  5xx 服务器中出现的错误
  500 内部错误 ― 因为意外情况,服务器不能完成请求。
  501 未执行 ― 服务器不支持请求的工具。
  502 错误网关 ― 服务器接收到来自上游服务器的无效响应。
  503 无法获得服务 ― 由于临时过载或维护,服务器无法处理请求。
  -------------------------------------------------- ----------------------- 400 - 请求无效
  401.1 - 未授权:登录失败
  401.2 - 未授权:服务器配置问题导致登录失败
  401.3 - ACL 禁止访问资源
  401.4 - 未授权:授权被筛选器拒绝
  401.5 - 未授权:ISAPI 或 CGI 授权失败
  403 - 禁止访问
  403 - 对 Internet 服务管理器 (HTML) 的访问仅限于 Localhost
  403.1 禁止访问:禁止可执行访问
  403.2 - 禁止访问:禁止读访问
  403.3 - 禁止访问:禁止写访问
  403.4 - 禁止访问:要求 SSL
  403.5 - 禁止访问:要求 SSL 128
  403.6 - 禁止访问:IP 地址被拒绝
  403.7 - 禁止访问:要求客户证书
  403.8 - 禁止访问:禁止站点访问
  403.9 - 禁止访问:连接的用户过多
  403.10 - 禁止访问:配置无效
  403.11 - 禁止访问:密码更改
  403.12 - 禁止访问:映射器拒绝访问
  403.13 - 禁止访问:客户证书已被吊销
  403.15 - 禁止访问:客户访问许可过多
  403.16 - 禁止访问:客户证书不可信或者无效
  403.17 - 禁止访问:客户证书已经到期或者尚未生效
  404.1 - 无法找到 Web 站点
  404 - 无法找到文件
  405 - 资源被禁止
  406 - 无法接受
  407 - 要求代理身份验证
  410 - 永远不可用
  412 - 先决条件失败
  414 - 请求 - URI 太长
  500 - 内部服务器错误
  500.100 - 内部服务器错误 - ASP 错误
  500-11 服务器关闭
  500-12 应用程序重新启动
  500-13 - 服务器太忙
  500-14 - 应用程序无效
  500-15 - 不允许请求 global.asa
  501 - 未实现
  502 - 网关错误
ninja: build stopped: subcommand failed. Traceback (most recent call last): File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\torch\utils\cpp_extension.py", line 2506, in _run_ninja_build subprocess.run( File "D:\anaconda3\Lib\subprocess.py", line 571, in run raise CalledProcessError(retcode, process.args, subprocess.CalledProcessError: Command '['ninja', '-v']' returned non-zero exit status 1. The above exception was the direct cause of the following exception: Traceback (most recent call last): File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 389, in <module> main() File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 373, in main json_out["return_val"] = hook(**hook_input["kwargs"]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 280, in build_wheel return _build_backend().build_wheel( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\setuptools\build_meta.py", line 435, in build_wheel return _build(['bdist_wheel', '--dist-info-dir', str(metadata_directory)]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\setuptools\build_meta.py", line 423, in _build return self._build_with_temp_dir( ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\setuptools\build_meta.py", line 404, in _build_with_temp_dir self.run_setup() File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\setuptools\build_meta.py", line 512, in run_setup super().run_setup(setup_script=setup_script) File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\setuptools\build_meta.py", line 317, in run_setup exec(code, locals()) File "<string>", line 147, in <module> File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\setuptools\__init__.py", line 115, in setup return distutils.core.setup(**attrs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\setuptools\_distutils\core.py", line 186, in setup return run_commands(dist) ^^^^^^^^^^^^^^^^^^ File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\setuptools\_distutils\core.py", line 202, in run_commands dist.run_commands() File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\setuptools\_distutils\dist.py", line 1002, in run_commands self.run_command(cmd) File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\setuptools\dist.py", line 1102, in run_command super().run_command(command) File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\setuptools\_distutils\dist.py", line 1021, in run_command cmd_obj.run() File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\setuptools\command\bdist_wheel.py", line 370, in run self.run_command("build") File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\setuptools\_distutils\cmd.py", line 357, in run_command self.distribution.run_command(command) File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\setuptools\dist.py", line 1102, in run_command super().run_command(command) File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\setuptools\_distutils\dist.py", line 1021, in run_command cmd_obj.run() File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\setuptools\_distutils\command\build.py", line 135, in run self.run_command(cmd_name) File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\setuptools\_distutils\cmd.py", line 357, in run_command self.distribution.run_command(command) File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\setuptools\dist.py", line 1102, in run_command super().run_command(command) File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\setuptools\_distutils\dist.py", line 1021, in run_command cmd_obj.run() File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\setuptools\command\build_ext.py", line 96, in run _build_ext.run(self) File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\setuptools\_distutils\command\build_ext.py", line 368, in run self.build_extensions() File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\torch\utils\cpp_extension.py", line 1010, in build_extensions build_ext.build_extensions(self) File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\setuptools\_distutils\command\build_ext.py", line 484, in build_extensions self._build_extensions_serial() File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\setuptools\_distutils\command\build_ext.py", line 510, in _build_extensions_serial self.build_extension(ext) File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\setuptools\command\build_ext.py", line 261, in build_extension _build_ext.build_extension(self, ext) File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\setuptools\_distutils\command\build_ext.py", line 565, in build_extension objects = self.compiler.compile( ^^^^^^^^^^^^^^^^^^^^^^ File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\torch\utils\cpp_extension.py", line 978, in win_wrap_ninja_compile _write_ninja_file_and_compile_objects( File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\torch\utils\cpp_extension.py", line 2159, in _write_ninja_file_and_compile_objects _run_ninja_build( File "E:\1-MasterFold\1-Research\paper_code\LLMNodeBed-main\.venv\Lib\site-packages\torch\utils\cpp_extension.py", line 2522, in _run_ninja_build raise RuntimeError(message) from e RuntimeError: Error compiling objects for extension [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for torch_sparse Failed to build torch_sparse ERROR: Failed to build installable wheels for some pyproject.toml based projects (torch_sparse) 如何解决?
06-25
import baostock as bs import pandas as pd import os import sys from datetime import datetime from tqdm import tqdm import time class CorrectFormatDownloader: def __init__(self): self.login_success = False self.stock_info = None self.csv_path = r"F:\TDX股票信息\全部A股基本信息.csv" self.output_dir = "F:/baostock_hdate" # 确保输出目录存在 os.makedirs(self.output_dir, exist_ok=True) # 中文表头映射 self.chinese_columns = { 'code': '股票代码', 'date': '交易日期', 'open': '开盘价', 'high': '最高价', 'low': '最低价', 'close': '收盘价', 'preclose': '前收盘价', 'volume': '成交量', 'amount': '成交额', 'adjustflag': '复权状态', 'turn': '换手率', 'tradestatus': '交易状态', 'pctChg': '涨跌幅', 'peTTM': '市盈率TTM', 'pbMRQ': '市净率MRQ', 'psTTM': '市销率TTM', 'pcfNcfTTM': '市现率TTM', 'isST': '是否ST', 'industry_code': '行业代码', 'area': '所属地域', 'list_date': '上市日期', 'market': '市场类型', 'research1': '研究1', 'research2': '研究2', 'research3': '研究3', 'research1_code': '研究1行业代码', 'research2_code': '研究2行业代码', 'research3_code': '研究3行业代码', 'employee_count': '员工总数' } def login(self): """登录baostock""" print("正在登录baostock...") try: lg = bs.login() if lg.error_code == '0': print("登录成功") self.login_success = True return True else: print(f"登录失败: {lg.error_msg}") return False except Exception as e: print(f"登录异常: {e}") return False def load_stock_info_from_csv(self): """从CSV文件加载股票信息""" print(f"正在从 {self.csv_path} 加载股票信息...") if not os.path.exists(self.csv_path): print(f"文件不存在: {self.csv_path}") return False try: # 使用UTF-8编码读取文件 self.stock_info = pd.read_csv(self.csv_path, encoding='utf-8') print(f"成功加载 {len(self.stock_info)} 条股票信息") # 清理列名 self.stock_info.columns = [col.strip() for col in self.stock_info.columns] return self.process_csv_data() except Exception as e: print(f"读取文件时出错: {e}") return False def process_csv_data(self): """处理CSV数据,生成baostock格式的股票代码""" if self.stock_info is None or self.stock_info.empty: return False # 列名映射 column_mapping = { '名称': 'name', '股票代码': 'code', '上市日期': 'list_date', '研究1': 'research1', '研究2': 'research2', '研究3': 'research3', '研究1行业代码': 'research1_code', '研究2行业代码': 'research2_code', '研究3行业代码': 'research3_code', '员工总数': 'employee_count' } self.stock_info = self.stock_info.rename(columns=column_mapping) # 处理股票代码为baostock格式 def convert_to_baostock_format(code): """将6位股票代码转换为baostock格式""" code_str = str(code).split('.')[0] # 去除小数点 code_str = code_str.zfill(6) # 确保6位 # 根据股票代码前缀确定市场 if code_str.startswith(('6', '5')): # 上海 return f"sh.{code_str}" elif code_str.startswith(('0', '3', '2')): # 深圳 return f"sz.{code_str}" else: # 北京 return f"bj.{code_str}" # 创建baostock格式的股票代码 self.stock_info['bs_code'] = self.stock_info['code'].apply(convert_to_baostock_format) # 添加6位股票代码(用于文件名) self.stock_info['short_code'] = self.stock_info['code'].astype(str).str.zfill(6) # 添加市场类型 def get_market_type(code): if code.startswith(('6', '5')): return 'sh' elif code.startswith(('0', '3', '2')): return 'sz' else: return 'bj' self.stock_info['market'] = self.stock_info['short_code'].apply(get_market_type) # 处理日期格式 self.stock_info['list_date'] = pd.to_datetime(self.stock_info['list_date']).dt.strftime('%Y-%m-%d') print(f"处理后数据:") print(f"股票数量: {len(self.stock_info)}") print("示例数据:") print(self.stock_info[['short_code', 'bs_code', 'name', 'market', 'research1']].head(5)) return True def download_single_stock(self, short_code, bs_code, stock_name, start_date="2010-01-01", end_date=None): """下载单只股票数据""" if end_date is None: end_date = datetime.now().strftime("%Y-%m-%d") # 获取股票信息 stock_info = self.stock_info[self.stock_info['bs_code'] == bs_code] if stock_info.empty: print(f"未找到股票代码: {bs_code}") return None stock_data = stock_info.iloc[0] # 构建文件名 safe_name = str(stock_name).replace('*', '星').replace('/', '').replace('\\', '') market = stock_data['market'] filename = f"{market}_{short_code}_{safe_name}.csv" filepath = os.path.join(self.output_dir, filename) # 增量更新检查 last_date = start_date if os.path.exists(filepath): try: existing_data = pd.read_csv(filepath) if '交易日期' in existing_data.columns and not existing_data.empty: last_date = existing_data['交易日期'].max() last_date = (pd.to_datetime(last_date) + pd.Timedelta(days=1)).strftime("%Y-%m-%d") except Exception as e: print(f"读取现有文件失败: {e}") try: print(f"正在下载 {bs_code} ({stock_name})...") # 下载前复权价格数据 price_fields = "date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg" rs_price = bs.query_history_k_data_plus( code=bs_code, # 使用baostock格式 fields=price_fields, start_date=last_date, end_date=end_date, frequency="d", adjustflag="3" ) if rs_price.error_code != '0': print(f"价格数据下载失败: {rs_price.error_msg}") return None price_data = [] while rs_price.next(): price_data.append(rs_price.get_row_data()) if not price_data: print(f"{bs_code} 无新数据") return None price_df = pd.DataFrame(price_data, columns=rs_price.fields) # 下载财务指标数据 finance_fields = "date,code,peTTM,pbMRQ,psTTM,pcfNcfTTM,isST" rs_finance = bs.query_history_k_data_plus( code=bs_code, fields=finance_fields, start_date=last_date, end_date=end_date, frequency="d", adjustflag="0" ) finance_df = None if rs_finance.error_code == '0': finance_data = [] while rs_finance.next(): finance_data.append(rs_finance.get_row_data()) if finance_data: finance_df = pd.DataFrame(finance_data, columns=rs_finance.fields) # 合并数据 if finance_df is not None: merged_df = pd.merge(price_df, finance_df, on=['date', 'code'], how='left') else: merged_df = price_df # 添加CSV文件中的股票信息 stock_row = stock_data merged_df['市场类型'] = stock_row['market'] merged_df['股票名称'] = stock_row['name'] merged_df['上市日期'] = stock_row['list_date'] merged_df['研究1'] = stock_row['research1'] merged_df['研究1行业代码'] = stock_row['research1_code'] merged_df['研究2'] = stock_row['research2'] merged_df['研究2行业代码'] = stock_row['research2_code'] merged_df['研究3'] = stock_row['research3'] merged_df['研究3行业代码'] = stock_row['research3_code'] merged_df['员工总数'] = stock_row['employee_count'] # 重命名标准列 merged_df = merged_df.rename(columns={ 'date': '交易日期', 'code': 'baostock代码', 'open': '开盘价', 'high': '最高价', 'low': '最低价', 'close': '收盘价', 'preclose': '前收盘价', 'volume': '成交量', 'amount': '成交额', 'adjustflag': '复权状态', 'turn': '换手率', 'tradestatus': '交易状态', 'pctChg': '涨跌幅', 'peTTM': '市盈率TTM', 'pbMRQ': '市净率MRQ', 'psTTM': '市销率TTM', 'pcfNcfTTM': '市现率TTM', 'isST': '是否ST' }) # 处理增量更新 final_df = merged_df if os.path.exists(filepath): try: existing_df = pd.read_csv(filepath) final_df = pd.concat([existing_df, merged_df]) final_df = final_df.drop_duplicates(subset=['交易日期'], keep='last') final_df = final_df.sort_values('交易日期') except: pass # 保存数据 final_df.to_csv(filepath, index=False, encoding='utf-8-sig') print(f"✓ {bs_code} ({stock_name}) 已更新,共 {len(final_df)} 条记录") return final_df except Exception as e: print(f"✗ 下载 {bs_code} 时出错: {e}") return None def download_all_stocks(self, start_date="2010-01-01", end_date=None, limit=None): """下载所有股票数据""" if end_date is None: end_date = datetime.now().strftime("%Y-%m-%d") if self.stock_info is None or self.stock_info.empty: print("股票信息未加载") return # 选择要下载的股票 stocks_to_download = self.stock_info if limit: stocks_to_download = self.stock_info.head(limit) print(f"\n准备下载 {len(stocks_to_download)} 只股票的数据...") success_count = 0 failed_stocks = [] for _, stock in tqdm(stocks_to_download.iterrows(), total=len(stocks_to_download)): short_code = stock['short_code'] bs_code = stock['bs_code'] name = stock['name'] result = self.download_single_stock(short_code, bs_code, name, start_date, end_date) if result is not None: success_count += 1 else: failed_stocks.append(f"{bs_code}_{name}") time.sleep(0.1) # 避免请求过快 # 生成报告 self.generate_report(success_count, len(stocks_to_download), failed_stocks) def generate_report(self, success, total, failed): """生成下载报告""" timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") report = f"""股票数据下载完成报告 ===================== 下载时间: {datetime.now().strftime("%Y-%m-%d %H:%M:%S")} 总股票数: {total} 成功下载: {success} 失败数量: {len(failed)} 成功率: {success / total * 100:.2f}% 失败股票列表: {chr(10).join(failed) if failed else "无"} 数据保存目录: {self.output_dir} """ report_file = os.path.join(self.output_dir, f"下载报告_{timestamp}.txt") with open(report_file, 'w', encoding='utf-8') as f: f.write(report) print("\n" + "=" * 60) print(report) print("=" * 60) print(f"详细报告已保存到: {report_file}") def main(): """主函数""" downloader = CorrectFormatDownloader() # 登录 if not downloader.login(): print("登录失败,程序退出") return # 加载股票信息 if not downloader.load_stock_info_from_csv(): print("无法加载股票信息,程序退出") return # 下载所有股票数据 print("\n开始下载所有股票数据...") downloader.download_all_stocks(start_date="2010-01-01") if __name__ == "__main__": main()
08-22
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值