Помогите с работой со списками

Maxximmym11

Client
Регистрация
04.05.2021
Сообщения
8
Благодарностей
1
Баллы
1
Ребят , всем привет . Прошу помощи , реально очень надо.
Дело в том , что мне надо спарсить ники и имена в инстаграме (фото прикрепил)
Но получается так , что некоторые пользователи без имени и в список сохраняются пустые значения
которые в следствии замещают значения имен которые есть под ником и получается так что списки не соответствуют друг другу по к-ву строк
В одном списке 1500 (ников) а в другом 1480 (имён ) , и совместить их никак не получиться , потому что некоторые ники в списке не соответствуют правильному имени
Как так сделать что бы можно было выровнять списки?Что бы они соответствовали друг другу , и пустые поля не замещались при парсинге
Я думал может парсить сразу в таблицу , а то в списке не всегда пустые поля показывает их бывает замещает
Или как поступить?Очень надо
Буду благодарен за ответ!
 

Вложения

Peter Sarach

Client
Регистрация
01.10.2018
Сообщения
54
Благодарностей
19
Баллы
8
Собирай по одной строке. Если нету имени то можно записать прочерк.
 
  • Спасибо
Реакции: Maxximmym11
Регистрация
05.06.2019
Сообщения
570
Благодарностей
453
Баллы
63
Ребят , всем привет . Прошу помощи , реально очень надо.
Дело в том , что мне надо спарсить ники и имена в инстаграме (фото прикрепил)
Но получается так , что некоторые пользователи без имени и в список сохраняются пустые значения
которые в следствии замещают значения имен которые есть под ником и получается так что списки не соответствуют друг другу по к-ву строк
В одном списке 1500 (ников) а в другом 1480 (имён ) , и совместить их никак не получиться , потому что некоторые ники в списке не соответствуют правильному имени
Как так сделать что бы можно было выровнять списки?Что бы они соответствовали друг другу , и пустые поля не замещались при парсинге
Я думал может парсить сразу в таблицу , а то в списке не всегда пустые поля показывает их бывает замещает
Или как поступить?Очень надо
Буду благодарен за ответ!
каждый пользователь, находится в контейнере, в этом контейнере как минимум 4 объекта:
1) фото, 2) логин, 3) ник, 4) кнопка

нужно цепляться за контейнер пользователя, а значения класть в dictionary
примерно так:

C#:
var dict = new Dictionary<string, string>();

foreach (var he in instance.ActiveTab.FindElementsByXPath("//table/tr"))
{
    var login = he.FindChildByXPath("//td1", 0);
    var nickname = he.FindChildByXPath("//td2", 0);
    dict.Add(login, nickname);
}

File.AppendAllLines("путь_к_файлу_результата.txt", dict.Select(x => x.Key +";"+ x.Value));
 
  • Спасибо
Реакции: Maxximmym11

Maxximmym11

Client
Регистрация
04.05.2021
Сообщения
8
Благодарностей
1
Баллы
1
Собирай по одной строке. Если нету имени то можно записать прочерк.
А как записывать прочерк сразу при парсинге?Так нельзя же я думаю. Сразу после парсинга список смещается , пустые поля замещаются.
 

Maxximmym11

Client
Регистрация
04.05.2021
Сообщения
8
Благодарностей
1
Баллы
1
каждый пользователь, находится в контейнере, в этом контейнере как минимум 4 объекта:
1) фото, 2) логин, 3) ник, 4) кнопка

нужно цепляться за контейнер пользователя, а значения класть в dictionary
примерно так:

C#:
var dict = new Dictionary<string, string>();

foreach (var he in instance.ActiveTab.FindElementsByXPath("//table/tr"))
{
    var login = he.FindChildByXPath("//td1", 0);
    var nickname = he.FindChildByXPath("//td2", 0);
    dict.Add(login, nickname);
}

File.AppendAllLines("путь_к_файлу_результата.txt", dict.Select(x => x.Key +";"+ x.Value));
Интересное решение , но я совсем не давно работаю в зенке , с трудом даются такие процессы. То есть как я понял ты имеешь ввиду парсить контейнера пользователей и после чего #C кубик который ты кинул?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113
Можно и без с#
Сначала парсишь весь контейнер, со всеми элементами, как html код в список, потом делаешь цикл и на каждом проходе получаешь строку из списка и парсишь уже из этой строки все что надо. если будут пустые значения то меняешь на прочерки. и все данные записываешь в таблицу или в разные списки или базу данных.
 
  • Спасибо
Реакции: Maxximmym11

Maxximmym11

Client
Регистрация
04.05.2021
Сообщения
8
Благодарностей
1
Баллы
1
Можно и без с#
Сначала парсишь весь контейнер, со всеми элементами, как html код в список, потом делаешь цикл и на каждом проходе получаешь строку из списка и парсишь уже из этой строки все что надо. если будут пустые значения то меняешь на прочерки. и все данные записываешь в таблицу или в разные списки или базу данных.
меня интересует как поменять пустые значения на прочерк?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113

LiMe

Client
Регистрация
10.12.2015
Сообщения
595
Благодарностей
316
Баллы
63
меня интересует как поменять пустые значения на прочерк?
Топорный и простой способ, после того как прошел процесс парсинга ника, имени и т.д. добавить проверку на пустое значение переменной с именем, и если она пустая (нет имени) записывать в нее что-то с формата "-" или "NoName", а потом сохранять в нужные файлы, в таком случае у вас все строки будут соответствовать.
 
  • Спасибо
Реакции: Maxximmym11
Регистрация
05.06.2019
Сообщения
570
Благодарностей
453
Баллы
63
каждый пользователь, находится в контейнере, в этом контейнере как минимум 4 объекта:
1) фото, 2) логин, 3) ник, 4) кнопка

нужно цепляться за контейнер пользователя, а значения класть в dictionary
примерно так:

C#:
var dict = new Dictionary<string, string>();

foreach (var he in instance.ActiveTab.FindElementsByXPath("//table/tr"))
{
    var login = he.FindChildByXPath("//td1", 0);
    var nickname = he.FindChildByXPath("//td2", 0);
    dict.Add(login, nickname);
}

File.AppendAllLines("путь_к_файлу_результата.txt", dict.Select(x => x.Key +";"+ x.Value));
в продолжение:

C#:
//заменить
var nickname = he.FindChildByXPath("//td2", 0);

//на
string nickname = null;
bool _nickname = string.IsNullOrEmpty(he.FindChildByXPath("//td2", 0)?.InnerText);

if (!_nickname)
{
    nickname = he.FindChildByXPath("//td2", 0).InnerText;
}
else
{
    nickname = "-";
}
 
  • Спасибо
Реакции: Peter Sarach и Maxximmym11

Peter Sarach

Client
Регистрация
01.10.2018
Сообщения
54
Благодарностей
19
Баллы
8
А как записывать прочерк сразу при парсинге?Так нельзя же я думаю. Сразу после парсинга список смещается , пустые поля замещаются.
С помощью регулярных выражений проверяете переменную на наличие текста. В кубике есть галочка "Ошибка если ничего не найдено" - не дословно. Если ничего не найдено, то записываете в переменную прочерк.
 

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