0

Есть переменная, в ней я нахожу ссылки, и циклом прохожу по этим строкам, вставляя их в юрл, проблема в том, что он первую ссылку делает, а вторую уже нет, есть способы решения?

string str ="https://www.instagram.com/p/BGwG0OKlxr9/?igshid=10x3x18i0i7nb https://www.instagram.com/p/B8avhuGh2h6/?igshid=139h5s0h7qlhj";
var source = File.ReadAllText(str).Split(' ').ToArray();
     Console.WriteLine(source);
 for (int i = 0; i < source.Length; i++)
   {
      string sourceI = source[i].ToString(); //получаем элемент распарсенного массива (исходная строка)
      Console.WriteLine(sourceI,i);
 IWebDriver m_driver = new ChromeDriver("C://...");
   m_driver.Navigate().GoToUrl(source[i]);
   m_driver.FindElement(By.CssSelector("#react-root > section > main > div > div > article > header > div.o-MQd.z8cbW > div.PQo_0.RqtMr > div.e1e1d > h2 > a")).Click();
   String currentURL = m_driver.Url;
   Console.WriteLine(currentURL);
 StreamWriter writer1 = File.AppendText(str + "/UrlProfile.txt");
 writer1.WriteLine(currentURL+" \r\n"); //здесь пишем в результирующий файл
    writer1.Close();
    m_driver.Close();
    m_driver.Quit();
}
A K
  • 28,718
  • Наверняка что-то типа FindElements вместо FindElement даст вам всё перечисление, а не первый элемент. Документацию смотрели? Или хотя бы что предлагает автокомплит после нажатия точку в m_driver? – A K Feb 14 '20 at 14:36
  • нет, он ищет ссылки в str, вставляет их в url selenium переходит по ссылке, копирует текст и все, а дльше, он должен закрыться и повторить то же самое – Prince Tag Feb 14 '20 at 14:47
  • Он видит 2 строки, делает массив, и через цикл эти 2 строки должен прокрутить в селениум, но он 1 строку только берет и все, а в консоли почему-то сразу 2 ссылки выпадают, проверьте лучше у себя код, так нагляднее будет. Если надо объяснить, постараюсь по конкретнее рассказать – Prince Tag Feb 14 '20 at 14:48
  • Я практически не работал с selenium, поэтому не планирую в ответ писать,а лишь в комментариях пытаюсь советовать что-то из общих соображений по работе с dom: в большинстве библиотек есть и FindElements и FindElement (например в anglesharp, который у вас не зашёл, видимо, обломался о реакт) – A K Feb 14 '20 at 14:49
  • у меня нету много времени разбираться с англ шарпом, проект горит, решил на селениуме, на нем пока пашет, просто цикл странно себя ведет, он сразу показывает 2 текста, хотя должен показать 1 и i не показывает – Prince Tag Feb 14 '20 at 14:53
  • Это весьма типичная ошибка: считать что на so получится решить проблемы в горящих проектах, лучше на это не рассчитывать. – A K Feb 14 '20 at 14:56
  • Да это я уже понял, да блни, они возникают как-то случайно, вроде столько лет кодил, таких ошибок не было, и тут как-то не задалось – Prince Tag Feb 14 '20 at 14:59
  • Я ведь вам в предыдущем вопросе дал решение вашей задачи и без селениума, не уж то нужно тащить "танк" ради решения подобного? – EvgeniyZ Feb 14 '20 at 15:02
  • Понимаете, я половину из тех терминов незнаю, в anglesharp новичок, у меня нету времени разобраться – Prince Tag Feb 14 '20 at 15:04
  • А что я там сказал непонятного? Вы в HTML коде получаете JSON данные, просто вытягивайте его через любой парсер HTML, убирайте лишнее и дальше работаете с JSON данными, все. – EvgeniyZ Feb 14 '20 at 15:05
  • @EvgeniyZ Потому что там нужно разбираться и пробивать проблемы. Я поковырялся, но понял, что надо либо честно все заголовки выставлять, либо есть проблемы с парсингом Js (библиотека пока не умеет так хорошо, как браузер), либо что-то ещё. Автор рассчитывает, что по направлению вебдрайвера будет меньше проблем и в итоге сдаст как-нибудь. – A K Feb 14 '20 at 15:06
  • Текущий код не работает - url не путь на диске, так что я не смог запустить пример. Да и не знаю заведётся ли -- вроде нугет Selenium.Webdriver дал все требуемые неймспейсы, но мне кажется нужно ещё хромовский пакет подключать, а он почему говорит, что не содержит сборок. – A K Feb 14 '20 at 15:08
  • 1
    Ок... Дам тогда лайфхак. https://www.instagram.com/p/BGwG0OKlxr9/?__a=1 – EvgeniyZ Feb 14 '20 at 15:19

0 Answers0