//private string baseUrl = "https://www.b2b-center.ru/"; public B2B(Tag inpTag, IRequest myReq) : base(myReq) { if (inpTag.ChildTags.Count != 4) { Exception e = new Exception("Unknown format! Must be contain 4 child Tags"); return; } foreach (Tag item in inpTag.LookForChildTag("a", false, new KeyValuePair <string, string>("class", "search-results-title visited"))) { if (item.Attributes.ContainsKey("href")) { LotNameUrl = item.Attributes["href"]; if (LotNameUrl.Contains("#btid=")) { LotNameUrl = LotNameUrl.Substring(0, LotNameUrl.LastIndexOf("#btid=")); } LotNameUrl = baseUrl + LotNameUrl; } foreach (Tag inItem in item.ChildTags) { if (inItem.IsProto & !inItem.IsComment) { LotNameStr = inItem.Value; break; } } } /* * LotNameUrl = inpTag.ChildTags[0].ChildTags[0].Attributes["href"]; * LotNameStr = inpTag.ChildTags[0].ChildTags[0].ChildTags[0].Value; */ if (LotNameStr.Contains("№")) { TorgType = LotNameStr.Substring(0, LotNameStr.IndexOf("№") - 1); } LotNumberStr = LotNameStr.Substring(LotNameStr.IndexOf("№") + 1).TrimEnd(); /* * try * { */ List <Tag> searchList = inpTag.LookForChildTag("div", false, new KeyValuePair <string, string>("class", "search-results-title-desc")); foreach (Tag item in searchList) { string tmpTorgName = ""; string tmpDescription = ""; foreach (Tag inItem in item.ChildTags) { if (inItem.IsProto & !inItem.IsComment) { tmpTorgName += inItem.Value; } else if (inItem.Name == "span") { foreach (Tag itemSp in inItem.LookForChildTag(null)) { if (itemSp.IsProto & !itemSp.IsComment) { tmpTorgName += itemSp.Value; } } } else if (inItem.Name == "div") { foreach (Tag itemSp in inItem.LookForChildTag(null)) { if (itemSp.IsProto & !itemSp.IsComment) { tmpDescription += itemSp.Value + " "; } } } } TorgName = tmpTorgName; Description = tmpDescription; } OrganizerStr = inpTag.ChildTags[1].ChildTags[0].ChildTags[0].Value; OrganizerUrl = baseUrl + inpTag.ChildTags[1].ChildTags[0].Attributes["href"]; DateAcceptStart = inpTag.ChildTags[2].ChildTags[0].Value; DateAcceptFinish = inpTag.ChildTags[3].ChildTags[0].Value; }
public RTSTender(Tag inpTag, IRequest myReq) : base(myReq) { MyInitialize(); string tmpStr = ""; string sepStr = " | "; foreach (Tag item in inpTag.LookForChildTag("div", true, new System.Collections.Generic.KeyValuePair <string, string>("class", "card-item__cell"))) { if (item.IsProto & !item.IsComment) { tmpStr += item.Value + sepStr; } else { foreach (Tag inItem in item.LookForChildTag(null)) { if (!inItem.IsComment) { tmpStr += inItem.Value + sepStr; } } } foreach (Tag inItem in item.LookForChildTag("span", true, new System.Collections.Generic.KeyValuePair <string, string>("class", "link"))) { if (inItem.Attributes.ContainsKey("onclick")) { if (inItem.Attributes["onclick"] != "") { NoteUrl = inItem.Attributes["onclick"].Replace("window.open(\"", "").Replace("\",\"_blank\")", ""); } } } } NoteUrl = baseUrl + NoteUrl.Replace(baseUrl, ""); tmpStr = tmpStr.Remove(tmpStr.LastIndexOf(sepStr)); NoteStr = tmpStr.Replace("\n", "").Replace("\t", ""); while (NoteStr.Contains(" ")) { NoteStr = NoteStr.Replace(" ", " "); } foreach (Tag item in inpTag.LookForChildTag("a", true, new System.Collections.Generic.KeyValuePair <string, string>("class", "button-red"))) { if (item.Attributes.ContainsKey("href")) { if (item.Attributes["href"] != "") { LotNameUrl = item.Attributes["href"]; } } } LotNameUrl = baseUrl + LotNameUrl.Replace(baseUrl, ""); foreach (Tag item in inpTag.LookForChildTag("div", true, new System.Collections.Generic.KeyValuePair <string, string>("class", "card-item__about"))) { foreach (Tag inItem in item.LookForChildTag("span", true, new System.Collections.Generic.KeyValuePair <string, string>("class", "link"))) { if (inItem.Attributes.ContainsKey("onclick")) { if (inItem.Attributes["onclick"] != "") { LotNumberUrl = inItem.Attributes["onclick"].Replace("window.open(\"", "").Replace("\",\"_blank\")", ""); } } foreach (Tag inInItem in inItem.LookForChildTag(null)) { if (!inInItem.IsComment) { LotNumberStr = inInItem.Value; } } } } LotNumberUrl = baseUrl + LotNumberUrl.Replace(baseUrl, ""); foreach (Tag item in inpTag.LookForChildTag("div", true, new System.Collections.Generic.KeyValuePair <string, string>("class", "card-item__title"))) { foreach (Tag inItem in item.LookForChildTag(null)) { if (!inItem.IsComment) { LotNameStr += inItem.Value + " "; } } } while (LotNameStr.Contains(" ")) { LotNameStr = LotNameStr.Replace(" ", " "); } foreach (Tag item in inpTag.LookForChildTag("div", true, new System.Collections.Generic.KeyValuePair <string, string>("class", "card-item__properties-name"))) { string caseSw = ""; foreach (Tag inItem in item.LookForChildTag(null)) { if (!inItem.IsComment) { caseSw += inItem.Value; } } string value = ""; foreach (Tag inItem in item.Parent.LookForChildTag("div", true, new System.Collections.Generic.KeyValuePair <string, string>("class", "card-item__properties-desc"))) { foreach (Tag inInItem in inItem.LookForChildTag(null)) { if (!inInItem.IsComment) { value += inInItem.Value; } } } while (value.Contains(" ")) { value = value.Replace(" ", " "); } switch (caseSw) { case "НАЧАЛЬНАЯ ЦЕНА": PriceStart = value; break; case "ОБЕСПЕЧЕНИЕ ЗАЯВКИ": GarantAcc = value; break; case "ОБЕСПЕЧЕНИЕ КОНТРАКТА": GarantContract = value; break; case "СТАТУС": Status = value; break; default: break; } } foreach (Tag item in inpTag.LookForChildTag("div", true, new System.Collections.Generic.KeyValuePair <string, string>("class", "card-item__info"))) { foreach (Tag inItem in item.LookForChildTag("time")) { if (inItem.Attributes.ContainsKey("itemprop")) { string value = ""; if (inItem.Attributes.ContainsKey("datetime")) { value = inItem.Attributes["datetime"]; } else { foreach (Tag inInItem in inItem.LookForChildTag(null)) { if (!inInItem.IsComment) { value += inInItem.Value; } } } switch (inItem.Attributes["itemprop"]) { case "availabilityStarts": DateAcceptStart = value; break; case "availabilityEnds": DateAcceptFinish = value; break; default: break; } } } } foreach (Tag item in inpTag.LookForChildTag("div", true, new System.Collections.Generic.KeyValuePair <string, string>("class", "card-item__organization"))) { string swValue = ""; foreach (Tag inItem in item.LookForChildTag("div", true, new System.Collections.Generic.KeyValuePair <string, string>("class", "card-item__organization-title"))) { foreach (Tag inInItem in inItem.LookForChildTag(null)) { if (!inInItem.IsComment) { swValue += inInItem.Value; } } } string url = ""; foreach (Tag inItem in item.LookForChildTag("a", true)) { if (inItem.Attributes.ContainsKey("href")) { url = inItem.Attributes["href"]; } } string value = ""; string adValue = ""; foreach (Tag inItem in item.LookForChildTag("div", true, new System.Collections.Generic.KeyValuePair <string, string>("class", "card-item__organization-main"))) { foreach (Tag inInItem in inItem.LookForChildTag("p")) { foreach (Tag inInInItem in inInItem.LookForChildTag(null)) { if (!inInInItem.IsComment) { value += inInInItem.Value + " "; } } } foreach (Tag inInItem in inItem.LookForChildTag("div", true, new System.Collections.Generic.KeyValuePair <string, string>("class", "content-address"))) { foreach (Tag inInInItem in inInItem.LookForChildTag(null)) { if (!inInInItem.IsComment) { adValue += inInInItem.Value + " "; } } } } switch (swValue) { case "ОРГАНИЗАТОР": OrganisatorStr = value; OrganisatorUrl = url; url = ""; break; case "ЗАКАЗЧИК": OrgAcceptStr = value; RegionStr = adValue.Replace("Адрес поставки:", ""); RegionUrl = url; url = ""; break; default: break; } } OrganisatorUrl = baseUrl + OrganisatorUrl.Replace(baseUrl, ""); RegionUrl = baseUrl + RegionUrl.Replace(baseUrl, ""); foreach (Tag item in inpTag.LookForChildTag("div", true, new System.Collections.Generic.KeyValuePair <string, string>("class", "card-content__row parent"))) { foreach (Tag inItem in item.LookForChildTag("table", true, new System.Collections.Generic.KeyValuePair <string, string>("class", "card-table"))) { Content = inItem.GetValue(); } } TableRowMeans = new string[] { LotNumberStr, LotNameStr, HTMLParser.ClearHtml(OrganisatorStr, true), HTMLParser.ClearHtml(OrgAcceptStr, true), HTMLParser.ClearHtml(RegionStr, true), HTMLParser.ClearHtml(PriceStart, true), DateAcceptStart, DateAcceptFinish, NoteStr, Content }; TableRowUrls = new string[] { baseUrl + LotNumberUrl.Replace(baseUrl, ""), baseUrl + LotNameUrl.Replace(baseUrl, ""), baseUrl + OrganisatorUrl.Replace(baseUrl, ""), "", baseUrl + RegionUrl.Replace(baseUrl, ""), "", "", "", baseUrl + NoteUrl.Replace(baseUrl, ""), "" }; }