public void ImportFromTheGatherer() { List <CardRequest> lstRequest = new List <CardRequest>(); uint iPage = 0; int iMaxCardNumber = 0; bool bFinished = false; string sSetSearch = "&set=[\"" + sSetName.Replace(" ", "+") + "\"]"; while (!bFinished) { // Generate Search link string sSetSearchURL = sSearchPage + iPage.ToString() + sShortType + sOutputType + sSetSearch; var oPageSet = HtmlUtils.GetHTML(sSetSearchURL); var lstCards = oPageSet.DocumentNode.SelectNodes("//tr[@class='cardItem']"); if (lstCards == null) { break; } foreach (var card in lstCards) { var numberNode = card.SelectSingleNode(".//td[@class='number']"); int iCardNumber = int.Parse(numberNode.InnerHtml); if (iCardNumber > iMaxCardNumber) { iMaxCardNumber = iCardNumber; } else { bFinished = true; break; } var linkNode = card.SelectSingleNode(".//a[@class='nameLink']"); string sCardName = HtmlUtils.CleanInnerText(linkNode.InnerText); string sUrl = sCardPage + linkNode.Attributes["href"].Value.Replace("../Card/Details.aspx?", ""); lstRequest.Add(new CardRequest(sCardName, sUrl)); } ++iPage; } int i = 0; foreach (var oRequest in lstRequest) { ++i; Card oNewCard = new Card(oRequest.m_sCardName, sSetName); Console.WriteLine("Importing Card[" + i.ToString() + "/" + lstRequest.Count + "]:" + oRequest.m_sCardName); oNewCard.ImportFromTheGatherer(oRequest.m_sUrl); m_lstCards.Add(oNewCard); } }