Esempio n. 1
0
        private AllInfoHTMLPage GetEntryInfo(string propertyID)
        {
            AllInfoHTMLPage pages = new AllInfoHTMLPage();

            CookieContainer cookies;
            HttpWebRequest  request;
            HttpWebResponse response;

            string strUrl;
            string postData;

            try
            {
                //Navigate to property information tab
                strUrl                  = $"https://ares.sncoapps.us/Property/PropertyInformation?propertyId={ propertyID }";
                postData                = "";
                cookies                 = new CookieContainer();
                request                 = (HttpWebRequest)WebRequest.Create(strUrl);
                request.Method          = "GET";
                request.Accept          = "text/html";
                request.ContentType     = "application/x-www-form-urlencoded";
                request.ContentLength   = postData.Length;
                request.CookieContainer = cookies;
                request.Timeout         = Timeout.Infinite;
                request.UserAgent       = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36";
                response                = (HttpWebResponse)request.GetResponse();
                response.Cookies        = request.CookieContainer.GetCookies(request.RequestUri);
                var encoding       = new System.Text.UTF8Encoding();
                var responseReader = new StreamReader(response.GetResponseStream(), encoding, true);
                pages.PropertyInformation = $"<div class=\"Entry URL\">{ strUrl }</div>{ responseReader.ReadToEnd() }";
                response.Close();
                responseReader.Close();

                //Navigate to residential building data tab
                strUrl                  = $"https://ares.sncoapps.us/Property/ResidentialBuildingInformation?propertyId={ propertyID }";
                postData                = "";
                cookies                 = new CookieContainer();
                request                 = (HttpWebRequest)WebRequest.Create(strUrl);
                request.Method          = "GET";
                request.Accept          = "text/html";
                request.ContentType     = "application/x-www-form-urlencoded";
                request.ContentLength   = postData.Length;
                request.CookieContainer = cookies;
                request.Timeout         = Timeout.Infinite;
                request.UserAgent       = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36";
                response                = (HttpWebResponse)request.GetResponse();
                response.Cookies        = request.CookieContainer.GetCookies(request.RequestUri);
                encoding                = new System.Text.UTF8Encoding();
                responseReader          = new StreamReader(response.GetResponseStream(), encoding, true);
                pages.BuildingData      = responseReader.ReadToEnd();
                response.Close();
                responseReader.Close();


                if (pages.BuildingData.Contains("<strong>Error</strong> Data is Null."))
                {
                    //If residential building data tab is empty, navigate to commercial building data tab
                    strUrl                  = $"https://ares.sncoapps.us/Property/CommercialBuildingInformation?propertyId={ propertyID }";
                    postData                = "";
                    cookies                 = new CookieContainer();
                    request                 = (HttpWebRequest)WebRequest.Create(strUrl);
                    request.Method          = "GET";
                    request.Accept          = "text/html";
                    request.ContentType     = "application/x-www-form-urlencoded";
                    request.ContentLength   = postData.Length;
                    request.CookieContainer = cookies;
                    request.Timeout         = Timeout.Infinite;
                    request.UserAgent       = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36";
                    response                = (HttpWebResponse)request.GetResponse();
                    response.Cookies        = request.CookieContainer.GetCookies(request.RequestUri);
                    encoding                = new System.Text.UTF8Encoding();
                    responseReader          = new StreamReader(response.GetResponseStream(), encoding, true);
                    pages.BuildingData      = responseReader.ReadToEnd();
                    response.Close();
                    responseReader.Close();
                }

                //Navigate to tax information tab
                strUrl                  = $"https://ares.sncoapps.us/PropertyTax/TaxInformation?propertyId={ propertyID }";
                postData                = "";
                cookies                 = new CookieContainer();
                request                 = (HttpWebRequest)WebRequest.Create(strUrl);
                request.Method          = "GET";
                request.Accept          = "text/html";
                request.ContentType     = "application/x-www-form-urlencoded";
                request.ContentLength   = postData.Length;
                request.CookieContainer = cookies;
                request.Timeout         = Timeout.Infinite;
                request.UserAgent       = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36";
                response                = (HttpWebResponse)request.GetResponse();
                response.Cookies        = request.CookieContainer.GetCookies(request.RequestUri);
                encoding                = new System.Text.UTF8Encoding();
                responseReader          = new StreamReader(response.GetResponseStream(), encoding, true);
                pages.TaxInformation    = responseReader.ReadToEnd();
                response.Close();
                responseReader.Close();

                //Navigate to property tax tab
                pages.TaxRecordPDF = $"/Common/GetPropertyRecordCard{ Regex.Match(pages.PropertyInformation, "<a href=\"/Common/GetPropertyRecordCard(.*?)\" style=\"display:inline;\">").Groups[1].Value }";

                //Navigate to comparables tab
                strUrl                  = $"https://ares.sncoapps.us/Property/Comparables?propertyId={ propertyID }";
                postData                = "";
                cookies                 = new CookieContainer();
                request                 = (HttpWebRequest)WebRequest.Create(strUrl);
                request.Method          = "GET";
                request.Accept          = "text/html";
                request.ContentType     = "application/x-www-form-urlencoded";
                request.ContentLength   = postData.Length;
                request.CookieContainer = cookies;
                request.Timeout         = Timeout.Infinite;
                request.UserAgent       = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36";
                response                = (HttpWebResponse)request.GetResponse();
                response.Cookies        = request.CookieContainer.GetCookies(request.RequestUri);
                encoding                = new System.Text.UTF8Encoding();
                responseReader          = new StreamReader(response.GetResponseStream(), encoding, true);
                pages.Comparables       = responseReader.ReadToEnd();
                response.Close();
                responseReader.Close();
            }
            catch (Exception e)
            {
                MessageBox.Show($"Error occured when fetching webpage for QuickRef:R{ propertyID }{ NewLine }{ e.Message }");
                throw e;
            }
            return(pages);
        }
Esempio n. 2
0
        public Entry ParseEntries(AllInfoHTMLPage pages)
        {
            try
            {
                Entry entry = new Entry();

                //Parse Personal Information
                var doc = new HtmlAgilityPack.HtmlDocument();
                doc.LoadHtml(pages.PropertyInformation);
                var divNodes = doc.DocumentNode.SelectNodes(".//div");
                for (int i = 0; i < divNodes.Count - 1; i++)
                {
                    if (divNodes[i].OuterHtml.Contains("Entry URL"))
                    {
                        entry.PropertyUrl = divNodes[i].InnerText;
                    }
                    if (divNodes[i].InnerHtml.Contains("Parcel Id") && divNodes[i].InnerHtml.Length < 50)
                    {
                        entry.ParcelID = removeHTMLChars(divNodes[i + 1].InnerText);
                    }
                    if (divNodes[i].InnerHtml.Contains("Property Address") && divNodes[i].InnerHtml.Length < 50)
                    {
                        entry.Address = removeHTMLChars(divNodes[i + 1].InnerText);
                    }
                    if (divNodes[i].InnerHtml.Contains("Owner") && divNodes[i].InnerHtml.Length < 50)
                    {
                        entry.Owner = removeHTMLChars(divNodes[i + 1].InnerText);
                    }
                    if (divNodes[i].InnerHtml.Contains("Mailing Address") && divNodes[i].InnerHtml.Length < 50)
                    {
                        entry.MailingAddress = removeHTMLChars(divNodes[i + 1].InnerText);
                    }
                    if (divNodes[i].InnerHtml.Contains("Neighborhood") && divNodes[i].InnerHtml.Length < 50)
                    {
                        entry.Neighborhood = removeHTMLChars(divNodes[i + 1].InnerText);
                    }
                    if (divNodes[i].InnerHtml.Contains("Subdivision") && divNodes[i].InnerHtml.Length < 50)
                    {
                        entry.Subdivision = removeHTMLChars(divNodes[i + 1].InnerText);
                    }
                    if (divNodes[i].InnerHtml.Contains("Appraised Value") && divNodes[i].OuterHtml.Contains("visible-xs hidden-sm visible-md hidden-lg visible-xl"))
                    {
                        entry.CurrAppraisalValue = removeHTMLChars(divNodes[i + 1].InnerText);
                    }
                }

                string tbl    = doc.DocumentNode.SelectSingleNode("//table[@class='table table-striped text-center nomargin-bottom']").OuterHtml;
                var    tblDoc = new HtmlAgilityPack.HtmlDocument();
                tblDoc.LoadHtml(tbl);
                entry.PropertyClass = removeHTMLChars(tblDoc.DocumentNode.SelectSingleNode("//td").InnerText);

                //Parse Building Data
                if (!pages.BuildingData.Contains("<strong>Error</strong> Data is Null."))
                {
                    var bdDoc = new HtmlAgilityPack.HtmlDocument();
                    bdDoc.LoadHtml(pages.BuildingData);
                    var bdNodes = bdDoc.DocumentNode.SelectNodes(".//div");

                    for (int i = 0; i < bdNodes.Count - 1; i++)
                    {
                        if (bdNodes[i].OuterHtml.Contains("Bedrooms") && bdNodes[i].InnerHtml.Length < 50)
                        {
                            entry.BedRooms = Convert.ToInt32(removeHTMLChars(bdNodes[i + 1].InnerText));
                        }
                        if (bdNodes[i].InnerHtml.Contains("Fullbaths") && bdNodes[i].InnerHtml.Length < 50)
                        {
                            entry.FullBaths = Convert.ToInt32(removeHTMLChars(bdNodes[i + 1].InnerText));
                        }
                        if (bdNodes[i].InnerHtml.Contains("Halfbaths") && bdNodes[i].InnerHtml.Length < 50)
                        {
                            entry.HalfBaths = Convert.ToInt32(removeHTMLChars(bdNodes[i + 1].InnerText));
                        }
                        if (bdNodes[i].InnerHtml.Contains("Family Rooms") && bdNodes[i].InnerHtml.Length < 50)
                        {
                            entry.FamilyRooms = Convert.ToInt32(removeHTMLChars(bdNodes[i + 1].InnerText));
                        }
                        if (bdNodes[i].InnerHtml.Contains("Living Area (Abv. Grade)") && bdNodes[i].InnerHtml.Length < 100)
                        {
                            entry.LivingArea = removeHTMLChars(bdNodes[i + 1].InnerText);
                        }
                        if (bdNodes[i].InnerHtml.Contains("Ground Floor Ar.") && bdNodes[i].InnerHtml.Length < 100)
                        {
                            entry.GroundFlrArea = removeHTMLChars(bdNodes[i + 1].InnerText);
                        }
                        if (bdNodes[i].InnerHtml.Contains("Finished/Rec Bsmt Area") && bdNodes[i].InnerHtml.Length < 50)
                        {
                            entry.BasementArea = removeHTMLChars(bdNodes[i + 1].InnerText);
                        }
                        if (bdNodes[i].InnerHtml.Contains("Upper Floor Area") && bdNodes[i].InnerHtml.Length < 50)
                        {
                            entry.UpperFlrArea = removeHTMLChars(bdNodes[i + 1].InnerText);
                        }
                        if (bdNodes[i].InnerHtml.Contains("Year Built") && bdNodes[i].InnerHtml.Length < 50)
                        {
                            entry.YearBuilt = removeHTMLChars(bdNodes[i + 1].InnerText);
                        }
                        if (bdNodes[i].InnerHtml.Contains("Style") && bdNodes[i].InnerHtml.Length < 50)
                        {
                            entry.Style = removeHTMLChars(bdNodes[i + 1].InnerText);
                        }
                        if (bdNodes[i].InnerHtml.Contains("Foundation") && bdNodes[i].InnerHtml.Length < 50)
                        {
                            entry.Foundation = removeHTMLChars(bdNodes[i + 1].InnerText);
                        }
                        if (bdNodes[i].InnerHtml.Contains("Basement Type") && bdNodes[i].InnerHtml.Length < 50)
                        {
                            entry.BasementType = removeHTMLChars(bdNodes[i + 1].InnerText);
                        }
                        if (bdNodes[i].InnerHtml.Contains("Last Remodel") && bdNodes[i].InnerHtml.Length < 50)
                        {
                            entry.LastRemodel = removeHTMLChars(bdNodes[i + 1].InnerText);
                        }
                        if (bdNodes[i].InnerHtml.Contains("Con. Quality") && bdNodes[i].OuterHtml.Contains("hidden-xs visible-sm hidden-md visible-lg hidden-xl") && bdNodes[i].InnerHtml.Length < 100)
                        {
                            entry.ConstructionQuality = removeHTMLChars(bdNodes[i + 1].InnerText);
                        }
                        if (bdNodes[i].InnerHtml.Contains("Phys. Condition") && bdNodes[i].OuterHtml.Contains("hidden-xs visible-sm hidden-md hidden-lg hidden-xl") && bdNodes[i].InnerHtml.Length < 100)
                        {
                            entry.PhysicalCondition = removeHTMLChars(bdNodes[i + 1].InnerText);
                        }
                        if (bdNodes[i].InnerHtml.Contains("CDU") && bdNodes[i].OuterHtml.Contains("fa fa-question-circle title-popover") && bdNodes[i].InnerHtml.Length < 600)
                        {
                            entry.CDU = removeHTMLChars(bdNodes[i + 1].InnerText);
                        }
                    }
                }

                //Parse Tax Information
                if (!pages.TaxInformation.Contains("<strong>Error</strong> Data is Null."))
                {
                    var tiDoc = new HtmlAgilityPack.HtmlDocument();
                    tiDoc.LoadHtml(pages.TaxInformation);
                    var tiNodes = tiDoc.DocumentNode.SelectNodes(".//div");
                    for (int i = 0; i < tiNodes.Count - 1; i++)
                    {
                        if (tiNodes[i].InnerHtml.Contains("Tax:") && tiNodes[i].OuterHtml.Contains("class=\"col-xs-6\">20") && tiNodes[i].InnerHtml.Length < 100)
                        {
                            entry.PrevYearTax = removeHTMLChars(tiNodes[i + 1].InnerText);
                        }
                        if (tiNodes[i].OuterHtml.Contains("style=\"padding-right:15px;\">Total:") && tiNodes[i].InnerHtml.Length < 100)
                        {
                            entry.TotalCurrentBalance = removeHTMLChars(tiNodes[i + 1].InnerText);
                        }
                    }
                }

                ///Parse Link of Tax Record PDF
                if (pages.TaxRecordPDF != "")
                {
                    entry.TaxRecordPDF = $"https://ares.sncoapps.us{ pages.TaxRecordPDF }";
                }

                return(entry);
            }
            catch (Exception e)
            {
                MessageBox.Show($"Error occured when parsing Property Information{ NewLine }{ e.Message }");
                throw e;
            }
        }