Строка txtbox и innerText / innerHTML (HTMLAGILITYPACK) возвращают ложное сравнение - PullRequest
0 голосов
/ 06 июля 2018

Я вытащил некоторую информацию из Интернета, используя HTMLAGilityPack. Нет проблем. Затем я передаю innerHTML через метод, который я взял из stackoverflow (это должно удалить разметки и т. Д. И сделать его открытым текстом).

Затем я вызываю логическое значение, чтобы определить, совпадает ли новый вывод с txtInput в форме. Это возвращает ложь, даже если они одинаковы?

Я ничего не знаю о юникоде, UT-8, Cry, символьных байтах и ​​т. Д. Хотя я предполагаю, что двоичный файл отличается? хотя они выглядят одинаково? Как я могу обойти эту проблему.

Это строка в поле ввода, та же самая, которую она извлекает из HTMLAGilitypack. «Когда я вырасту (подвиг. Лорен Уорд и Бэйли Район)»

Это 2 выхода рядом.

Input Value Node Value

Как видно из рисунков, по номиналу они выглядят совершенно одинаково. Все же это возвращает ложь. Пожалуйста, как я могу это исправить?

Вот мой код:

Проверяет, отличаются ли значения, и всегда возвращает false.

private bool CheckText(string node)
    {
        string value = HtmlToPlainText(txtSong.Text);  
        if (value == node)
            return true;
        else
            return false;
    }

Это метод, который на самом деле извлекает данные. Если они совпадают, они открывают страницу, если не повторяются.

private void pullTable(int pageNum, string keyWord, int resultStart)
    {
        int countCheck = 0;
        while (countCheck == 0)
        {
            System.Threading.Thread.Sleep(3000);
            HtmlWeb web = new HtmlWeb();
            string amazon = "https://www.amazon.co.uk/s/ref=nb_sb_noss_2?url=search-alias%3Ddigital-music&page=" + pageNum + "";

            if (txtSong.Text != "")
            {
                string temp = txtSong.Text.Replace("(", "%28");
                temp = temp.Replace(")", "%26");
                amazon = amazon + "&field-keywords=" + temp;
            }
            if (txtArtist.Text != "")
            {
                string temp = txtArtist.Text.Replace("(", "%28");
                temp = temp.Replace(")", "%26");
            amazon = amazon + "&field-author=" + temp;
            }
            if (radioArtistAZ.Checked)
                amazon = amazon + "&sort=artist-album-asc-rank";
            else if (radioArtistZA.Checked)
                amazon = amazon + "&sort=artist-album-desc-rank";
            else if (radioSongAZ.Checked)
                amazon = amazon + "&sort=title-asc-rank";
            else if (radioSongZA.Checked)
                amazon = amazon + "&sort=title-desc-rank";
            {

            }

            var doc = web.Load(amazon);
            System.Threading.Thread.Sleep(200);
            var nodes = doc.DocumentNode.SelectNodes("//body");
            try
            {
                nodes = doc.DocumentNode.SelectNodes("//tr[starts-with(@id, 'result_')]/td[2]/div/a");
            }
            catch (Exception)
            {

            }
            try
            {
                for (int i = 0; i < 50; i++)
                {
                    //    string tempValue = nodes[i].InnerHtml.Replace("&amp;", "&");
                    var plainText = HtmlToPlainText(nodes[i].InnerText);
                    if (CheckText(plainText))
                    {
                        AppendTextBox("Opening on page " + pageNum);
                        System.Diagnostics.Process.Start(amazon);
                        found = 1;
                        countCheck = 1;
                        return;
                    }
                    else
                    {


                    }
                }
                countCheck = 1;
                AppendTextBox("Not found on page " + pageNum);
            }
            catch (Exception)
            {
                AppendTextBox("error on page " + pageNum);
                System.Threading.Thread.Sleep(1500);

            }

        }
    }
...