Size: a a a

R (язык программирования)

2020 August 06

ВК

Василий Ключарев... in R (язык программирования)
Всем привет! Прошу совета по парсингу.
Ситуация следующая: собираю данные с сайта с применением RSelenium через параллельные вычисления. При первом открытии каждого окошка Хрома на странице нужно нажать кнопку выбора локации, что я и делаю. НО когда в уже открытом окошке открывается новая ссылка, кнопка выбора локации уже не предлагается, RSelenium не может найти этот элемент на странице, и всё ломается.

Знаю, что в питоне есть конструкция try except pass, есть ли что-то аналогичное в R ?
Пробовал через tryCatch, но, кажется, это не совсем подходящий аналог.

Буду очень благодарен за помощь!
источник

JS

Jury Sergeev in R (язык программирования)
так может кнопка выбора локации просто не успевает отрендериться?
источник

ВК

Василий Ключарев... in R (язык программирования)
Он, кажется, запоминает локацию, и больше не предлагает её выбирать
источник

JS

Jury Sergeev in R (язык программирования)
ну так это вина не селениума, а сайта?
источник

JS

Jury Sergeev in R (язык программирования)
в любом случае - надо один и тот же сценарий выполнить руками (до повторного выбора локации) и автоматом - и сравнить в чем отличие
источник

AB

Alexey Burnakov in R (язык программирования)
Василий Ключарев
Всем привет! Прошу совета по парсингу.
Ситуация следующая: собираю данные с сайта с применением RSelenium через параллельные вычисления. При первом открытии каждого окошка Хрома на странице нужно нажать кнопку выбора локации, что я и делаю. НО когда в уже открытом окошке открывается новая ссылка, кнопка выбора локации уже не предлагается, RSelenium не может найти этот элемент на странице, и всё ломается.

Знаю, что в питоне есть конструкция try except pass, есть ли что-то аналогичное в R ?
Пробовал через tryCatch, но, кажется, это не совсем подходящий аналог.

Буду очень благодарен за помощь!
Вообще-то вы сами и сказали, trycatch.
источник

ВК

Василий Ключарев... in R (язык программирования)
Jury Sergeev
в любом случае - надо один и тот же сценарий выполнить руками (до повторного выбора локации) и автоматом - и сравнить в чем отличие
Да, дело именно в сайте. Но обойти-то это нужно. Отличие в том, что при первом посещении страницы в окне хром сайт предлагает выбрать локацию, а когда в этом же окне перехожу на другой url, локация уже запомнена, и выбирать её не предлагают. Еще есть вариант перед каждым нажатием на кнопку проверять, есть ли она через length(findElements к нужной кнопке) , но тоже не уверен, оптимально ли это
источник

JS

Jury Sergeev in R (язык программирования)
да, нужно проверять, конечно
источник

JS

Jury Sergeev in R (язык программирования)
еще куки можно проверить, там же хранится выбор?
источник

АК

Артём Клевцов... in R (язык программирования)
Василий Ключарев
Да, дело именно в сайте. Но обойти-то это нужно. Отличие в том, что при первом посещении страницы в окне хром сайт предлагает выбрать локацию, а когда в этом же окне перехожу на другой url, локация уже запомнена, и выбирать её не предлагают. Еще есть вариант перед каждым нажатием на кнопку проверять, есть ли она через length(findElements к нужной кнопке) , но тоже не уверен, оптимально ли это
Куки дропнуть надо и всё.
источник

АК

Артём Клевцов... in R (язык программирования)
Василий Ключарев
Всем привет! Прошу совета по парсингу.
Ситуация следующая: собираю данные с сайта с применением RSelenium через параллельные вычисления. При первом открытии каждого окошка Хрома на странице нужно нажать кнопку выбора локации, что я и делаю. НО когда в уже открытом окошке открывается новая ссылка, кнопка выбора локации уже не предлагается, RSelenium не может найти этот элемент на странице, и всё ломается.

Знаю, что в питоне есть конструкция try except pass, есть ли что-то аналогичное в R ?
Пробовал через tryCatch, но, кажется, это не совсем подходящий аналог.

Буду очень благодарен за помощь!
Какие проблемы с tryCatch? Есть просто try.
источник

AM

Aleksei Morozov in R (язык программирования)
Добрый день, подскажите, есть тут люди, кто тянет фин. даныне (income statement, balance sheet, cash flow) по разным тикерам? Если есть, то подскажите место)
источник

ГД

Григорий Демин... in R (язык программирования)
Василий Ключарев
Всем привет! Прошу совета по парсингу.
Ситуация следующая: собираю данные с сайта с применением RSelenium через параллельные вычисления. При первом открытии каждого окошка Хрома на странице нужно нажать кнопку выбора локации, что я и делаю. НО когда в уже открытом окошке открывается новая ссылка, кнопка выбора локации уже не предлагается, RSelenium не может найти этот элемент на странице, и всё ломается.

Знаю, что в питоне есть конструкция try except pass, есть ли что-то аналогичное в R ?
Пробовал через tryCatch, но, кажется, это не совсем подходящий аналог.

Буду очень благодарен за помощь!
tryCatch это именно то, просто в функциональном стиле:
res = tryCatch({
       if(runif(1)<0.5) stop("unknown error")
       "good result"
   },
   error = function(e) "there was error"
)
res
источник

IS

Ivan Struzhkov in R (язык программирования)
Andrey
Нужен весь код с данными для тестов
read_csv("https://github.com/jordiclive/Revolut_KYC_Exercise/raw/master/data/doc_reports.csv")->doc
doc %>% mutate(list_col=str_split(properties,','))->doc1
doc1[1:nrow(doc1),list(list_col=as.character(unlist(list_col))),by=list(attempt_id)]->doc2
источник

АК

Артём Клевцов... in R (язык программирования)
Ivan Struzhkov
read_csv("https://github.com/jordiclive/Revolut_KYC_Exercise/raw/master/data/doc_reports.csv")->doc
doc %>% mutate(list_col=str_split(properties,','))->doc1
doc1[1:nrow(doc1),list(list_col=as.character(unlist(list_col))),by=list(attempt_id)]->doc2
1:nrow(doc1) - это зачем здесь?
источник

A

Andrey in R (язык программирования)
Это ускоряет работу на порядок каким-то образом
источник

IS

Ivan Struzhkov in R (язык программирования)
Артём Клевцов
1:nrow(doc1) - это зачем здесь?
Ну вот да без этого - у меня пара минут ушла на то что бы дождаться в варианте
doc1[,list(list_col=as.character(unlist(list_col))),by=list(attempt_id)]

Я
собственно и нашел момент - через то что начал тестить 1:10000, 1:20000 и тд
источник

PU

Philipp Upravitelev in R (язык программирования)
Артём Клевцов
1:nrow(doc1) - это зачем здесь?
я подозреваю, это прокидывание ключей костыльным способом
источник

IS

Ivan Struzhkov in R (язык программирования)
Короче как было - я запустил без этой штуки - минуту прождал - R не закончил.
думаю дай посмотрю как работает на меньшем куске - на 1/17 от датасета - отработало моментально на 1/8 тоже. И на всем датасете с принудительным указанием такой конструкции отработало тоже. И я очень сильно удивился
источник

AB

Alexey Burnakov in R (язык программирования)
Ivan Struzhkov
Ну вот да без этого - у меня пара минут ушла на то что бы дождаться в варианте
doc1[,list(list_col=as.character(unlist(list_col))),by=list(attempt_id)]

Я
собственно и нашел момент - через то что начал тестить 1:10000, 1:20000 и тд
тормоза из-за итераций по строкам (by = ...). думаю, можно сделать без этого, вот так
источник