Как вытащить со страницы определенную строчку текста?

vitaz84

Новичок
Регистрация
29.01.2015
Сообщения
25
Благодарностей
0
Баллы
1
Добрый день
подскажите ответ на такой вопрос, мне нужно через сервис whois сайта рег или других сервисов спарсить определенную строку со страницы.
Например
открывается страница https://www.reg.ru/whois/?check=&dname=nibbl.ru&_csrf=d8ea1f9002a91d59a2d31cad08f2efea
и тут меня интересует только строка с Дата окончания регистрации
и можно всю эту строку или дату поместить в переменную или сразу выгрузить в excel/

подскажите как это можно сделать.. уже всю голову сломал.(((

заранее большое спасибо!
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 299
Благодарностей
701
Баллы
113
Добрый день
подскажите ответ на такой вопрос, мне нужно через сервис whois сайта рег или других сервисов спарсить определенную строку со страницы.
Например
открывается страница https://www.reg.ru/whois/?check=&dname=nibbl.ru&_csrf=d8ea1f9002a91d59a2d31cad08f2efea
и тут меня интересует только строка с Дата окончания регистрации
и можно всю эту строку или дату поместить в переменную или сразу выгрузить в excel/

подскажите как это можно сделать.. уже всю голову сломал.(((

заранее большое спасибо!
На пример вот так
C#:
HtmlElement hec2 = instance.ActiveTab.FindElementByXPath("//td[contains(@class, 'node_last')]", 8);
            project.Variables["DateLast"].Value = hec2.InnerHtml;
Не забудь в проекте создать переменную DateLast в нее ответ положится
 
  • Спасибо
Реакции: djaga

vitaz84

Новичок
Регистрация
29.01.2015
Сообщения
25
Благодарностей
0
Баллы
1
На пример вот так
C#:
HtmlElement hec2 = instance.ActiveTab.FindElementByXPath("//td[contains(@class, 'node_last')]", 8);
            project.Variables["DateLast"].Value = hec2.InnerHtml;
Не забудь в проекте создать переменную DateLast в нее ответ положится
я прошу прощения , подскажите а это используется в каком действии?
я только изучаю зенку (
 

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
554
Благодарностей
1 136
Баллы
93
я прошу прощения , подскажите а это используется в каком действии?
я только изучаю зенку (
Свой код → C# код
1659121030592.png

Например, вот так:
ActiveTab.FindElementByXPath("//td[contains(@class, 'node_last')]", 8)
Нашел XPath интереснее)
//td[contains(text(),"Дата окончания регистрации")]/following-sibling::td
В него можно сразу запихнуть название строки, а он выдаст результат. И не нужно считать строчки на сайте.

Узнать дату окончания регистрации домена + очистка + конвертация в другой формат даты и времени:
string whatLineToLookFor = "Дата окончания регистрации"; // какую строку нужно искать
string xPath = $"//td[contains(text(),\"{whatLineToLookFor}\")]/following-sibling::td"; // путь к "брату" элемента
HtmlElement el = instance.ActiveTab.FindElementByXPath(xPath, 0); // всегда нулевой элемент
string res = el.InnerHtml; // получить только текст

res = Regex.Replace(res, "T|Z", " ").Trim(); // замена на пустоту T и Z, а потом очистка от лишних пробелов [можно убрать]
res = DateTime.Parse(res).ToString("dd.MM.yyyy HH:mm:ss"); // перевод в читаемый формат [можно убрать]

project.Variables["DateLast"].Value = res; // присвоение в переменную. Не забыть создать переменную с именем DateLast
Результат:
95189


Приложил шаблон ниже ↓.

@vitaz84, не забывайте нажимать "спасибо" помогающему)
 

Вложения

Последнее редактирование:
  • Спасибо
Реакции: Sho, Sergodjan и vitaz84

Alexbrush

Client
Регистрация
20.11.2020
Сообщения
164
Благодарностей
144
Баллы
43
Свой код → C# код
Посмотреть вложение 95187


Нашел XPath интереснее)
//td[contains(text(),"Дата окончания регистрации")]/following-sibling::td
В него можно сразу запихнуть название строки, а он выдаст результат. И не нужно считать строчки на сайте.

Узнать дату окончания регистрации домена + очистка + приведение в другой формат даты:
string whatLineToLookFor = "Дата окончания регистрации"; // какую строку нужно искать
string xPath = $"//td[contains(text(),\"{whatLineToLookFor}\")]/following-sibling::td"; // путь к "брату" элемента
HtmlElement el = instance.ActiveTab.FindElementByXPath(xPath, 0); // всегда нулевой элемент
string res = el.InnerHtml; // получить только текст

res = Regex.Replace(res, "T|Z", " ").Trim(); // замена на пустоту T и Z, а потом очистка от лишних пробелов [можно убрать]
res = DateTime.Parse(res).ToString("dd.MM.yyyy HH:mm:ss"); // перевод в читаемый формат [можно убрать]

project.Variables["DateLast"].Value = res; // присвоение в переменную. Не забыть создать переменную с именем DateLast
Результат:
Посмотреть вложение 95189

Приложил шаблон ниже ↓.

@vitaz84, не забывайте нажимать "спасибо" помогающему)
А обещал через 5 минут шаблон приложить. Прошло 42 минуты со старта этого обещания)

Молодец/красавчик, что помогаешь, но лучше не бросаться такими понтами. Это тебя не красит :-)
 

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
554
Благодарностей
1 136
Баллы
93
А обещал через 5 минут шаблон приложить. Прошло 42 минуты со старта этого обещания)

Молодец/красавчик, что помогаешь, но лучше не бросаться такими понтами. Это тебя не красит
Странный вы человек. Я в первой редакции сообщения, оперативно ответил на вопрос выше.
Дальше через 5-10мин я указал чуть более верный xPath и написал про пять мин.)
Пометку оставил чтобы задающий, понимал, что позже на этом месте появиться шаблон.

Хорошо.) Я понял в следующий раз если напишу, укажу знак ≈ [приблизительно].
Чтобы не трепать нервы особо чувствительным к времени последней правки.

А когда писал код, понял, что было бы полезно новичку увидеть, что можно сделать с датой. Так как он, скорее всего, делать это на кубиках.)
Суммарно, да, последняя правка 42 мин, но это не значит, что я просто зарезервировал место и ушел. Самое главное, что информация ценна и разжёвана!
 

Alexbrush

Client
Регистрация
20.11.2020
Сообщения
164
Благодарностей
144
Баллы
43
Странный вы человек. Я в первой редакции сообщения, оперативно ответил на вопрос выше.
Дальше через 5-10мин я указал чуть более верный xPath и написал про пять мин.)
Пометку оставил чтобы задающий, понимал, что позже на этом месте появиться шаблон.

Хорошо.) Я понял в следующий раз если напишу, укажу знак ≈ [приблизительно].
Чтобы не трепать нервы особо чувствительным к времени последней правки.

А когда писал код, понял, что было бы полезно новичку увидеть, что можно сделать с датой. Так как он, скорее всего, делать это на кубиках.)
Суммарно, да, последняя правка 42 мин, но это не значит, что я просто зарезервировал место и ушел. Самое главное, что информация ценна и разжёвана!
Я случайно заглянул в тему и вижу оперативный ответ уже с xpath и ниже него подпись, что мол через 5 минут приложу шаблон. Возможно это было как раз в тот момент, когда "не потёр надпись" про 5 минут и так совпало. Но я это увидел как приложу именно шаблон (файл проект наверно) через 5 минут. Отдельно от xpath.

Шаблон (файл проекта) появился заметно позже и я это увидел именно как понт вроде того, что вообще изи "щас я за 5 минут накидаю шаб и прикреплю". Я о том, что добро делать это круто и респект тебе, но без временных рамок с обещаниями, которые сам случайно можешь нарушить, будет лучше. Совет от коллеги, не более, на основе случайного наблюдения. А ты меня уже в параноики записал :-)
 
  • Спасибо
Реакции: djaga

vitaz84

Новичок
Регистрация
29.01.2015
Сообщения
25
Благодарностей
0
Баллы
1
Свой код → C# код
Посмотреть вложение 95187


Нашел XPath интереснее)
//td[contains(text(),"Дата окончания регистрации")]/following-sibling::td
В него можно сразу запихнуть название строки, а он выдаст результат. И не нужно считать строчки на сайте.

Узнать дату окончания регистрации домена + очистка + конвертация в другой формат даты и времени:
string whatLineToLookFor = "Дата окончания регистрации"; // какую строку нужно искать
string xPath = $"//td[contains(text(),\"{whatLineToLookFor}\")]/following-sibling::td"; // путь к "брату" элемента
HtmlElement el = instance.ActiveTab.FindElementByXPath(xPath, 0); // всегда нулевой элемент
string res = el.InnerHtml; // получить только текст

res = Regex.Replace(res, "T|Z", " ").Trim(); // замена на пустоту T и Z, а потом очистка от лишних пробелов [можно убрать]
res = DateTime.Parse(res).ToString("dd.MM.yyyy HH:mm:ss"); // перевод в читаемый формат [можно убрать]

project.Variables["DateLast"].Value = res; // присвоение в переменную. Не забыть создать переменную с именем DateLast
Результат:
Посмотреть вложение 95189

Приложил шаблон ниже ↓.

@vitaz84, не забывайте нажимать "спасибо" помогающему)

офигеть! спасибо большое!!!!
 

vitaz84

Новичок
Регистрация
29.01.2015
Сообщения
25
Благодарностей
0
Баллы
1
Свой код → C# код
Посмотреть вложение 95187


Нашел XPath интереснее)
//td[contains(text(),"Дата окончания регистрации")]/following-sibling::td
В него можно сразу запихнуть название строки, а он выдаст результат. И не нужно считать строчки на сайте.

Узнать дату окончания регистрации домена + очистка + конвертация в другой формат даты и времени:
string whatLineToLookFor = "Дата окончания регистрации"; // какую строку нужно искать
string xPath = $"//td[contains(text(),\"{whatLineToLookFor}\")]/following-sibling::td"; // путь к "брату" элемента
HtmlElement el = instance.ActiveTab.FindElementByXPath(xPath, 0); // всегда нулевой элемент
string res = el.InnerHtml; // получить только текст

res = Regex.Replace(res, "T|Z", " ").Trim(); // замена на пустоту T и Z, а потом очистка от лишних пробелов [можно убрать]
res = DateTime.Parse(res).ToString("dd.MM.yyyy HH:mm:ss"); // перевод в читаемый формат [можно убрать]

project.Variables["DateLast"].Value = res; // присвоение в переменную. Не забыть создать переменную с именем DateLast
Результат:
Посмотреть вложение 95189

Приложил шаблон ниже ↓.

@vitaz84, не забывайте нажимать "спасибо" помогающему)

Уважаемый Djaga

Можете подсказать по строчке:
string xPath = $"//td[contains(text(),\"{whatLineToLookFor}\")]/following-sibling::td"; // путь к "брату" элемента

если у меня допустим уже другие строчки - Registrar Registration Expiration Date : для например домена https://www.reg.ru/whois/domenshop.biz

я не до конца понимаю как вы делали xPath

Буду признателен за помощь!
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 299
Благодарностей
701
Баллы
113
Уважаемый Djaga

Можете подсказать по строчке:
string xPath = $"//td[contains(text(),\"{whatLineToLookFor}\")]/following-sibling::td"; // путь к "брату" элемента

если у меня допустим уже другие строчки - Registrar Registration Expiration Date : для например домена https://www.reg.ru/whois/domenshop.biz

я не до конца понимаю как вы делали xPath

Буду признателен за помощь!
Тебе ведь уже все сделали, в таком случае надо в первой строчке кода

string whatLineToLookFor = "Дата окончания регистрации"; // какую строку нужно искать

Заменить Дата окончания регистрации на Registrar Registration Expiration Date

string whatLineToLookFor = "Registrar Registration Expiration Date"; // какую строку нужно искать


А по xpath есть отличная тема https://zennolab.com/discussion/threads/obzor-zennoposter-xpath-na-primere-jandeks-marketa.37497/
 
  • Спасибо
Реакции: djaga

vitaz84

Новичок
Регистрация
29.01.2015
Сообщения
25
Благодарностей
0
Баллы
1
Тебе ведь уже все сделали, в таком случае надо в первой строчке кода

string whatLineToLookFor = "Дата окончания регистрации"; // какую строку нужно искать

Заменить Дата окончания регистрации на Registrar Registration Expiration Date

string whatLineToLookFor = "Registrar Registration Expiration Date"; // какую строку нужно искать


А по xpath есть отличная тема https://zennolab.com/discussion/threads/obzor-zennoposter-xpath-na-primere-jandeks-marketa.37497/

по первой строчке все понятно, что меняются слова, но с xpath понял, изучу материал по вашей ссылке. Спасибо большое!
 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)