Выборка номеров из текста - C#

Узнай цену своей работы

Формулировка задачи:

Работаю с POST запросами. В ответе получаю
{"error":"","row_count":2,"table":[{"code_cat":11745212,"price_min":180.00},{"code_cat":114289708,"price_min":2688.62}]}
И таких позиций в ответе может быть до 100 (два в пример привел). Как получать непосредственно каждую цену по очереди? "price_min":180.00, "price_min":2688.62 и т.д.?

Решение задачи: «Выборка номеров из текста»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Excel = Microsoft.Office.Interop.Excel;
using System.IO;
using System.Net;
using System.Threading;
using System.Text.RegularExpressions;
 
public class WebRequestPostExample
{
    public static void Main()
    {
 
        Excel.Application work = new Excel.Application();
        Excel.Workbook Objwb = work.Workbooks.Open(@"C:\Users\admin\Desktop\price.xlsx", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); //открыть файл
        Excel.Worksheet ObjWorkSheet = (Excel.Worksheet)Objwb.Sheets[1];
        Excel.Workbook outwb = work.Workbooks.Open(@"C:\Users\admin\Desktop\ZZap\out.xlsx", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); //открыть файл
        Excel.Worksheet outWorkSheet = (Excel.Worksheet)outwb.Sheets[1];
        outWorkSheet.Cells[1, 1] = "Название";
        outWorkSheet.Cells[1, 2] = "Производитель";
        outWorkSheet.Cells[1, 3] = "Артикул";
        outWorkSheet.Cells[1, 4] = "Номер по ZZap";
        outWorkSheet.Cells[1, 5] = "Наша цена";
        outWorkSheet.Cells[1, 6] = "Минимум ZZap";
        outWorkSheet.Cells[1, 7] = "Средняя ZZap";
        outWorkSheet.Cells[1, 8] = "Максимум ZZap";
        int U = 7360;
        do
            
        {
            string i = ObjWorkSheet.Cells[U, 2].Text.ToString(); //Берем данные из Excel
            string j = ObjWorkSheet.Cells[U, 3].Text.ToString();
            string b = ObjWorkSheet.Cells[U, 5].Text.ToString();
            string p = ObjWorkSheet.Cells[U, 6].Text.ToString();
            outWorkSheet.Cells[U - 1, 1] = ObjWorkSheet.Cells[U, 1].Text.ToString();
            outWorkSheet.Cells[U - 1, 2] = j;
            outWorkSheet.Cells[U - 1, 3] = i;
            outWorkSheet.Cells[U - 1, 5] = p;
            outWorkSheet.Cells[U - 1, 9] = b;
            {
                if (b == "0")
                    goto cycle;
            }
 
            {
                if (i == "")
                    goto cycle;
            }
 
 
            {
                if (j == "AL-KO")
                    j = "ALKO";
            }
            {
                if (j == "MEAT & DORIA")
                    j = "MEATDORIA";
            }
            {
                if (j == "DEPO")
                    j = "";
            }
            string text = "search_text=";
            string row = "row_count=1";
            string prob = ";";
            string key = "api_key=EAAAAENi20T4HQCS2eQETQj1/lws9GI/HzBpRnVUwFR7V2dH";
            const string SourceFile = "Mytext2.txt";
            const string SourceFile2 = "prices.txt";
            WebRequest request = WebRequest.Create("https://www.zzap.ru/webservice/datasharing.asmx/GetSearchSuggest");
            request.Method = "POST";
            string postData = text + i + prob + j + "&" + row + "&" + key;
            byte[] byteArray = Encoding.UTF8.GetBytes(postData);
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = byteArray.Length;
            Stream dataStream = request.GetRequestStream();
            dataStream.Write(byteArray, 0, byteArray.Length);
            dataStream.Close();
            WebResponse response = request.GetResponse();
            Console.WriteLine(((HttpWebResponse)response).StatusDescription);
            dataStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(dataStream);
            string responseFromServer = reader.ReadToEnd();
            string n = responseFromServer;
            FileInfo f = new FileInfo(SourceFile); // Записываем потоком сюда. 
            StreamWriter w = f.CreateText();
            w.WriteLine(responseFromServer);
            w.Close();
            Console.WriteLine(responseFromServer);
            reader.Close();
            dataStream.Close();
            response.Close();
            System.Threading.Thread.Sleep(4000);
 
 
            string LogFile = "Mytext3.txt";
            string codecat = "code_cat";
            var txt = new StreamReader("Mytext2.txt");
            var text2 = txt.ReadToEnd();
            txt.Close();
            if (text2.Length > 1000 | text2.Length == 135)
                goto cycle;
            text2 = text2.Substring(text2.IndexOf(codecat));
            text2 = text2.Substring(0, text2.LastIndexOf(',') + 1);
            text2 = text2.Substring(text2.IndexOf(':') + 1);
            char[] MyChar = { ',' };
            char[] MyChar2 = { ':' };
            text2 = text2.TrimEnd(MyChar);
            FileInfo r = new FileInfo(LogFile); // Записываем потоком сюда. 
            StreamWriter x = r.CreateText();
            x.WriteLine(text2);
            x.Close(); // Общая запись. 
            outWorkSheet.Cells[U - 1, 4] = text2;
            WebRequest request2 = WebRequest.Create("https://www.zzap.ru/webservice/datasharing.asmx/GetStatPrices");
            request2.Method = "POST";
            string postData2 = "codes_cat=" + text2 + "&code_region=1" + "&instock=1" + "&wholesale=0" + "&" + key;
            Console.WriteLine(postData2);
            byte[] byteArray2 = Encoding.UTF8.GetBytes(postData2);
            request2.ContentType = "application/x-www-form-urlencoded";
            request2.ContentLength = byteArray2.Length;
            Stream dataStream2 = request2.GetRequestStream();
            dataStream2.Write(byteArray2, 0, byteArray2.Length);
            dataStream2.Close();
            WebResponse response2 = request2.GetResponse();
            System.Threading.Thread.Sleep(4000);
            Console.WriteLine(((HttpWebResponse)response2).StatusDescription);
            dataStream2 = response2.GetResponseStream();
            StreamReader reader2 = new StreamReader(dataStream2);
            string responseFromServer2 = reader2.ReadToEnd();
            string n2 = responseFromServer;
            FileInfo f2 = new FileInfo(SourceFile2); // Записываем потоком сюда. 
            StreamWriter w2 = f2.CreateText();
            w2.WriteLine(responseFromServer2);
            w2.Close();
            FileInfo f3 = new FileInfo(SourceFile2); // Записываем потоком сюда. 
            StreamWriter w3 = f3.CreateText();
            w3.WriteLine(responseFromServer2);
            w3.Close();
            FileInfo f4 = new FileInfo(SourceFile2); // Записываем потоком сюда. 
            StreamWriter w4 = f4.CreateText();
            w4.WriteLine(responseFromServer2);
            w4.Close();
            
 
            string minp = "min.txt";
            string medp = "med.txt";
            string maxp = "max.txt";
            string minprice = "price_min";
            string medprice = "price_med";
            string maxprice = "price_max";
            var txt2 = new StreamReader("prices.txt");
            var text3 = txt2.ReadToEnd();
            txt2.Close();
            if (text3.Length == 124) 
                goto cycle;
            text3 = text3.Substring(text3.IndexOf(minprice));
            text3 = text3.Substring(0, text3.LastIndexOf(',') + 1);
            text3 = text3.Substring(text3.IndexOf(':') + 1);
            text3 = text3.TrimEnd(MyChar);
            text3 = text3.Substring(0, text3.LastIndexOf(',') + 1);
            text3 = text3.TrimEnd(MyChar);
            string min = text3;
            FileInfo r2 = new FileInfo(minp); // Записываем потоком сюда. 
            StreamWriter x2 = r2.CreateText();
            x2.WriteLine(min);
            x2.Close(); // Общая запись. 
            var txt3 = new StreamReader("prices.txt");
            var text4 = txt3.ReadToEnd();
            txt3.Close();
            text4 = text4.Substring(text4.IndexOf(medprice));
            text4 = text4.Substring(0, text4.LastIndexOf(',') + 1);
            text4 = text4.TrimEnd(MyChar);
            text4 = text4.Substring(text4.IndexOf(":") + 1);
            text4 = text4.TrimEnd(MyChar2);
            string mid = text4;
            FileInfo r3 = new FileInfo(medp); // Записываем потоком сюда. 
            StreamWriter x3 = r3.CreateText();
            x3.WriteLine(mid);
            x3.Close(); // Общая запись.
            var txt4 = new StreamReader("prices.txt");
            var text5 = txt4.ReadToEnd();
            txt4.Close();
            text5 = text5.Substring(text5.IndexOf(maxprice));
            text5 = text5.Substring(text5.IndexOf(":") + 1);
            text5 = text5.Replace("}]}</string>", "");
            string max = text5;
            FileInfo r4 = new FileInfo(maxp); // Записываем потоком сюда. 
            StreamWriter x4 = r4.CreateText();
            x4.WriteLine(max);
            x4.Close(); // Общая запись. 
            outWorkSheet.Cells[U - 1, 6] = min;
            outWorkSheet.Cells[U - 1, 7] = mid;
            outWorkSheet.Cells[U - 1, 8] = max;
             // задержка между запросами на сервер. 
        cycle:
            System.Threading.Thread.Sleep(200); // задержка между запросами на сервер. 
 
            U++;
        }
        while (U < 9511);
    }
 
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы