From 97b50d4bd8aa6ed69b67d9c0bdc6ad7996088706 Mon Sep 17 00:00:00 2001 From: Ramin Alirezaee Date: Sun, 16 Jun 2019 17:58:15 +0430 Subject: [PATCH 1/3] Href method added to HyperLink. --- ScrapySharp/Html/Forms/HyperLink.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ScrapySharp/Html/Forms/HyperLink.cs b/ScrapySharp/Html/Forms/HyperLink.cs index 6922ddb..1c3309d 100644 --- a/ScrapySharp/Html/Forms/HyperLink.cs +++ b/ScrapySharp/Html/Forms/HyperLink.cs @@ -21,6 +21,16 @@ public string Text get { return node.InnerText; } } + public string Href + { + get + { + var ret = string.Empty; + if (node.HasAttributes) + ret = node.Attributes["href"].Value; + return ret; + } + } public WebPage Click() { var href = node.GetAttributeValue("href", string.Empty); From 90e18aeb991ae9662858a64d29fccd94fd5b8a7a Mon Sep 17 00:00:00 2001 From: Ramin Alirezaee Date: Mon, 17 Jun 2019 19:20:21 +0430 Subject: [PATCH 2/3] find Link by title added. --- ScrapySharp/Html/By.cs | 5 +++++ ScrapySharp/Html/ElementFinder.cs | 6 ++++++ ScrapySharp/Html/ElementSearchKind.cs | 3 ++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/ScrapySharp/Html/By.cs b/ScrapySharp/Html/By.cs index d6a29e7..d6998c6 100644 --- a/ScrapySharp/Html/By.cs +++ b/ScrapySharp/Html/By.cs @@ -40,5 +40,10 @@ public static By Class(string query, StringComparison comparisonType = StringCom { return new By(query, ElementSearchKind.Class, comparisonType); } + + public static By Title(string query, StringComparison comparisonType = StringComparison.CurrentCulture) + { + return new By(query, ElementSearchKind.Title, comparisonType); + } } } \ No newline at end of file diff --git a/ScrapySharp/Html/ElementFinder.cs b/ScrapySharp/Html/ElementFinder.cs index 441e6f4..93ed386 100644 --- a/ScrapySharp/Html/ElementFinder.cs +++ b/ScrapySharp/Html/ElementFinder.cs @@ -43,6 +43,12 @@ where string.IsNullOrEmpty(name) ? string.IsNullOrEmpty(query) : name.Equals(que let names = @class.Split(new []{' '}, StringSplitOptions.RemoveEmptyEntries) where names.Contains(query) select n; + case ElementSearchKind.Title: + return from n in html.Descendants(tagName) + let title = n.GetAttributeValue("title", string.Empty) + let fixedTitle = title.Replace(" ", " ") + where string.IsNullOrEmpty(fixedTitle) ? string.IsNullOrEmpty(query) : fixedTitle.Equals(query, comparisonType) + select n; default: return new List(); } diff --git a/ScrapySharp/Html/ElementSearchKind.cs b/ScrapySharp/Html/ElementSearchKind.cs index a515bcf..5337d4d 100644 --- a/ScrapySharp/Html/ElementSearchKind.cs +++ b/ScrapySharp/Html/ElementSearchKind.cs @@ -5,6 +5,7 @@ public enum ElementSearchKind Text, Id, Name, - Class + Class, + Title } } \ No newline at end of file From 262ae6f97ef70580abb7a62becc3fe684c9790a2 Mon Sep 17 00:00:00 2001 From: Ramin Alirezaee Date: Tue, 18 Jun 2019 10:18:56 +0430 Subject: [PATCH 3/3] trim applied in every find element method. --- ScrapySharp/Html/ElementFinder.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ScrapySharp/Html/ElementFinder.cs b/ScrapySharp/Html/ElementFinder.cs index 93ed386..8b6ae3e 100644 --- a/ScrapySharp/Html/ElementFinder.cs +++ b/ScrapySharp/Html/ElementFinder.cs @@ -27,14 +27,14 @@ public IEnumerable FindElements() switch (searchKind) { case ElementSearchKind.Text: - return html.Descendants(tagName).Where(n => string.IsNullOrEmpty(n.InnerText) ? string.IsNullOrEmpty(query) : n.InnerText.Equals(query, comparisonType)); + return html.Descendants(tagName).Where(n => string.IsNullOrEmpty(n.InnerText) ? string.IsNullOrEmpty(query) : n.InnerText.Trim().Equals(query, comparisonType)); case ElementSearchKind.Id: return from n in html.Descendants(tagName) - where string.IsNullOrEmpty(n.Id) ? string.IsNullOrEmpty(query) : n.Id.Equals(query, comparisonType) + where string.IsNullOrEmpty(n.Id) ? string.IsNullOrEmpty(query) : n.Id.Trim().Equals(query, comparisonType) select n; case ElementSearchKind.Name: return from n in html.Descendants(tagName) - let name = n.GetAttributeValue("name", string.Empty) + let name = n.GetAttributeValue("name", string.Empty).Trim() where string.IsNullOrEmpty(name) ? string.IsNullOrEmpty(query) : name.Equals(query, comparisonType) select n; case ElementSearchKind.Class: @@ -46,7 +46,7 @@ where names.Contains(query) case ElementSearchKind.Title: return from n in html.Descendants(tagName) let title = n.GetAttributeValue("title", string.Empty) - let fixedTitle = title.Replace(" ", " ") + let fixedTitle = title.Replace(" ", " ").Trim() where string.IsNullOrEmpty(fixedTitle) ? string.IsNullOrEmpty(query) : fixedTitle.Equals(query, comparisonType) select n; default: