Selaa lähdekoodia

fix(pokemon_tcg_spider): 替换inspect为sys._getframe实现函数名获取

- 将所有inspect.currentframe()调用替换为sys._getframe()以提高性能和兼容性
- 删除不必要的函数参数,简化函数签名
- 修正日志中函数名调用相关的调试与错误信息输出
- 更新日志打印逻辑,保证爬虫运行状态正确记录
- 调整SQL查询语句,增加注释并修正字符串格式
- 修正部分代码中的打印与注释格式
- 在调度任务中添加注释说明简中板块去重逻辑修改
charley 2 viikkoa sitten
vanhempi
commit
a73d4ccea4

+ 27 - 23
pokemon_tcg_spider/jian_pokemon_card_spider.py

@@ -2,11 +2,11 @@
 # Author : Charley
 # Python : 3.10.8
 # Date   : 2025/8/26 10:47
-import datetime
-import inspect
+import sys
 import random
 import time
 import requests
+import datetime
 import user_agent
 from loguru import logger
 from parsel import Selector
@@ -63,15 +63,14 @@ def get_proxys(log):
 
 
 @retry(stop=stop_after_attempt(5), wait=wait_fixed(1), after=after_log)
-def get_parent_single_page(log, page, sql_pool):
+def get_parent_single_page(log, page):
     """
     单页请求
     :param log:
     :param page:
-    :param sql_pool:
     :return: decrypted_res -> 解密后的数据
     """
-    log.debug(f'Request {inspect.currentframe().f_code.co_name} for page: {page} .................')
+    log.debug(f'Request {sys._getframe().f_code.co_name} for page: {page} .................')
     par = {"pageNum": str(page), "pageSize": "20"}
 
     sign_result = api_sign(
@@ -101,6 +100,7 @@ def get_parent_single_page(log, page, sql_pool):
 
     decrypted_res = pokemon_aes_decrypt(response.text)
     # print(decrypted_res)
+    # time.sleep(1111)
     return decrypted_res
 
 
@@ -113,7 +113,7 @@ def parse_parent_list(log, list_data, sql_pool):
     :return:
     """
     if not list_data:
-        log.error(f"{inspect.currentframe().f_code.co_name} list_data is None")
+        log.error(f"{sys._getframe().f_code.co_name} list_data is None")
         return
 
     # info_list = []
@@ -124,7 +124,7 @@ def parse_parent_list(log, list_data, sql_pool):
 
         # 20260327 增加系列过滤 '周边'
         if "周边" in expansion_series:
-            log.debug(f"{inspect.currentframe().f_code.co_name}过滤系列: {expansion_series}")
+            log.debug(f"{sys._getframe().f_code.co_name}过滤系列: {expansion_series}")
             continue
         # data_dict = {
         #     "parent_id": parent_id,
@@ -135,7 +135,7 @@ def parse_parent_list(log, list_data, sql_pool):
         # print(data_dict)
         # info_list.append(data_dict)
         try:
-            log.debug(f"{inspect.currentframe().f_code.co_name} Request -> get_child_list, parent_id: {parent_id}")
+            log.debug(f"{sys._getframe().f_code.co_name} Request -> get_child_list, parent_id: {parent_id}")
             get_child_list(log, sql_pool, parent_id, expansion_series, expansion_img)
         except Exception as e:
             log.error(f"Error parsing child list: {e}")
@@ -154,7 +154,7 @@ def get_parent_list(log, sql_pool):
 
     while page <= max_page:
         try:
-            result = get_parent_single_page(log, page, sql_pool)
+            result = get_parent_single_page(log, page)
 
             if result.get("code") != 0:
                 log.error(f"请求失败: {result.get('message')}")
@@ -210,7 +210,7 @@ def get_child_single_page(log, page, parentId):
     :param parentId: 查询的父系列id
     :return:
     """
-    log.debug(f'Request {inspect.currentframe().f_code.co_name} for page: {page} .................')
+    log.debug(f'Request {sys._getframe().f_code.co_name} for page: {page} .................')
     par = {'pageNum': str(page), 'pageSize': '20', 'parentId': str(parentId)}
     sign_result = api_sign(
         timeout=1221,
@@ -254,7 +254,7 @@ def parse_child_list(log, list_data, sql_pool, parentId, expansion_series, expan
     :return:
     """
     if not list_data:
-        log.error(f"{inspect.currentframe().f_code.co_name} list_data is None")
+        log.error(f"{sys._getframe().f_code.co_name} list_data is None")
         return
 
     info_list = []
@@ -283,7 +283,7 @@ def parse_child_list(log, list_data, sql_pool, parentId, expansion_series, expan
             "description": description,
             "crawler_language": crawler_language
         }
-        # print(data_dict)
+        print(data_dict)
         info_list.append(data_dict)
 
     if info_list:
@@ -362,7 +362,7 @@ def get_series_single_page(log, item_tuple, page):
     commodity_code = item_tuple[2]
     sales_date = item_tuple[3]
     # print(child_id, child_name, commodity_code, sales_date)
-    log.debug(f'Request {inspect.currentframe().f_code.co_name} for ID: {child_id}, page: {page} .................')
+    log.debug(f'Request {sys._getframe().f_code.co_name} for ID: {child_id}, page: {page} .................')
     par = {"banCardFlag": "0", "commodityIds": str(child_id), "commoditySelectedList": [
         {"id": str(child_id), "commodityName": child_name, "commodityCode": commodity_code, "salesDate": sales_date}],
            "pageNum": str(page), "pageSize": "50"}
@@ -415,7 +415,7 @@ def parse_series(log, list_data, sql_pool, item_tuple):
     :return:
     """
     if not list_data:
-        log.error(f"{inspect.currentframe().f_code.co_name} list_data is None")
+        log.error(f"{sys._getframe().f_code.co_name} list_data is None")
         return
     # info_list = []
     for item in list_data:
@@ -436,7 +436,7 @@ def parse_series(log, list_data, sql_pool, item_tuple):
         try:
             get_details_page(log, detail_id, item_tuple, sql_pool)
         except Exception as e:
-            log.error(f"{inspect.currentframe().f_code.co_name} {detail_id} 请求异常: {e}")
+            log.error(f"{sys._getframe().f_code.co_name} {detail_id} 请求异常: {e}")
 
         time.sleep(random.randint(1, 5) / 10)
     # if info_list:
@@ -506,7 +506,7 @@ def get_details_page(log, card_id, item_tuple, sql_pool):
     :param sql_pool:
     """
     log.debug(
-        f'Request {inspect.currentframe().f_code.co_name} for card_id: {card_id} .................')
+        f'Request {sys._getframe().f_code.co_name} for card_id: {card_id} .................')
     par = {"id": str(card_id)}
     sign_result = api_sign(
         timeout=1221,
@@ -562,6 +562,7 @@ def parse_details(log, list_data, sql_pool, card_id, item_tuple):
     child_id = item_tuple[0]
     child_name = item_tuple[1]
     commodity_code = item_tuple[2]
+    sales_date = item_tuple[3]
     expansion_series = item_tuple[4]
     """
     pg_value -> commodity_code
@@ -570,12 +571,12 @@ def parse_details(log, list_data, sql_pool, card_id, item_tuple):
     """
 
     if not list_data:
-        log.error(f"{inspect.currentframe().f_code.co_name} list_data is None")
+        log.error(f"{sys._getframe().f_code.co_name} list_data is None")
         return
 
     item = list_data.get("data")
     if not item:
-        log.error(f"{inspect.currentframe().f_code.co_name} item is None")
+        log.error(f"{sys._getframe().f_code.co_name} item is None")
         return
 
     # pg_value
@@ -592,6 +593,7 @@ def parse_details(log, list_data, sql_pool, card_id, item_tuple):
         "major_category_name": expansion_series,
         "pg_value": commodity_code,
         "pg_label": child_name,
+        "sales_date": sales_date,
         "card_id": card_id,
         "card_name": card_name,
         "card_no": card_no,
@@ -610,7 +612,7 @@ def jz_pokemon_main(log):
     """
     主函数
     """
-    log.info(f'开始运行 {inspect.currentframe().f_code.co_name} 爬虫任务.............................................')
+    log.info(f'开始运行 {sys._getframe().f_code.co_name} 爬虫任务.............................................')
 
     # 配置 MySQL 连接池
     sql_pool = MySQLConnectionPool(log=log)
@@ -624,7 +626,7 @@ def jz_pokemon_main(log):
         try:
             get_parent_list(log, sql_pool)
         except Exception as e:
-            log.error(f"{inspect.currentframe().f_code.co_name} Request get_category_list error: {e}")
+            log.error(f"{sys._getframe().f_code.co_name} Request get_parent_list error: {e}")
 
         # 获取商品详情
         log.debug(f"........... 获取商品详情 ..........")
@@ -633,7 +635,9 @@ def jz_pokemon_main(log):
         #            "pageNum": str(page), "pageSize": "50"}
         # 2026-03-27 18:11:00  gmt_create_time字段 查询今天的数据
         sql_ietm_id_list = sql_pool.select_all(
-            f"SELECT DISTINCT child_id,child_name,commodity_code,sales_date,expansion_series FROM pokemon_jianz_category WHERE crawler_language='{crawler_language}' AND gmt_create_time >= '{datetime.datetime.now().strftime('%Y-%m-%d 00:00:00')}'")
+            # f"SELECT DISTINCT child_id,child_name,commodity_code,sales_date,expansion_series FROM pokemon_jianz_category WHERE crawler_language='{crawler_language}'"
+            f"SELECT DISTINCT child_id,child_name,commodity_code,sales_date,expansion_series FROM pokemon_jianz_category WHERE crawler_language='{crawler_language}' AND gmt_create_time >= '{datetime.datetime.now().strftime('%Y-%m-%d 00:00:00')}'"
+        )
         # sql_ietm_id_list = [item_id[0] for item_id in sql_ietm_id_list]
         log.debug(f"获取商品详情长度为: {len(sql_ietm_id_list)}")
         for item_tuple in sql_ietm_id_list:
@@ -644,9 +648,9 @@ def jz_pokemon_main(log):
                 log.error(f"Request get_details error: {e}")
 
     except Exception as e:
-        log.error(f'{inspect.currentframe().f_code.co_name} error: {e}')
+        log.error(f'{sys._getframe().f_code.co_name} error: {e}')
     finally:
-        log.info(f'爬虫程序 {inspect.currentframe().f_code.co_name} 运行结束,等待下一轮的采集任务............')
+        log.info(f'爬虫程序 {sys._getframe().f_code.co_name} 运行结束,等待下一轮的采集任务............')
 
 
 if __name__ == '__main__':

+ 1 - 0
pokemon_tcg_spider/start_pokemon_spider.py

@@ -53,6 +53,7 @@ def schedule_task():
 
     # 20260327重启pokemon任务, jp和us的爬虫任务, 改为从tcg网站获取
     # 20260409 tcg jp/us 改为每周一运行
+    # 20260901 简中板块问题  修改了去重逻辑
     schedule.every().monday.at("02:01").do(run_threaded, jp_pokemon_main, log=logger)
     schedule.every().monday.at("01:01").do(run_threaded, us_pokemon_main, log=logger)
     schedule.every().monday.at("03:01").do(run_threaded, fz_pokemon_main, log=logger)