парсинг и получение списка из ответа на запрос get - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь проанализировать веб-сайт с помощью модуля запросов:

import requests
some_data = {'a':'',
             'b':''}
with requests.Session() as s:
    result = s.post('http://website.com',data=some_data)
    print(result.text)

Страница отвечает следующим образом:

{
    "arrangetype":"U",
    "list": [
        {
            "product_no":43,
            "display_order":4,
            "is_selling":"T",
            "product_empty":"F",
            "fix_position":null,
            "is_auto_sort":false
        },
        {
            "product_no":44,
            "display_order":6,
            "is_selling":"T",
            "product_empty":"F",
            "fix_position":null,
            "is_auto_sort":false
        }
    ],
    "length":2
}

Я обнаружил, что вместо анализа полного HTML,было бы лучше иметь дело с ответом, так как все данные, которые я хочу, находятся в этом ответе.

Я хочу получить список значений product_no, поэтому ожидаемый результат:

[43,44]

Как мне это сделать?

1 Ответ

0 голосов
/ 12 декабря 2018

Преобразуйте свой ответ JSON в словарь с помощью json.loads() и соберите свои результаты в понимание списка.

Демонстрация:

from json import loads

data = """{
    "arrangetype":"U",
    "list": [
        {
            "product_no":43,
            "display_order":4,
            "is_selling":"T",
            "product_empty":"F",
            "fix_position":null,
            "is_auto_sort":false
        },
        {
            "product_no":44,
            "display_order":6,
            "is_selling":"T",
            "product_empty":"F",
            "fix_position":null,
            "is_auto_sort":false
        }
    ],
    "length":2 
}"""

json_dict = loads(data)

print([x['product_no'] for x in json_dict['list']])
# [43, 44]

Полный код:

import requests
from json import loads

some_data = {'a':'',
             'b':''}

with requests.Session() as s:
    result = s.post('http://website.com',data=some_data)
    json_dict = loads(result.text)
    print([x["product_no"] for x in json_dict["list"]])
...