internal List <string> ReturnImagesId(CookieContainer cookie, string url) { List <string> imagesTovar = new List <string>(); if (!url.Contains("nethouse")) { url = url.Replace("http://bike18.ru/", "http://bike18.nethouse.ru/"); } string otv = httpReq.PostRequest(cookie, url); if (otv != null) { string productId = new Regex("(?<=<section class=\"comment\" id=\").*?(?=\">)").Match(otv).ToString(); otv = httpReq.getRequest(cookie, "https://bike18.nethouse.ru/api/catalog/getproduct?id=" + productId); otv = httpReq.getRequest(cookie, "https://bike18.nethouse.ru/api/catalog/productmedia?id=" + productId); string objektId = new Regex("(?<=\"objectId\":\").*?(?=\")").Match(otv).Value; MatchCollection imagesStrTovat = new Regex("(?<=\"id\":\").*?(?=filters)").Matches(otv); if (imagesStrTovat.Count == 0) { imagesStrTovat = new Regex("(?<=\"id\":\").*?(?=})").Matches(otv); } foreach (Match str in imagesStrTovat) { if (str.ToString().Contains("type\":\"4\"") || str.ToString().Contains("type\":\"5\"")) { string s = str.ToString(); string imageId = new Regex("(?<=:\").*?(?=\",\"objectId)").Match(str.ToString()).ToString(); if (imageId == "") { imageId = new Regex(".*?(?=\",\"objectId\":\")").Match(str.ToString()).ToString(); } imagesTovar.Add(imageId); } } } return(imagesTovar); }
private void UpdateTovar() { CookieContainer cookie = nethouse.CookieNethouse(tbLogin.Text, tbPasswords.Text); if (cookie.Count == 1) { MessageBox.Show("Логин или пароль для сайта введены не верно", "Ошибка логина/пароля"); return; } string otv = httprequest.getRequest("https://bike18.ru/products/category/2180745?page=all"); MatchCollection tovar = new Regex("(?<=<div class=\"product-link -text-center\"><a href=\").*(?=\" >)").Matches(otv); lblVsegoRazdelov.Invoke(new Action(() => lblVsegoRazdelov.Text = tovar.Count.ToString())); for (int n = 0; tovar.Count > n; n++) { lblRazdel.Invoke(new Action(() => lblRazdel.Text = n.ToString())); string urlTovar = tovar[n].ToString(); if (urlTovar == "https://bike18.ru/products/pitbayk-bse-ph10mx-125-17-14" || urlTovar == "https://bike18.ru/products/pitbayk-bse-ssr-atom125") { continue; } List <string> tovarB18 = nethouse.GetProductList(cookie, urlTovar); string miniDescription = tovarB18[7]; MatchCollection spans = new Regex("<span.*?</span>").Matches(miniDescription); foreach (var s in spans) { string span = s.ToString(); if (span.Contains("Вступай в нашу ") || span.Contains("ДОСТАВКА") || span.Contains("КОНТАКТЕ") || span.Contains("КРЕДИТ") || span.Contains("Цена на ") || span.Contains("доставка") || span.Contains("гарантия") || span.Contains("скидку") || span.Contains("скидка") || span.Contains("ПОДАРОК") || span.Contains("+") || span.Contains("Цена")) { miniDescription = miniDescription.Replace(span, ""); } } var href = new Regex("<a.*?</a>").Matches(miniDescription); foreach (var s in href) { string span = s.ToString(); miniDescription = miniDescription.Replace(span, ""); } MatchCollection paragraphs = new Regex("<p.*?</p>").Matches(miniDescription); foreach (var s in paragraphs) { string span = s.ToString(); if (span.Contains("Вступай в нашу ") || span.Contains("ДОСТАВКА") || span.Contains("КОНТАКТЕ") || span.Contains("КРЕДИТ") || span.Contains("Цена на ") || span.Contains("доставка") || span.Contains("гарантия") || span.Contains("скидку") || span.Contains("скидка") || span.Contains("ПОДАРОК") || span.Contains("+") || span.Contains("Цена")) { miniDescription = miniDescription.Replace(span, ""); } } miniDescription = miniDescription.Replace("<p><br /></p>", "").Replace("</span></span>", "").Replace("<p></p>", "").Replace("</a>", ""); string fullText = tovarB18[8]; if (fullText.Contains("*****@*****.**")) { fullText = fullText.Replace("Звоните! Или пишите на почту [email protected]", ""); } tovarB18[7] = miniDescription; tovarB18[8] = fullText; nethouse.SaveTovar(cookie, tovarB18); } }
private void ActualSooters() { ControlsFormEnabledFalse(); CookieContainer cookieNethouse = nethouse.CookieNethouse(tbLogin.Text, tbPassword.Text); if (cookieNethouse.Count == 1) { MessageBox.Show("Логин или пароль для сайта Nethouse введены не верно", "Ошибка логина/пароля"); ControlsFormEnabledTrue(); return; } tbHistory.Invoke(new Action(() => tbHistory.AppendText("Авторизация пройдена\n"))); string otvAvtobest = webRequest.getRequestEncod("http://avtobest-moto.ru/?mc=sh&ct=2&ctype_moto=143&page=1"); string pagesStr = new Regex("(?<=Страницы:).*(?=</div>)").Match(otvAvtobest).ToString(); MatchCollection pages = new Regex("(?<=\">).*(?=</a>)").Matches(pagesStr); List <string> avtobest = new List <string>(); int i = -1; tbHistory.Invoke(new Action(() => tbHistory.AppendText("Получение товаров с сайта автобест\n"))); do { i++; if (i != 0) { otvAvtobest = webRequest.getRequestEncod("http://avtobest-moto.ru/?mc=sh&ct=2&ctype_moto=143&page=" + pages[i - 1].ToString()); } MatchCollection tableAvtobestTovar = new Regex("(?<=<tr>)[\\w\\W]*?(?=</tr>)").Matches(otvAvtobest); foreach (Match s in tableAvtobestTovar) { string str = s.ToString(); string art = new Regex("(?<=<td><span class=\"green\">).*?(?=</span>)").Match(str).ToString(); string url = new Regex("(?<=<td><a href=\").*(?=\">)").Match(str).ToString(); url = "http://avtobest-moto.ru" + url; string price = new Regex("(?<=class=\"red\"><b>).*(?= руб.</b>)").Match(str).ToString(); price = price.Replace(" ", ""); avtobest.Add(art + ";" + url + ";" + price); } } while (pages.Count > i); tbHistory.Invoke(new Action(() => tbHistory.AppendText("Товары с автобест обработаны\n"))); List <string> scooters = new List <string>(); string otv = webRequest.getRequest("https://bike18.ru/products/category/skutery-iz-yaponii?page=all"); MatchCollection product = new Regex("(?<=<a href=\").*(?=\"><div class=\"-relative item-image\")").Matches(otv); tbHistory.Invoke(new Action(() => tbHistory.AppendText("Получение товаров с сайта байк18\n"))); for (int n = 0; product.Count > n; n++) { string urlTovar = product[n].ToString(); List <string> listProduct = nethouse.GetProductList(cookieNethouse, urlTovar); string article = listProduct[6].ToString(); string priceB18 = listProduct[9].ToString(); bool b = false; string priceAB = ""; foreach (string str in avtobest) { string[] s = str.Split(';'); string articleAB = s[0].ToString(); priceAB = s[2].ToString(); if (article.Contains(articleAB)) { b = true; break; } if (!b) { nethouse.DeleteProduct(cookieNethouse, urlTovar); break; } } if (b) { scooters.Add(article); if (priceAB != "" && priceAB != priceB18) { UpdatePriceBike18(cookieNethouse, priceAB, listProduct); } } } tbHistory.Invoke(new Action(() => tbHistory.AppendText("Создание списка новых товаров\n"))); foreach (string str in avtobest) { List <string> final = new List <string>(); string[] s = str.Split(';'); string articleAB = s[0].ToString(); string urlAB = s[1].ToString(); bool b = false; foreach (string strB18 in scooters) { if (articleAB.Contains(strB18)) { b = true; break; } } if (!b) { final.Add(urlAB); files.fileWriterCSV(final, "scooters"); } } tbHistory.Invoke(new Action(() => tbHistory.AppendText("Файл с новыми товара находиться в папке с программой\n"))); ControlsFormEnabledTrue(); }