Beispiel #1
0
        //public static string GetRegions()
        //{

        //}

        //Возвращает json представляющий список всех  доступных населенных пунктов
        public static string GetCities()
        {
            WebQuery     avito       = new WebQuery();
            string       regionsHtml = avito.GET("https://www.avito.ru/js/locations?_=bd26ca8");
            HtmlDocument document    = new HtmlDocument();

            document.LoadHtml(regionsHtml);
            HtmlNodeCollection regionCollection = document.DocumentNode.SelectNodes("//select/option");
            List <AvitoRegion> regionsList      = new List <AvitoRegion>();

            for (int i = 1; i < regionCollection.Count; i++)
            {
                regionsList.Add(new AvitoRegion(Convert.ToInt32(regionCollection[i].Attributes[0].Value), regionCollection[i].InnerText));
            }
            List <AvitoCity> Cities = new List <AvitoCity>();

            foreach (AvitoRegion reg in regionsList)
            {
                string    jsonRegionCities = avito.GET("https://www.avito.ru/js/locations?json=true&id=" + reg.id + "&_=bd26ca8");
                AvitoCity regionCities     = new AvitoCity();
                dynamic   obj = JsonConvert.DeserializeObject(jsonRegionCities);
                foreach (var cityJson in obj)
                {
                    regionCities.id                = Convert.ToInt32(cityJson["id"].Value);
                    regionCities.name              = cityJson["name"].Value;
                    regionCities.parentId          = Convert.ToInt32(cityJson["parentId"].Value);
                    regionCities.metroMap          = cityJson["metroMap"].Value;
                    regionCities.namePrepositional = cityJson["namePrepositional"].Value;
                    Cities.Add(regionCities);
                }
            }
            string jsonAllCities = JsonConvert.SerializeObject(Cities);

            return(jsonAllCities);
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            WebHeaderCollection Header = new WebHeaderCollection();

            Header.Add(HttpRequestHeader.UserAgent, "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0");
            Header.Add(HttpRequestHeader.Accept, "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
            Header.Add(HttpRequestHeader.AcceptLanguage, "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3");
            //Header.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate, br");
            Header.Add(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded");
            Header.Add(HttpRequestHeader.Referer, "https://www.google.ru");

            WebQuery avito = new WebQuery();

            avito.Headers = Header;
            avito.GET("https://www.avito.ru");
            string       kvartiry           = avito.GET("https://www.avito.ru" + avito.ResponceUri.AbsolutePath + "/" + "kvartiry");
            HtmlDocument hiddenFieldsString = new HtmlDocument();

            hiddenFieldsString.LoadHtml(kvartiry);

            NameValueCollection filter = new NameValueCollection();
            string sField          = hiddenFieldsString.DocumentNode.SelectSingleNode("//input[@name='s']").GetAttributeValue("value", "101");
            string tokenValueField = hiddenFieldsString.DocumentNode.SelectSingleNode("//input[@class='js-token']").GetAttributeValue("value", "0");
            string tokenNameField  = hiddenFieldsString.DocumentNode.SelectSingleNode("//input[@class='js-token']").GetAttributeValue("name", "token[0]");
            string sgtdField       = hiddenFieldsString.DocumentNode.SelectSingleNode("//input[@name='sgtd']").GetAttributeValue("value", "");

            filter.Add("s", sField);
            //filter.Add(Ke)
            filter.Add(tokenNameField, tokenValueField);
            filter.Add("sgtd", sgtdField);
            filter.Add("category_id", "24");
            filter.Add("location_id", "637640");//"641780"
            filter.Add("name", "");
            filter.Add("params[201]", "");
            filter.Add("pmin", "");
            filter.Add("pmax", "");
            filter.Add("bt", "on");
            string filt      = avito.GetPostBody(filter);
            string aprtments = avito.POST("https://www.avito.ru/search", filter);
            Avito  av        = new Avito();

            //av.SetFilter("Квартиры");
            av.Query.Headers = Header;
            string w = av.GetFilterParams(24);

            av.Filter.Add("category_id", "24");
            av.Filter.Add("location_id", "641780");
            av.Filter.Add("name", "");
            av.Filter.Add("params[201]", "");
            av.Filter.Add("pmin", "");
            av.Filter.Add("pmax", "");

            string       filt1      = av.Query.GetPostBody(av.Filter.Params);
            string       aprtments1 = avito.POST("https://www.avito.ru/search", av.Filter.Params);
            HtmlDocument pages      = new HtmlDocument();

            pages.LoadHtml(aprtments1);
            int pageNumber = 0;
            HtmlNodeCollection maxPageNumber = pages.DocumentNode.SelectNodes("//a[@class='pagination-page']");

            pageNumber = maxPageNumber.Count == 0 ? 1 :Convert.ToInt32(Regex.Match(maxPageNumber[maxPageNumber.Count - 1].GetAttributeValue("href", "1"), @"(?<=[\s\S]*?p=)[\s\S]+").Value);
            string p2 = avito.GET(avito.ResponceUri + "?p=2");

            //for (int i=1;i<=)
        }
Beispiel #3
0
 public Avito()
 {
     Query  = new WebQuery();
     Filter = new CommonFilter();
 }