Как я могу конвертировать Unicode веб-страницы в ASCII? - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь преобразовать веб-страницу из формата, который я не понимаю, в формат ascii, чтобы я мог искать определенные данные.Я извлекаю данные, используя веб-клиент с URL-адресом веб-страницы, а затем использую кодирование для преобразования данных из того, что я считаю юникодом, в ascii, но формат вообще не меняется.Ниже приведен мой код:

WebClient web = new WebClient();
string page = "https://www.myurl.com/";

Stream data = web.OpenRead(page);
StreamReader reader1 = new StreamReader(data);
string input = reader1.ReadToEnd();
Encoding unicode = Encoding.Unicode;
Encoding ascii = Encoding.ASCII;

string webpage = ascii.GetString(
  Encoding.Convert(unicode, ascii, unicode.GetBytes(input))
);

Ниже показано, как выглядят данные веб-страницы, совпадающие с входными данными, из которых следует, что мое преобразование не сработало.

     \"sprited\":true,\"spriteCssClass\":\"sx_a11c08\",\"spriteMapCssClass\":\"sp_SN-oNOqlzVS\"},\"505789\":{\"sprited\":true,\"spriteCssClass\":\"sx_5219b1\",\"spriteMapCssClass\":\"sp_SN-oNOqlzVS\"},\"505782\":{\"sprited\":true,\"spriteCssClass\":\"sx_c0671f\",\"spriteMapCssClass\":\"sp_SN-oNOqlzVS\"},\"505794\":{\"sprited\":true,\"spriteCssClass\":\"sx_8cf344\",\"spriteMapCssClass\":\"sp_SN-oNOqlzVS\"},\"495429\": 

Кто-нибудь знает, что это за данные и как их преобразовать в данные, которые я могу понять?Когда я показываю исходную страницу веб-страницы в браузере, эти странные данные не отображаются.Другими словами, данные, которые я получаю от веб-клиента, совсем не похожи на источник страницы в браузере.

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Если вы хотите прочитать JSON из запроса, сделайте это как здесь ,

var json = web.DownloadString(page);

Затем вам нужно десериализовать строку в объект, если вы знаете типмодель в ответ, вы можете сделать это так, пусть день ее ResponseType.

using Newtonsoft.Json;

...

var result = JsonConvert.DeserializeObject<ResponseType>(json);

Существует пакет NuGet под названием Facebook , который вы можете импортировать в ваш проект.Это даст вам несколько моделей, которые могут совпадать с типом.


Если вы не знаете тип ответа, вы могли бы сделать что-то подобное,

using Newtonsoft.Json.Linq;

...

var jObject = JObject.Parse(json);

Затем вы можете использовать LINQ для запроса объекта.

0 голосов
/ 25 января 2019

Это полные данные веб-страницы ниже?Это выглядит неполным с обеих сторон. Для меня это выглядит как данные JSON для меня.Вы можете преобразовать его в объект C # с помощью класса JavaScriptSerializer.

JavaScriptSerializer json_serializer = new JavaScriptSerializer();
Test resultingData = (Test)json_serializer.DeserializeObject(your_data);
...