private static String GetTileImage(Gallery gallery) { var web = new HtmlWeb(); var doc = web.Load(gallery.Link); var nodes = doc.DocumentNode.SelectNodes("//div[@id='gallery-slider']").Descendants(); foreach (var node in nodes) { if (node.Name != "a") continue; //var image = new AppImage { Title = title }; //var decodedString = WebUtility.HtmlDecode(node.InnerHtml); //image.Abstract = Regex.Replace(decodedString, // @"\t|\n|\r", ""); //image.Abstract = Regex.Replace(image.Abstract, // @"<span>|</span>", "\t\n"); var attr = node.Attributes; var first = (from a in attr where a.Name == "href" select a.Value).FirstOrDefault(); gallery.Tile = "http://gaa.ie" + first; return gallery.Tile; } return null; }
private List<Gallery> GetAllGalleriesFromDb() { var galleries = new List<Gallery>(); try { const string sql = "Select * from Gallery order by ID desc"; using (var cmd = new MySqlCommand(sql, _connection)) { using (var r = cmd.ExecuteReader()) { while (r.Read()) { var g = new Gallery { Title = r.GetString("Title"), Link = r.GetString("Link"), Img = r.GetString("Image"), Tile = r.GetString("Tile") }; galleries.Add(g); } } } } catch (Exception ex) { var stackFrame = new StackFrame(); var methodBase = stackFrame.GetMethod(); Database.InsertErrorToDb(methodBase.Name, ex.Message, ex.ToString()); } return galleries; }
private void InsertGalleryToDb(Gallery g) { try { const string query = "INSERT INTO Gallery (Title, Link, Image, Tile) VALUES (@title, @link, @image, @tile);"; using (var cmd = new MySqlCommand(query, _connection)) { // Start using the passed values in our parameters: cmd.Parameters.AddWithValue("@title", g.Title); cmd.Parameters.AddWithValue("@link", g.Link); cmd.Parameters.AddWithValue("@image", g.Img); cmd.Parameters.AddWithValue("@tile", g.Tile); // Execute the query cmd.ExecuteNonQuery(); } } catch (Exception ex) { var sf = new StackFrame(); var methodBase = sf.GetMethod(); Database.InsertErrorToDb(methodBase.Name, ex.Message, ex.ToString()); } }
private static List<Gallery> ScrapeGalleries() { var galleries = new List<Gallery>(); var web = new HtmlWeb(); var doc = web.Load("http://www.gaa.ie/gaa-news-and-videos/image-gallery/"); var nodes = doc.DocumentNode.SelectNodes("//div[@id='image_gallery']").Descendants(); nodes = doc.DocumentNode.SelectNodes("//div[@class='gallery clearfix']"); foreach (var node in nodes) { var gallery2 = new Gallery(); var decodedString = WebUtility.HtmlDecode(node.ChildNodes[1].InnerText); gallery2.Title = Regex.Replace(decodedString, @"\t|\n|\r|<li>|</li>|<ul>|</ul>|<b>|</b>|<br>|<em>|</em>|<u>|</u>|<strong>|</strong>|<p>|</p>", ""); gallery2.Img = "http://gaa.ie"; gallery2.Link = "http://gaa.ie"; galleries.Add(gallery2); if (node.Name != "ul") continue; var liNodes = node.ChildNodes; foreach (var nodeLi in liNodes) { if (nodeLi.Name != "li") continue; var gallery = new Gallery(); //imgNode = nodeLi.ChildNodes[1].ChildNodes[1].Attributes; //foreach (var htmlAttribute in imgNode.Where(htmlAttribute => htmlAttribute.Name == "src")) //{ // gallery.Img = "http://gaa.ie" + htmlAttribute.Value; //} decodedString = WebUtility.HtmlDecode(nodeLi.InnerText); gallery.Title = Regex.Replace(decodedString, @"\t|\n|\r|<li>|</li>|<ul>|</ul>|<b>|</b>|<br>|<em>|</em>|<u>|</u>|<strong>|</strong>|<p>|</p>", ""); IEnumerable<HtmlAttribute> attr = nodeLi.ChildNodes[1].Attributes; foreach (var attribute in attr.Where(attribute => attribute.Name == "href")) { gallery.Link = "http://gaa.ie" + new Uri(attribute.Value, UriKind.RelativeOrAbsolute); } galleries.Add(gallery); } } foreach (var gallery in galleries) { gallery.Tile = GetTileImage(gallery); //galleries.Add(gallery); } return galleries; }