С помощью chromedp получите javascript Object / Array из * runtime.RemoteObject - PullRequest
0 голосов
/ 08 марта 2019

Я использую chromedp и хочу получить содержимое массива javascript, объявленного на странице, которую я прокручиваю

<script>
                var title = document.title;
                var pages = [{"key1":"value1","key2":1,"external":1},{"key1":"value2", "key2":9}];
</script>

Я пытался

var res *runtime.RemoteObject
if err := c.Run(ctxt, chromedp.EvaluateAsDevTools("pages", &res)); err != nil {
    return fmt.Errorf("could not evaluate page : %v", err)
}

json_byte, _ := res.MarshalJSON()
var out bytes.Buffer
_ = json.Indent(&out, json_byte, "", "\t")

log.Printf("pages %s ", out.String())

, но это дает мне кое-чтокак

2019/03/08 13:12:52 pages {
        "type": "object",
        "subtype": "array",
        "className": "Array",
        "description": "Array(22)",
        "objectId": "{\"injectedScriptId\":441,\"id\":1}"
}

Я хочу иметь возможность получить фактическое содержание переменных страниц (ключи и значения).Как получить этот контент?

1 Ответ

1 голос
/ 08 марта 2019

Выясните, что добавление опции / функции chromedp.EvalAsValue в eval делает это:

if err := c.Run(ctxt, chromedp.EvaluateAsDevTools("pages", &res, chromedp.EvalAsValue)); err != nil {
    return fmt.Errorf("could not evaluate page : %v", err)
}

Результатом является значение оценки, а не сводка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...