AWS Lambda Python3如何返回字符串而不是二进制(默认)CJK问题

问题描述 投票:0回答:1

我正在构建一个大型爬行程序,必须使用AWS Lambda来提高速度。但是,因为我从lambda读取数据,它将对非英语文本进行双重编码。

有些喜欢

"b\'<!DOCTYPE html>\\\\r\\\\n<html lang=\\"ko\\">\\\\r\\\\n<head>\\\\r\\\\n\\\\t<title id=\\"browse_title\\">\\\\\'\\\\xec\\\\x8a\\\\x88\\\\xea\\\\xb0\\\\x80\\\\xeb\\\\xa7\\\\xa82\\\\\'

来自lambda的代码

def get_html(url):
    r = requests.request(url=url, method="GET")
    # r.encoding = 'euc-kr'

    return {
        "html": r.content
    }

调用lambda的代码

def call_lambda_function():
    invoke_response = client.invoke(
        FunctionName="lambda_function_test",
        InvocationType="RequestResponse",
        Payload=json.dumps(payload)
    )
    data = invoke_response['Payload'].read()
    print(data)

调用lambda的输出

b'{“html”:“\ r \ n \ r \ n \ r \ n \ t \'\ uc288 \ uac00 \ ub9e82 \'7 \ uacf5 \ uc8fc \ uadfc \ ud669 \ uacf5 \ uac1c \”\ uc5f0 \ uae30 \ u0074 \ uc744 \ uc2a4 \ ud2b8 \ uc785 \ ud559 \ u00b7 \ u82f1 \ ubc29 \ uc1a1 \ uc0ac \ ud569 \ uaca9 \“....

添加decode('my-encoding')不会工作。它将解码,但解码结果是编码字符串。 (这是我说的双重编码)

所以!这就是我想要的。

我想让lambda不返回byte,而是字符串对象。

我希望有一个简单的解决方案!

否则我试过这个。 adding return str(return_target) to lambda function这仍将返回字节

python encoding python-requests aws-lambda cjk
1个回答
0
投票

简单解决方案

json.dumps添加到lambda添加json.loads以调用结果(解码后)

© www.soinside.com 2019 - 2024. All rights reserved.