Получение ответа от Python в виде массива - PHP

У меня есть PHP-код, и я вызываю скрипт python, который принимает URL-адрес, переходит по веб-URL, берет страницу JSON, а затем отправляет обратно страницу JSON в PHP-код, но проблема в том, что я получил этот JSON в массиве и не в правильном формате JSON, anu help?

код Python:

      import json
import sys
import bs4
import urllib.parse
link = urllib.parse.unquote(sys.argv[1])
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
    browser = p.chromium.launch()
    context = browser.new_context(user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36')
    page = context.new_page()
    cookie_file = open('./cookies.json')
    cookies = json.load(cookie_file)
    context.add_cookies(cookies)
    try:
        page.goto(link)
        page.wait_for_timeout(10000)
        print(page.content())
        page.close()
        context.close()
        browser.close()      
    except Exception as e:
        print("Error in playwright script.")
        page.close()
        context.close()
        browser.close()      

1 ответ

В content функция полагается на document.documentElement.outerHTML, поэтому вы можете получить форматированное значение. Если запрос возвращает JSON вы можете взять текст из response что goto возвращает:

      response = page.goto("https://raw.githubusercontent.com/corysimmons/colors.json/master/colors.json")
jsonContent = response.text()
jsonResult = json.loads(jsonContent)
print(jsonResult)

Если в середине есть какая-то обработка, вы можете попросить inner_text принадлежащий :root элемент:

      jsonContent = page.inner_text(':root')
jsonResult = json.loads(jsonContent)
print(jsonResult)
Другие вопросы по тегам