# -*- coding: utf-8 -*- """ Created on 2024-12-25 --------- @summary: --------- @author: Dzr """ import execjs import requests import json def ctx(): with open('./zgsyzbtbw_pm.js', 'r', encoding='utf-8') as fr: ex_js = fr.read() return execjs.compile(ex_js) def get_logo(t, proxies=False): headers = { "Accept": "application/json, text/plain, */*", "Accept-Language": "zh-CN,zh;q=0.9", "Cache-Control": "no-cache", "Connection": "keep-alive", "MACHINE_CODE": t, "Pragma": "no-cache", "Referer": "https://www.cnpcbidding.com/", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36", } url = "https://www.cnpcbidding.com/cms/css/bj.css" res = requests.get(url, headers=headers, proxies=proxies, timeout=20) return res.content.decode() def parse_item_list(request, response): ret = response.content.decode() data = (json.loads(ret)['data'] if 'data' in ret else ret).replace('"', '') data_dict = ctx().call('decrypt', request.logo['logo2'], data) if data_dict is None: raise ValueError(f'列表页下载失败|{request.page}') return data_dict.get('data').get('records') or []