public ActionResult SearchResults(string searchTerm) { // validate input if (string.IsNullOrWhiteSpace(searchTerm)) { return(Json(false, JsonRequestBehavior.AllowGet)); } _IndexSearchResultsPartialViewModel model = new _IndexSearchResultsPartialViewModel(); WebScraper webScraper = new WebScraper(); model.SearchResults = webScraper.GetSearchResults(searchTerm); return(PartialView("_IndexSearchResultsPartial", model)); }
public ActionResult SearchResults(string searchTerm) { // validate input if (string.IsNullOrWhiteSpace(searchTerm)) { return(Json(false, JsonRequestBehavior.AllowGet)); } _IndexSearchResultsPartialViewModel model = new _IndexSearchResultsPartialViewModel(); // Search engines are saved in Web.config with format of: // searchEngineName;url;CSSSelector,searchEngineName;url;CSSSelector List <string> searchEngines = ConfigurationManager.AppSettings["SearchEngines"].Split(',').ToList(); using (ChromeDriver driver = new ChromeDriver()) { foreach (string searchEngine in searchEngines) { List <string> searchParameters = searchEngine.Split(';').ToList(); string searchEngineName = searchParameters[0]; string url = searchParameters[1]; string cssSelector = searchParameters[2]; url += HttpUtility.UrlEncode(searchTerm.Trim()); var elements = GetSearchResultElements(searchEngineName, driver, url, By.CssSelector(cssSelector)); foreach (IWebElement element in elements) { if (!String.IsNullOrEmpty(element.Text)) { //string resultURL = element.FindElement(By.CssSelector("a.result__a")).GetAttribute("href").ToString().Trim(); model.SearchResults.Add(new SearchResultModel { SearchEngine = searchEngineName, ResultText = element.Text }); //, ResultURL = resultURL } } } }; return(PartialView("_IndexSearchResultsPartial", model)); }