public MiMFa_Table GetTable(MiMFa_Table dt, HTMLElementPatern elementPatern, List <MiMFa_XMLElement> xmls, out MiMFa_XMLElement elem) { elem = null; switch (elementPatern.ElementSimilarity) { case MiMFa_Similarity.Congruent: elem = MiMFa_XMLElement.FindCongruent(xmls, elementPatern.SampleHTMLElement); break; case MiMFa_Similarity.Like: elem = MiMFa_XMLElement.FindLike(xmls, elementPatern.SampleHTMLElement); break; case MiMFa_Similarity.Same: elem = MiMFa_XMLElement.FindSame(xmls, elementPatern.SampleHTMLElement); break; case MiMFa_Similarity.Duplicate: elem = MiMFa_XMLElement.FindDuplicate(xmls, elementPatern.SampleHTMLElement); break; case MiMFa_Similarity.This: elem = MiMFa_XMLElement.Find(xmls, elementPatern.SampleHTMLElement); break; } return(AddInTable(dt, elementPatern, elem, xmls)); }
public MiMFa_Table FetchSampleTable(WebPatern patern) { if (patern.Paterns.Count == 0 && patern.DefaultPatern != null) { return(SampleTable = GetTable(patern.DefaultPatern, MiMFa_XMLElement.GetCopy(patern.DefaultPatern.SampleHTMLElements))); } return(SampleTable); }
public MiMFa_Table GetTable(int numberOfItems = -1) { if (FetchedSuccessList.Count < 1) { return(fetch_webpatern.DefaultPatern.TransposeResult? FetchSampleTable(fetch_webpatern).Transpose(true) : FetchSampleTable(fetch_webpatern)); } MiMFa_Table mdt = new MiMFa_Table(); if (numberOfItems < 0) { foreach (var item in FetchedSuccessList) { if (!string.IsNullOrWhiteSpace(item.TableAddress)) { try { MiMFa_Table dt = null; MiMFa_IOService.OpenDeserializeFile(item.TableAddress, ref dt); if (dt != null) { mdt.ConcatTable(dt); } } catch { } } } } else { int ind = 0; foreach (var item in FetchedSuccessList) { if (ind++ == numberOfItems) { break; } if (!string.IsNullOrWhiteSpace(item.TableAddress)) { try { MiMFa_Table dt = null; MiMFa_IOService.OpenDeserializeFile(item.TableAddress, ref dt); if (dt != null) { mdt.ConcatTable(dt); } } catch { } } } } return(mdt); }
public MiMFa_Table AddInTable(MiMFa_Table dt, HTMLElementPatern elementPatern, MiMFa_XMLElement elem, List <MiMFa_XMLElement> xmls) { if (elem == null) { return(MiMFa_Table.AddInTable(dt, "", elementPatern.ColName, elementPatern.TableValuePositionType)); } string str = GetValueFromXML(elementPatern, elem); if (elementPatern.Usage != MiMFa_Usage.Set) { dt = MiMFa_Table.AddInTable(dt, str, elementPatern.ColName, elementPatern.TableValuePositionType); } else { switch (elementPatern.LinkJob) { case MiMFa_LinkJob.InternalPage: AppendInFetchQueue(new FetchPatern(fetch_url, str), true); break; case MiMFa_LinkJob.ExternalPage: AppendInFetchQueue(fetch_webpatern.FindFetchPaternFor(str, fetch_url.Source), true); break; //case MiMFa_LinkJob.Download: default: string file = string.Join("", elementPatern.DestinationPath, "\\", MiMFa_UnicCode.CreateNewString(10), "_"); if (MiMFa_Internet.IsWellURL(str)) { file += MiMFa_StringService.CompressedText(MiMFa_Path.NormalizeForFileAndFolderName(str.Split('/').Last()), 25, ""); } bool b = MiMFa_Internet.DownloadOrSave(str, file); dt = MiMFa_Table.AddInTable(dt, file, elementPatern.ColName, elementPatern.TableValuePositionType); dt = MiMFa_Table.AddInTable(dt, str, string.Join("", "auto_", elementPatern.ColName, "_URL"), MiMFa_TableValuePositionType.NextColumnCell); dt = MiMFa_Table.AddInTable(dt, b + "", string.Join("", "auto_", elementPatern.ColName, "_State"), MiMFa_TableValuePositionType.NextColumnCell); break; } } return(dt); }
public void FetchCurrent() { string html = fetch_browser.DocumentText + ""; if (fetch_url.FetchSuccessFul = ( !fetch_browser.IsBusy || (fetch_try_interval >= fetch_url.MaximumTry - 1 && html.Length > 1000) ) && html.Length > 1) { GettingTable(this, fetch_url); MiMFa_Table dt = GetTable(fetch_url); if (dt != null && dt.MainTable.Rows.Count > 1) { CurrentPaternSuccess(dt); } else { CurrentPaternError(new Exception("Can not fetch table of document!"), html); } } else { if (fetch_try_interval++ > fetch_url.MaximumTry) { CurrentPaternError(new Exception("This Document is not trust!"), html); } else if (!MiMFa_Internet.IsWellURL(fetch_url.ToString().Replace(" ", "+"))) { GettingTableError(this, fetch_url, html, new Exception("This URL is not trust!")); } else { GettingTableError(this, fetch_url, html, new Exception("Trying to navigate this URL...")); } } }
public MiMFa_Table GetTable(FetchPatern patern, List <MiMFa_XMLElement> xmls) { MiMFa_Table mdt = new MiMFa_Table(); if (patern.HTMLElementsPatern == null) { return(mdt); } List <HTMLElementPatern> continuehep = new List <HTMLElementPatern>(); MiMFa_CollectionService.CopyTo(ref continuehep, patern.HTMLElementsPatern); List <MiMFa_XMLElement> me = new List <MiMFa_XMLElement>(); foreach (var item in patern.HTMLElementsPatern) { me.Add(item.SampleHTMLElement); } MiMFa_XMLElement e = MiMFa_XMLElement.GetElementsCommonParent(me); while (continuehep.Count > 0) { if (e != null) { e = MiMFa_XMLElement.Find(xmls, e); } List <MiMFa_XMLElement> scope = e == null ? xmls : new List <MiMFa_XMLElement>() { e }; bool all = false; MiMFa_XMLElement elem = null; int len = continuehep.Count; for (int i = 0; i < len; i++) { MiMFa_XMLElement ele = null; mdt = GetTable(mdt, continuehep[i], scope, out ele); if (continuehep[i].All != MiMFa_Boolean.True) { continuehep.RemoveAt(i); i--; len--; } else if (ele != null) { elem = ele; all = true; } if (ele != null) { if (continuehep.Count - 1 > i + 1 && continuehep[i].SampleHTMLElement == continuehep[i + 1].SampleHTMLElement.Parent) { ele.StartTag = ""; } else { xmls = MiMFa_XMLElement.GetLastSplitIn(xmls, ele); } } } if (e == null) { break; } if (elem == null) { xmls = MiMFa_XMLElement.GetLastSplitIn(xmls, e); } else if (all) { xmls = MiMFa_XMLElement.GetLastSplitIn(xmls, elem); } else { break; } } // if (fetch_url.TransposeResult) { mdt = mdt.Transpose(true); } NumberOfLastTableRows = mdt.MainTable.Rows.Count - 1; NumberOfAllTableRows += NumberOfLastTableRows; if (string.IsNullOrWhiteSpace(fetch_url.TableAddress)) { fetch_url.TableAddress = TempDirectory + DateTime.Now.Ticks + MiMFa_Table.Extention; } if (NumberOfLastTableRows > 0) { try { if (!string.IsNullOrWhiteSpace(fetch_url.Source)) { DataColumn dcs = mdt.AddColumnSafe("auto_Source"); for (int i = 1; i < mdt.Rows.Count; i++) { mdt.Rows[i][dcs] = fetch_url.Source; } } } catch { } } try { MiMFa_Table nmt = null; MiMFa_IOService.OpenDeserializeFile(fetch_url.TableAddress, ref nmt); if (nmt != null) { nmt = MiMFa_Table.ConcatTable(nmt, mdt); } } catch { } MiMFa_IOService.SaveSerializeFile(fetch_url.TableAddress, mdt); return(mdt); }
public void CurrentPaternSuccess(MiMFa_Table dt) { FetchedSuccessList.Add(fetch_url); GettingTableSuccess(this, dt, fetch_url); NavigateNext(); }