Как захватить Json с веб-сайта, используя c# - PullRequest
0 голосов
/ 28 мая 2020

У меня есть платная подписка на Seeking Alpha и есть повар ie, который позволяет мне получать полные данные от https://seekingalpha.com/symbol/AAPL/financials-data?period_type=quarterly&statement_type=income-statement&order_type=latest_left&is_pro=True

Я хотел бы получить JSON ответ, используя C#

Ниже мой ужасный код

        string cookie = "my super secret cookie string";


        var request = new RestRequest(Method.GET);
        request.AddHeader("content-type", "application/json");
        request.AddHeader("Accept", "*/*");
        request.AddHeader("User-Agent","Mozilla/5.0");
        request.AddHeader("X-Requested-With", "XMLHttpRequest");
        string url = "https://seekingalpha.com/symbol/AAPL/financials-data?period_type=quarterly&statement_type=income-statement&order_type=latest_left&is_pro=True";

                    request.AddParameter("cookie", cookie, ParameterType.Cookie);

        var client = new RestClient(url);

        var queryResult = client.Execute(request);

        Console.WriteLine(queryResult.Content);

Как я могу заставить его вернуть JSON мне? Я получаю что-то, но не JSON Я хочу

Ответы [ 2 ]

0 голосов
/ 30 мая 2020

Покопавшись немного разобрался. На благо всех:

    private bool FinancialStatement(string symbol, string statement, string period)
    {
        var target = $"{BASE_URL}{symbol}/financials-data?period_type={period}&statement_type={statement}&order_type=latest_left&is_pro=True";

        var client = new RestClient(target);

        client.Timeout = -1;
        var request = new RestRequest(Method.GET);
        request.AddHeader("Cookie", MACHINE_COOKIE);
        IRestResponse response = client.Execute(request);
        dynamic responseObj;
        try
        {
            responseObj = JsonConvert.DeserializeObject(response.Content);
        }
        catch (Exception)
        {
            return false;
        }

        return response.IsSuccessful;
    }
0 голосов
/ 28 мая 2020

Попробуйте обновить заголовок Access до application/json.

request.AddHeader("Accept", "application/json");

Accept указывает, какой тип ответа от сервера клиент может принять.

Дополнительную информацию для Accept можно получить из Параметры заголовка: «Принять» и «Тип содержимого» в контексте REST

...