получение значения атрибута в переменную и запись в список

vikas2006

Client
Регистрация
10.05.2019
Сообщения
62
Благодарностей
1
Баллы
8
Изначальная цель найти все на странице ссылки подходящие под условие и добавлять их в список. Все ссылки находятся в артрибуте href


Помогите разобраться с кодом знания пока еще слабые и не могу понять что дальше сделать.
Вот мой код текущий
int i=0; для цикла
link1;
var collection = instance.ActiveTab.FindElementsByAttribute ("a", "href", "https://www.sdfprofile.php", "regexp",i);
return collection.GetAttribute("href"); // этом варианте работает
но мне надо положить его в список
var list = project.Lists["list"];
list.Add(sd); // но эта строка не работает разные типы
i=i+1
if условие при наличии =="" выход из перебора
goto link1;
---------------

подскажите как сделать так что бы я занес в список значение полученное из collection.GetAttribute("href");; желательно через переменую что бы в условии ее сравнить.

-------------------переделал---------------------
все нашел много ошибок но все равно не работает ((


var list = project.Lists["list"];

int i=0;
link1:
HtmlElement test= instance.ActiveTab.Find.ElementByAttribute ("a", "href", "https://www.sdfprofile.php", "regexp",i);
// а тут уже делаем что хотим с этим элементом, например вернём значение href
string sd= test.GetAttribute("href");
if (sd=="") goto link2;
i=i+1;
goto link1;
link2:
list.Add(sd);
return true;
и
 
Последнее редактирование:

TwistDanceR

Активный пользователь
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
Привет. Постараюсь помочь. Напиши условие какие именно ссылки нужны (с чего начинаются или что там... они всегда в <A href= в любом случае). И если можешь скинь страницу, так проще будет.

Сначала надо правильно разобраться как выбирать данные, всегда ли они в одном месте и так далее.
 
Последнее редактирование:
  • Спасибо
Реакции: vikas2006

Metrix

Client
Регистрация
03.01.2014
Сообщения
343
Благодарностей
272
Баллы
63
Изначальная цель найти все на странице ссылки подходящие под условие и добавлять их в список. Все ссылки находятся в артрибуте href


Помогите разобраться с кодом знания пока еще слабые и не могу понять что дальше сделать.
Вот мой код текущий
int i=0; для цикла
link1;
var collection = instance.ActiveTab.FindElementsByAttribute ("a", "href", "https://www.sdfprofile.php", "regexp",i);
return collection.GetAttribute("href"); // этом варианте работает
но мне надо положить его в список
var list = project.Lists["list"];
list.Add(sd); // но эта строка не работает разные типы
i=i+1
if условие при наличии =="" выход из перебора
goto link1;
---------------

подскажите как сделать так что бы я занес в список значение полученное из collection.GetAttribute("href");; желательно через переменую что бы в условии ее сравнить.

-------------------переделал---------------------
все нашел много ошибок но все равно не работает ((


var list = project.Lists["list"];

int i=0;
link1:
HtmlElement test= instance.ActiveTab.Find.ElementByAttribute ("a", "href", "https://www.sdfprofile.php", "regexp",i);
// а тут уже делаем что хотим с этим элементом, например вернём значение href
string sd= test.GetAttribute("href");
if (sd=="") goto link2;
i=i+1;
goto link1;
link2:
list.Add(sd);
return true;
и
Примерно так можно выправить твой код:

C#:
var list = project.Lists["list"];
HtmlElementCollection test= instance.ActiveTab.FindElementsByAttribute ("a", "href", "https://www.sdfprofile.php", "regexp");

foreach(var he in test)
{
    string sd= he.GetAttribute("href");
    if (sd=="")
    {
        //Что-до делаем
    }
    else
    {
        //Что-до делаем
    }
}
 
  • Спасибо
Реакции: vikas2006

TwistDanceR

Активный пользователь
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
А ещё можно вот так:

C#:
var test = instance.ActiveTab.DomText;
var regex = @"a\ href=""https://www.sdfprofile.php.*";
project.Lists["Имя листа"].AddRange(Regex.Matches(test,regex).Cast<Match>().Select(m=>m.Value));
 

Вложения

TwistDanceR

Активный пользователь
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
если не нужен префикс a href=" - просто нужно переделать регулярку правильно и всё получится :-)
 
  • Спасибо
Реакции: vikas2006

TwistDanceR

Активный пользователь
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
В моем случае это будет
C#:
(?<=a\ href=")https://zenno.*?"
А в твоём
C#:
(?<=a\ href=")https://www.sdfprofile.php.*?"
До конца конечно не уверен, но вроде всё правильно сделал ))) проверяй.

P.S. Почему никто не смотрит мои ответы xD
 
  • Спасибо
Реакции: vikas2006

vikas2006

Client
Регистрация
10.05.2019
Сообщения
62
Благодарностей
1
Баллы
8
TwistDanceR этот вариант не отрабатывает. Наверное я не совсем точно описал что именно я хотел. Я сделал скрин свойства на примере фейсбука .
А на счет того что я не читал ответы, это да на свадьбе я был.)) прошу уж простить.


var test = instance.ActiveTab.DomText;
var regex = @"a\ href=""https://www.sdfprofile.php.*";
project.Lists["Имя листа"].AddRange(Regex.Matches(test,regex).Cast<Match>().Select(m=>m.Value));


42320
 

TwistDanceR

Активный пользователь
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
TwistDanceR этот вариант не отрабатывает. Наверное я не совсем точно описал что именно я хотел. Я сделал скрин свойства на примере фейсбука .
А на счет того что я не читал ответы, это да на свадьбе я был.)) прошу уж простить.
Может и не дописали... А вариант Metrix'a не пробовали? Я буду на работе чуть позже. И адрес на эту страничку скиньте, пожалуйста, где у вас этот href.
 
  • Спасибо
Реакции: vikas2006

vikas2006

Client
Регистрация
10.05.2019
Сообщения
62
Благодарностей
1
Баллы
8
Metrix.
Твой вариант работает находит 400 ссылок. Это значит 400 профилей.

спасибо большое кстати цикл мне понравился как сделан.
а то я его вообще топорно накидал в своем варианте.
 
Последнее редактирование:
  • Спасибо
Реакции: Metrix

vikas2006

Client
Регистрация
10.05.2019
Сообщения
62
Благодарностей
1
Баллы
8
Может и не дописали... А вариант Metrix'a не пробовали? Я буду на работе чуть позже. И адрес на эту страничку скиньте, пожалуйста, где у вас этот href.
это страница фейбука.

мне бы хотелось и твой вариант разобрать до логического завершения. Потому я не совсем понял почему он не отрабатывает и выбtрет ли он всех в список или одного. Я пока слаб еще в С# и потому может и не правильно описываю что надо мне.
 
Последнее редактирование:

TwistDanceR

Активный пользователь
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
мне бы хотелось и твой вариант разобрать до логического завершения. Потому я не совсем понял почему он не отрабатывает и выбtрет ли он всех в список или одного. Я пока слаб еще в С# и потому может и не правильно описываю что надо мне.
У меня та же цель + разобрать код Метрикса)) Буду через минут 40 пробовать.
 

TwistDanceR

Активный пользователь
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
что ничего не работает))
Вот, смотри.
C#:
var test = instance.ActiveTab.DomText;
var regex = @"\ href=""https://www\.facebook\.com/.*?hc_location=group";
project.Lists["Список 1"].AddRange(Regex.Matches(test,regex).Cast<Match>().Select(m=>m.Value));

Я несколько раз прокрутил страницу, чтобы было побольше результатов...

Есть один нюанс: Парсится весь DOM, и влезают результаты лишние - ссылки на одменов группы и ещё 1 какой-то большой, я не стал разбираться.
Но можно парсить определенный элемент а не весь DOM. (например все ссылки только из раздела "New to the group" - Нужно подменить var test на нужный элемент (например как раньше было - через поиск элемента по ID). Т.о. левые ненужные результаты к нам в лист не попадут.

P.S. или подобрать более точную регулярку избавив нас от ненужных айтемов.
2019-09-19_11-13-34.png
 

vikas2006

Client
Регистрация
10.05.2019
Сообщения
62
Благодарностей
1
Баллы
8
Вот, смотри.
C#:
var test = instance.ActiveTab.DomText;
var regex = @"\ href=""https://www\.facebook\.com/.*?hc_location=group";
project.Lists["Список 1"].AddRange(Regex.Matches(test,regex).Cast<Match>().Select(m=>m.Value));

Я несколько раз прокрутил страницу, чтобы было побольше результатов...

Есть один нюанс: Парсится весь DOM, и влезают результаты лишние - ссылки на одменов группы и ещё 1 какой-то большой, я не стал разбираться.
Но можно парсить определенный элемент а не весь DOM. (например все ссылки только из раздела "New to the group" - Нужно подменить var test на нужный элемент (например как раньше было - через поиск элемента по ID). Т.о. левые ненужные результаты к нам в лист не попадут.

P.S. или подобрать более точную регулярку избавив нас от ненужных айтемов.
Посмотреть вложение 42324
тоже вариант получился не плохой. Спаб.
 

Metrix

Client
Регистрация
03.01.2014
Сообщения
343
Благодарностей
272
Баллы
63
Честно говоря, Я бы вообще сделал лучше поиск нужных элементов через XPath, собрал бы их в коллекцию, также как и по атрибутам, а потом бы дёргал оттуда ссылки. Скорее всего путь там будет непростой, потому как много рандомных значений, но всё равно можно найти к чему зацепиться. Ну или также регулярками собирать все ссылки на профиля, чистить от дублей.
 
  • Спасибо
Реакции: vikas2006

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