会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 133544个问题
Python 全系列/第四阶段:函数式编程和核心特性/生成器和装饰器 16081楼

import execjs

# 读取js代码
with open('./爬虫与反爬/16js.js','r') as f:
  js_code = f.read()

# 解析js,创建js对象
ctx = execjs.compile(js_code)


t = "MZphJmFlelDpw2aSCfdFb/P3tx6u8VHU/M7MqPRS6y6RaH/5IbXivLEiR9o33DJkTcSPLypQCFpPR82kvps4XAS/QiDAsPVBMK4HU3LUuLyxQLn42XoQKtsRU3nLrOppUcsUCaY8vfPxRtOB4RmS8utPv1yghJtEXPzFsqCxHdcMCUo/o0DpzF5NzSMvlvmYDctx2SVncj3BldMoJn2SZLwPyk2NghU08KyffZyPMaiTmaAeX42LAu8//RhilPgFkR4WUfSd2JSf5WLW1LG0xNJQXx0V1mwtdekmdeH1VkFuapV7vq+eUWCydb4g4fzb+gAwJL8FCmRzBol9j8tdr3ikRFVEttwRl9PG7/ihq/YjCAvWr4S4BAHs4ZRtfo3RMCYFHi+jPkAJWSDArZGriI069tqw9zN04c5G6N4DVQSHwOvm0/JnTWjrIJ/7YTGM+e6lE0DCglS3dHuwxQEGYp3tfxIqnuEMZglV+8rpeVwPoZcWzE3A+0zqJ1ypmhsLk6ZKqpp1jnwvnzCyc3XEvvNlC++1BOPDxaBjjWc94/mcXO37RwjEVQx/h6sCIRJzo9Qwpe2emcsK/ZvAN2433cXPrdZXn1RTWnYkI/NfUMAfib+W54hkccA1krMstvc3oahDlYhOlTlv2OmGoknLoBaWnXiU3Dv51apgdZ4XBpBfN4HOzY12/zq4cnd1u319dBu0fRETiadFXqAUE9nRbmqZtQ4L7/byasPdOOxOagv7nIH4bvcXpfXDqhz6CMDL9Ei+N/dyRWlt3BX/bUPQ6H9E89HbmeJqJFPXZ1HeSHR2Ijl601S2B03lYQcrysSwWh8kzM1D/0N3Dm5z1R3kxvJ5iYpjfPBZH6ozU/4F4E42z1BInZRHViDc79MM6yNB433MMaAl5jsQBSDy33gBwlmx21J35xzmHdsLjmCuVstWvzWgVYOrRCD3dChIoueE"
params1= 'EB444973714E4A40876CE66BE45D5930'
params2 = 'B5A8904209931867'

# 调用js里的函数
rs = ctx.call('get_rs',t,params1,params2)
print(rs)

老师我运行这个py文件报错是:

Traceback (most recent call last):

  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\lib\threading.py", line 1016, in _bootstrap_inner

    self.run()

  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\lib\threading.py", line 953, in run

    self._target(*self._args, **self._kwargs)

  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\lib\subprocess.py", line 1515, in _readerthread

    buffer.append(fh.read())

UnicodeDecodeError: 'gbk' codec can't decode byte 0x81 in position 189: illegal multibyte sequence

Traceback (most recent call last):

  File "d:\spider\spider_code\爬虫与反爬\16_js破解.py", line 16, in <module>

    rs = ctx.call('get_rs',t,params1,params2)

  File "C:\Users\zzzzzzzbw\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\execjs\_abstract_runtime_context.py", line 37, in call

    return self._call(name, *args)

  File "C:\Users\zzzzzzzbw\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\execjs\_external_runtime.py", line 92, in _call

    return self._eval("{identifier}.apply(this, {args})".format(identifier=identifier, args=args))

  File "C:\Users\zzzzzzzbw\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\execjs\_external_runtime.py", line 78, in _eval

    return self.exec_(code)

  File "C:\Users\zzzzzzzbw\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\execjs\_abstract_runtime_context.py", line 18, in exec_

    return self._exec_(source)

  File "C:\Users\zzzzzzzbw\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\execjs\_external_runtime.py", line 88, in _exec_

    return self._extract_result(output)

  File "C:\Users\zzzzzzzbw\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\execjs\_external_runtime.py", line 156, in _extract_result

    output = output.replace("\r\n", "\n").replace("\r", "\n")

AttributeError: 'NoneType' object has no attribute 'replace'


Python 全系列/第十六阶段:Python 爬虫开发/爬虫反反爬 16084楼
C++特训班/第一阶段:基础篇/基础篇 16087楼
JAVA 全系列/(旧的隐藏)第八阶段:电商高级项目_架构/编码/电商ego-基于SOA架构_Dubbo使用_逆向工程_分页插件完成商品查询 16088楼

老师,在29-34行中,使用接口Animal类来获取Mouse,Bird的run,fly获取不了,视频里老师也没有进行这2个参数的演示。

from flask import Flask
from flask_graphql import GraphQLView
import graphene

class Animal(graphene.Interface):  #定义一个接口类
    id=graphene.ID()
    name=graphene.String()

class Mouse(graphene.ObjectType):
    class Meta:
        interfaces=(Animal,)    #继承接口中的属性
    run = graphene.String()     #自定义属性

class Bird(graphene.ObjectType):
    class Meta:
        interfaces = (Animal,)  #继承接口中的属性
    fly = graphene.String()     #自定义属性

class Query(graphene.ObjectType):
    mouse=graphene.Field(Mouse) #获得Mouse属性
    bird=graphene.Field(Bird)   #获得Bird属性
    animal=graphene.Field(Animal,type_=graphene.Int(required = True))

    def resolve_mouse(self,info):
        return Mouse(id=1,name='杰瑞',run='汤姆快跑呀~~')
    def resolve_bird(self,info):
        return Bird(id=2,name='高书博',fly='汤姆快跑呀~~')
    # def resolve_animal(self,info,type_):
    #     if type_==1:
    #         return Mouse(id=3, name='狗蛋高书博', run='追唐老鸭啦~~~')
    #     elif type_==2:
    #         return Bird(id=4, name='狗子高书博', fly='跑呀~Tom来了!!')

    def resolve_animal(self,info,type_):
        # return Animal(id=3,name='动物') #  "message": "An Interface cannot be intitialized",
        if type_ == 1:
            return Mouse(id= 4, name='米老鼠',run='追唐老鸭啦~~~')
        else:
            return Bird(id = 3,name='鹦鹉',fly = '跑呀~Tom来了!!')

if __name__=='__main__':
    schema=graphene.Schema(query=Query)  #查询Query
    app=Flask(__name__) #创建flask对象
    # /graphql:视图的URL, GraphQLView.as_view:将映射函数转换成视图函数 ,'grapql':视图名称  ,
    # 把schema注册到schema方法里, graphiql=True:开启插件应用
    app.add_url_rule('/graphql', view_func=GraphQLView.as_view('grapql', schema=schema, graphiql=True))
    app.run()

image.png

Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/GraphQL 16089楼
JAVA 全系列/第六阶段:JavaWeb开发/Web实战案例 16090楼
JAVA 全系列/第一阶段:AI驱动的JAVA编程/变量、数据类型、运算符 16091楼
Python 全系列/第六阶段:数据库与AI协同技术实战/mysql介绍与环境安装 16092楼
C++特训班/第一阶段:基础篇/基础篇 16093楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637