Exemplo n.º 1
0
        public void ScrapeData(string CategoryName = "Men's Fashion", string Search_Url = "slicer", string Search_sold = "500")
        {
            try
            {
                //Declaration of Variables

                var                 Message          = "";
                ItemsName           items            = new ItemsName();
                SellerNameScrape    sellerNameScrape = new SellerNameScrape();
                List <string>       NameProducts     = new List <string>();
                List <string>       sellerName       = new List <string>();
                List <string>       prodListFromEbay = new List <string>();
                List <string>       NewProducts      = new List <string>();
                IList <IWebElement> namesList;
                IList <IWebElement> location;
                IList <IWebElement> soldList;

                //Open CHromium and Get First Values

                driver     = new ChromeDriver(@"c:/");
                driver.Url = Search_Url;
                driver.Manage().Window.Maximize();
                driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);

                //Initialize IWEBELEMENTS variables

                //driver.FindElement(By.Id("search-key")).SendKeys(Search_Value + OpenQA.Selenium.Keys.Enter);

                namesList = driver.FindElements(By.ClassName("item-title"));
                soldList  = driver.FindElements(By.XPath("//*[@id='root']/div/div/div[2]/div[2]/div/div[2]/ul/div/li/div/div/div/div/div/span/a"));

                var numb       = 1;
                var listNumber = 1;


                if (soldList.Count != 0)
                {
                    //Select all Values of Sold List Items

                    for (int i = 0; i < namesList.Count; i++)
                    {
                        driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(2);
                        var curr  = ((IJavaScriptExecutor)driver).ExecuteScript("return window.pageYOffset;").ToString();
                        var curr1 = Int32.Parse(curr);
                        ((IJavaScriptExecutor)driver).ExecuteScript("window.scrollTo(" + curr1 + "," + (curr1 + 700) + ")");
                        namesList = driver.FindElements(By.ClassName("item-title"));
                        soldList  = driver.FindElements(By.XPath("//*[@id='root']/div/div/div[2]/div[2]/div/div[2]/ul/div/li/div/div/div/div/div/span/a"));
                    }
                    driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
                    ExpectedConditions.InvisibilityOfElementLocated(By.ClassName("total-page"));
                    string page_count = driver.FindElement(By.ClassName("total-page")).Text;

                    //Find page number from List
                    string c = string.Empty;
                    var    totalPageNumber = 1.00;

                    for (int i = 0; i < page_count.Length; i++)
                    {
                        if (Char.IsDigit(page_count[i]))
                        {
                            c += page_count[i];
                        }
                    }

                    if (c.Length > 0)
                    {
                        totalPageNumber = Int32.Parse(c);
                    }


                    //Check first Condition if user add sold item value and get all items list from Ali Express

                    for (int ipage_iterator = 1; ipage_iterator <= totalPageNumber; ipage_iterator++)
                    {
                        for (int s = 0; s < soldList.Count; s++)
                        {
                            if (ipage_iterator > 1)
                            {
                                for (var page_loader = 0; page_loader < namesList.Count; page_loader++)
                                {
                                    var curr  = ((IJavaScriptExecutor)driver).ExecuteScript("return window.pageYOffset;").ToString();
                                    var curr1 = Int32.Parse(curr);
                                    ((IJavaScriptExecutor)driver).ExecuteScript("window.scrollTo(" + curr1 + "," + (curr1 + 700) + ")");
                                    namesList = driver.FindElements(By.ClassName("item-title"));
                                    soldList  = driver.FindElements(By.XPath("//*[@id='root']/div/div/div[2]/div[2]/div/div[2]/ul/div/li/div/div/div/div/div/span/a"));
                                }
                            }

                            ////Console.WriteLine(namesList[i].Text);
                            //soldList = driver.FindElements(By.XPath("sale-value-link"));
                            var soldValue  = soldList[s].Text;
                            var soldValue1 = soldValue.ToString();

                            //Find Number from string

                            string b            = string.Empty;
                            var    intValueSold = 1.00;

                            for (int i = 0; i < soldValue1.Length; i++)
                            {
                                if (Char.IsDigit(soldValue1[i]))
                                {
                                    b += soldValue1[i];
                                }
                            }

                            if (b.Length > 0)
                            {
                                intValueSold = Int32.Parse(b);
                            }

                            var ValueFromInput = Int32.Parse(Search_sold);

                            //ValueFromInput given by User

                            if (intValueSold >= ValueFromInput)
                            {
                                IWebElement ValueName = driver.FindElement(By.XPath("//*[@id='root']/div/div/div[2]/div[2]/div/div[2]/ul/div[" + numb + "]/li[" + listNumber + "]/div/div[2]/div/div[1]/a"));
                                string      urlOFItem = driver.FindElement(By.XPath("//*[@id='root']/div/div/div[2]/div[2]/div/div[2]/ul/div[" + numb + "]/li[" + listNumber + "]/div/div[2]/div/div[1]/a")).GetAttribute("href");

                                var ITemsNameFromALiEx       = ValueName.Text.ToString();
                                List <Brand_Table> listBrand = model.Brand_Table.ToList();

                                if (listBrand.Count != 0)
                                {
                                    var h = true;
                                    foreach (var it in listBrand)
                                    {
                                        string BrandWord = it.Brand_Name;
                                        h = ITemsNameFromALiEx.Contains(BrandWord);
                                        if (h == true)
                                        {
                                            break;
                                        }
                                    }
                                    if (h == false)
                                    {
                                        var n = s;
                                        listNumber = (n % 4) + 1;
                                        numb       = (n / 4) + 1;

                                        //Get specific element name given by user

                                        numb = (s / 4) + 1;

                                        var listLength = namesList.Count;
                                        //namesList.Append(ValueName);

                                        //Save names in List Items of string
                                        NewProducts.Add(ValueName.Text.ToString());
                                        items.ItemsName1   = ValueName.Text;
                                        items.ItemUrl      = urlOFItem.ToString();
                                        items.ScrapID      = Convert.ToInt32(RecentID());
                                        items.CategoryName = CategoryName;
                                        //Save all Item names in DataBase

                                        model.ItemsNames.Add(items);
                                        model.SaveChanges();
                                    }
                                    else
                                    {
                                        continue;
                                    }
                                }
                                else
                                {
                                    var n = s;
                                    listNumber = (n % 4) + 1;
                                    numb       = (n / 4) + 1;

                                    //Get specific element name given by user

                                    numb = (s / 4) + 1;

                                    var listLength = namesList.Count;
                                    //namesList.Append(ValueName);

                                    //Save names in List Items of string
                                    NewProducts.Add(ValueName.Text.ToString());
                                    items.ItemsName1   = ValueName.Text;
                                    items.ItemUrl      = urlOFItem.ToString();
                                    items.ScrapID      = RecentID();
                                    items.CategoryName = CategoryName;
                                    //Save all Item names in DataBase

                                    model.ItemsNames.Add(items);
                                    model.SaveChanges();
                                    //listNumber++;
                                }
                            }
                        }
                        NameProducts.AddRange(NewProducts);

                        driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
                        ExpectedConditions.InvisibilityOfElementLocated(By.XPath("//*[@id='root']/div/div/div[2]/div[2]/div/div[3]/div/div[1]/div/button[2]"));
                        driver.FindElement(By.XPath("//*[@id='root']/div/div/div[2]/div[2]/div/div[3]/div/div[1]/div/button[2]")).SendKeys(OpenQA.Selenium.Keys.Enter);
                    }

                    //Check values of all getting values

                    var total       = namesList.Count;
                    var totalSolids = soldList.Count;
                    var listCount   = NameProducts.Count;

                    if (listCount != 0)
                    {
                        MessageBox.Show("List is Full", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        MessageBox.Show("List is Empty", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }


                    //Start chromium for Ebay
                    driver.Url = "https://www.ebay.com/";
                    driver.Manage().Window.Minimize();
                    driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
                    if (listCount != 0)
                    {
                        //Search and Gets all Products one by one from list

                        for (int i = 0; i < NameProducts.Count; i++)
                        {
                            //var name = namesList[i].Text;

                            var    name       = NameProducts[i].ToString();
                            var    WordsArray = name.Split();
                            string Items      = WordsArray[0] + ' ' + WordsArray[1] + ' ' + WordsArray[2];
                            //IEnumerable<string> words = name.Split(new char[] { ' ' }, 2).Take(5);
                            driver.FindElement(By.Id("gh-ac")).SendKeys(Items + OpenQA.Selenium.Keys.Enter);
                            location = driver.FindElements(By.ClassName("s-item__location"));

                            //Gets locations of the values given in products search

                            for (int j = 0; j < location.Count; j++)
                            {
                                var curr  = ((IJavaScriptExecutor)driver).ExecuteScript("return window.pageYOffset;").ToString();
                                var curr1 = Int32.Parse(curr);
                                ((IJavaScriptExecutor)driver).ExecuteScript("window.scrollTo(" + curr1 + "," + (curr1 + 900) + ")");
                                location = driver.FindElements(By.ClassName("s-item__location"));
                            }
                            var locationItem = location.Count;

                            //Check locations value

                            for (int k = 0; k < location.Count; k++)
                            {
                                var curr  = ((IJavaScriptExecutor)driver).ExecuteScript("return window.pageYOffset;").ToString();
                                var curr1 = Int32.Parse(curr);
                                ((IJavaScriptExecutor)driver).ExecuteScript("window.scrollTo(" + curr1 + "," + (curr1 + 900) + ")");
                                //Console.WriteLine(location[k].Text);
                                location = driver.FindElements(By.ClassName("s-item__location"));
                                var locationName = location[k].Text;
                                locationName.ToString();
                                var num = k + 1;
                                if (locationName == "From China" || locationName == "De China")
                                {
                                    try
                                    {
                                        var productUrl = driver.FindElement(By.XPath("//*[@id='srp-river-results']/ul/li[" + num + "]/div/div[2]/a")).GetAttribute("href");
                                        driver.FindElement(By.XPath("//*[@id='srp-river-results']/ul/li[" + num + "]/div/div[2]/a")).Click();
                                        var productName = driver.FindElement(By.Id("itemTitle")).Text;
                                        productName = productName.ToString();

                                        prodListFromEbay.Add(productName);
                                        ProductsFromEbay.ProductsName = productName;
                                        ProductsFromEbay.ProductURL   = productUrl.ToString();
                                        ProductsFromEbay.ScrapID      = RecentID();

                                        model.ProductsFromEbays.Add(ProductsFromEbay);
                                        model.SaveChanges();



                                        driver.FindElement(By.ClassName("mbg-nw")).Click();
                                        //*[@id="RightSummaryPanel"]/div[3]/div/div/div/div[1]/div[1]/a
                                        var locationOfSeller  = driver.FindElement(By.ClassName("mem_loc"));
                                        var TextSeller        = locationOfSeller.Text;
                                        var locationOfSellers = TextSeller.ToString();

                                        //Check seller is not from China

                                        if (locationOfSellers != "China")
                                        {
                                            IWebElement SellerName1 = driver.FindElement(By.ClassName("mbg-id"));
                                            string      sellerUrl   = driver.FindElement(By.ClassName("mbg-id")).GetAttribute("href");
                                            sellerName.Add(SellerName1.Text);
                                            sellerNameScrape.SellerName = SellerName1.Text;
                                            sellerNameScrape.SellerUrl  = sellerUrl.ToString();
                                            sellerNameScrape.ScrapID    = RecentID();

                                            //Add Seler name in DataBase

                                            model.SellerNameScrapes.Add(sellerNameScrape);
                                            model.SaveChanges();
                                        }
                                        driver.Navigate().Back();
                                        driver.Navigate().Back();
                                    }
                                    catch (Exception ex)
                                    {
                                        MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                    }
                                }
                            }

                            driver.Url = "https://www.ebay.com/";
                        }
                    }
                    else
                    {
                        Message = "There are no Items in list which is greator than " + Search_sold;
                    }
                    if (prodListFromEbay.Count != 0)
                    {
                        MessageBox.Show("Products are Exist in List Kindly Take All in Excel Sheet", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        MessageBox.Show("List is Empty", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    driver.Quit();
                }
                else
                {
                    Message = "Given Products have value 0";
                }
            }  catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Exemplo n.º 2
0
        public ActionResult Index1(string Search_Value, string Search_sold = "")
        {
            //Declaration of Variables
            var                 Message          = "";
            ItemsName           items            = new ItemsName();
            SellerNameScrape    sellerNameScrape = new SellerNameScrape();
            List <string>       NameProducts     = new List <string>();
            List <string>       sellerName       = new List <string>();
            IList <IWebElement> namesList;
            IList <IWebElement> ItemSList;
            IList <IWebElement> location;
            IList <IWebElement> SellerList;
            IList <IWebElement> soldList;

            //Open CHromium and Get First Values
            IWebDriver driver = new ChromeDriver(@"c:/");

            driver.Url = "https://www.aliexpress.com/";
            driver.Manage().Window.Minimize();
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);

            //Initialize IWEBELEMENTS variables
            driver.FindElement(By.Id("search-key")).SendKeys(Search_Value + Keys.Enter);
            ((IJavaScriptExecutor)driver).ExecuteScript("window.scrollTo(0,1080)");
            namesList = driver.FindElements(By.ClassName("item-title"));
            soldList  = driver.FindElements(By.XPath("//*[@id='root']/div/div/div[2]/div[2]/div/div[2]/ul/div/li/div/div/div/div/div/span/a"));

            //*[@id="root"]/div/div/div[2]/div[2]/div/div[2]/ul/div[2]/li[1]/div/div[2]/div/div[7]/div/span/a
            ((IJavaScriptExecutor)driver).ExecuteScript("window.scrollTo(0,1080)");
            var numb       = 1;
            var listNumber = 1;

            ((IJavaScriptExecutor)driver).ExecuteScript("window.scrollTo(0,1080)");

            if (soldList.Count != 0)
            {
                //Select all Values of Sold List Items
                for (int i = 0; i < namesList.Count; i++)
                {
                    driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
                    var curr  = ((IJavaScriptExecutor)driver).ExecuteScript("return window.pageYOffset;").ToString();
                    var curr1 = Int32.Parse(curr);
                    ((IJavaScriptExecutor)driver).ExecuteScript("window.scrollTo(" + curr1 + "," + (curr1 + 900) + ")");
                    Console.WriteLine(namesList[i].Text);
                    namesList = driver.FindElements(By.ClassName("item-title"));
                    soldList  = driver.FindElements(By.XPath("//*[@id='root']/div/div/div[2]/div[2]/div/div[2]/ul/div/li/div/div/div/div/div/span/a"));
                }
                ((IJavaScriptExecutor)driver).ExecuteScript("window.scrollTo(0,1080)");
                //Check first Condition if user add sold item value and get all items list from Ali Express
                for (int s = 0; s < soldList.Count; s++)
                {
                    var curr  = ((IJavaScriptExecutor)driver).ExecuteScript("return window.pageYOffset;").ToString();
                    var curr1 = Int32.Parse(curr);
                    ((IJavaScriptExecutor)driver).ExecuteScript("window.scrollTo(" + curr1 + "," + (curr1 + 900) + ")");
                    //Console.WriteLine(namesList[i].Text);
                    //soldList = driver.FindElements(By.XPath("sale-value-link"));
                    var soldValue  = soldList[s].Text;
                    var soldValue1 = soldValue.ToString();

                    //Find Number from string
                    string b            = string.Empty;
                    var    intValueSold = 1.00;

                    for (int i = 0; i < soldValue1.Length; i++)
                    {
                        if (Char.IsDigit(soldValue1[i]))
                        {
                            b += soldValue1[i];
                        }
                    }

                    if (b.Length > 0)
                    {
                        intValueSold = Int32.Parse(b);
                    }

                    var ValueFromInput = Int32.Parse(Search_sold);

                    //ValueFromInput given by User
                    if (intValueSold >= ValueFromInput)
                    {
                        if (listNumber > 4)
                        {
                            numb++;
                            listNumber = 1;
                        }
                        //Get specific element name given by user
                        IWebElement ValueName = driver.FindElement(By.XPath("//*[@id='root']/div/div/div[2]/div[2]/div/div[2]/ul/div[" + numb + "]/li[" + listNumber + "]/div/div[2]/div/div[1]/a"));
                        numb = (s / 4) + 1;

                        var listLength = namesList.Count;
                        //namesList.Append(ValueName);

                        //Save names in List Items of string
                        NameProducts.Add(ValueName.Text);
                        items.ItemsName1 = ValueName.Text;

                        //Save all Item names in DataBase
                        model.ItemsNames.Add(items);
                        model.SaveChanges();
                        listNumber++;
                    }
                }



                //*[@id="root"]/div/div/div[2]/div[2]/div/div[2]/ul/div[1]/li[1]/div/div[2]/div/div[1]/a
                //*[@id="root"]/div/div/div[2]/div[2]/div/div[2]/ul/div[1]/li[2]/div/div[2]/div/div[1]/a
                //*[@id="root"]/div/div/div[2]/div[2]/div/div[2]/ul/div[2]/li[1]/div/div[2]/div/div[1]/a
                //*[@id="root"]/div/div/div[2]/div[2]/div/div[2]/ul/div[3]/li[1]/div/div[2]/div/div[1]/a
                //*[@id="root"]/div/div/div[2]/div[2]/div/div[2]/ul/div[15]/li[1]/div/div[2]/div/div[1]/a


                //Check values of all getting values
                var total       = namesList.Count;
                var totalSolids = soldList.Count;
                var listCount   = NameProducts.Count;

                //Start chromium for Ebay
                IWebDriver driver1 = new ChromeDriver(@"c:/");
                driver1.Url = "https://www.ebay.com/";
                driver1.Manage().Window.Minimize();
                driver1.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);

                //Search and Gets all Products one by one from list
                for (int i = 0; i < NameProducts.Count; i++)
                {
                    //var name = namesList[i].Text;
                    var    name       = NameProducts[i].ToString();
                    var    WordsArray = name.Split();
                    string Items      = WordsArray[0] + ' ' + WordsArray[1] + ' ' + WordsArray[2] + ' ' + WordsArray[3];
                    //IEnumerable<string> words = name.Split(new char[] { ' ' }, 2).Take(5);
                    driver1.FindElement(By.Id("gh-ac")).SendKeys(Items + Keys.Enter);
                    location = driver1.FindElements(By.ClassName("s-item__location"));
                    //Gets locations of the values given in products search
                    for (int j = 0; j < location.Count; j++)
                    {
                        var curr  = ((IJavaScriptExecutor)driver).ExecuteScript("return window.pageYOffset;").ToString();
                        var curr1 = Int32.Parse(curr);
                        ((IJavaScriptExecutor)driver).ExecuteScript("window.scrollTo(" + curr1 + "," + (curr1 + 900) + ")");
                        Console.WriteLine(location[j].Text);
                        location = driver1.FindElements(By.ClassName("s-item__location"));
                    }
                    var locationItem = location.Count;
                    //Check locations value
                    for (int k = 0; k < location.Count; k++)
                    {
                        var curr  = ((IJavaScriptExecutor)driver).ExecuteScript("return window.pageYOffset;").ToString();
                        var curr1 = Int32.Parse(curr);
                        ((IJavaScriptExecutor)driver).ExecuteScript("window.scrollTo(" + curr1 + "," + (curr1 + 900) + ")");
                        //Console.WriteLine(location[k].Text);
                        location = driver1.FindElements(By.ClassName("s-item__location"));
                        var locationName = location[k].Text;
                        locationName.ToString();
                        var num = k + 1;
                        if (locationName == "From China" || locationName == "De China")
                        {
                            try
                            {
                                driver1.FindElement(By.XPath("//*[@id='srp-river-results']/ul/li[" + num + "]/div/div[2]/a")).Click();
                                driver1.FindElement(By.ClassName("mbg-nw")).Click();
                                //*[@id="RightSummaryPanel"]/div[3]/div/div/div/div[1]/div[1]/a
                                var locationOfSeller  = driver1.FindElement(By.ClassName("mem_loc"));
                                var TextSeller        = locationOfSeller.Text;
                                var locationOfSellers = TextSeller.ToString();

                                //Check seller is not from China
                                if (locationOfSellers != "China")
                                {
                                    IWebElement SellerName1 = driver1.FindElement(By.ClassName("mbg-id"));
                                    sellerName.Add(SellerName1.Text);
                                    sellerNameScrape.SellerName = SellerName1.Text;

                                    //Add Seler name in DataBase
                                    model.SellerNameScrapes.Add(sellerNameScrape);
                                    model.SaveChanges();
                                }
                                driver1.Navigate().Back();
                                driver1.Navigate().Back();
                            }
                            catch (Exception e)
                            {
                                throw e;
                            }
                        }
                    }

                    driver1.Url = "https://www.ebay.com/";
                }
                driver.Quit();
                driver1.Quit();
            }
            else
            {
                Message = "Given Products have value 0";
            }

            return(View());
        }