Здравствуйте.
Я хочу автоматически получать транскрипции английских слов из Яндекс-переводчика. Так как в API Яндекс-переводчика я не нашел возможности получать кроме простого перевода ещё и транскрипции, то я решил осуществлять "самостоятельное" получение транскрипций, через парсинг html-кода на web-странице Яндекс-переводчика. Для этого я написал следующее консольное приложение на C#:
string sURL = "https://translate.yandex.ru/?text=" + "beware" + "&lang=en-ru";
//string html;
//HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(sURL);
//HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
//using (StreamReader stream = new StreamReader(
// resp.GetResponseStream()))
//{
// html = stream.ReadToEnd();
//}
WebClient client = new WebClient();
var data = client.DownloadData(sURL);
var html = Encoding.UTF8.GetString(data);
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
var x = doc.DocumentNode;
Console.WriteLine("После этой строки появляется ошибка" + x); // В консоли заместо 'x' будет выведено HtmlAgillityPack.HtmlNode
//var y = x.SelectNodes("//span[@class='dictionary-transcription']");
var y = x.SelectNodes("id('dictionaryContent')/x:li[1]/x:div/x:span[1]"); //XPATH-селектор мне автоматически сгенерировал браузер Firefox
var z = y.ToList();
string Text = "Пусто";
foreach (HtmlNode node in z)
{
Text = node.InnerText;
}
Console.WriteLine(Text);
Console.ReadLine();
В процессе выполнения программы, в строке:
var y = x.SelectNodes("некий XPATH-селектор");
я получаю ошибку:
"Необработанное исключение типа "System.Xml.XPath.XPathException" в System.Xml.dll
Дополнительные сведения: Требуется диспетчер пространств имен или XsltContext. Этот запрос содержит префикс, переменную или определенную пользователем функцию."
После появления этой ошибки я на всякий случай добавил пространство имен:
using System.Xml.Xsl;
но это ничего не изменило.
Как решить эту ошибку?
P.S. Для парсинга HTML-кода я использую библиотеку HtmlAgilityPack.
P.P.S. Я сейчас изучил HTML-код который я выгружаю с web-страницы Яндекс-переводчика, и обнаружил:
<span class="dictionary-transcription">[{{transcription}}]</span>
То есть Яндекс-переводчик никакой транскрипции еще не успел вставить между тегами
<span></span>