- Регистрация
- 03.10.2018
- Сообщения
- 1 136
- Благодарностей
- 196
- Баллы
- 63
Выполнение действия CSharp OwnCode: Работа с bukvariks. Заданный аргумент находится вне диапазона допустимых значений.
Имя параметра: i
Какой аргумент, где его искать?
Собственно, в чем может быть вопрос?
Имя параметра: i
Какой аргумент, где его искать?
Собственно, в чем может быть вопрос?
C#:
Tab tab = instance.ActiveTab;
Random rnd = new Random();
//1. Заходим в wordstat, получаем частотность ключевого слова WS_frequency
string keyword = Convert.ToString(project.Variables["keyphrase"].Value);
string uniq = Convert.ToString(project.Variables["uniq"].Value);
string bukvar_check = project.Variables["bukvar_check"].Value;
string wordstat_frequency = project.Variables["wordstat_frequency"].Value;
int keys_count = Convert.ToInt32(project.Variables["tab_count"].Value);
project.SendInfoToLog("Заходим в букварикс, используем ключ " + keyword, true);
tab.Navigate("https://www.bukvarix.com/bukvarix_keywords_example.html");
tab.WaitDownloading();
for(int k=0; k<=keys_count;k++){
//Берем данные из таблицы
lock(SyncObjects.TableSyncer){
// берем первую строку с удалением и раскидываем значения по переменным
var row = project.Tables["Site_report"].GetRow(0).ToList();
project.Tables["Site_report"].DeleteRow(0);
project.Variables["target_domain"].Value = row[0];
project.Variables["keyphrase"].Value = row[1];
project.Variables["region"].Value = row[2];
project.Variables["dom_zone"].Value = row[3];
project.Variables["competitor"].Value = row[4];
}
tab.KeyEvent("a", "press", "ctrl");
Thread.Sleep(rnd.Next(100,500));
tab.KeyEvent("DELETE", "press", "");
Thread.Sleep(rnd.Next(200,900));
project.SendInfoToLog("Вводим ключ " + keyword, true);
instance.SendText(keyword, 21);
tab.KeyEvent("enter", "press", "");
//Проверяем, есть ли частотность по ключу
string regex = @"(?<=<td\ colspan='5'\ class='dataTables_empty'\ valign='top'>).*(?=</td></tr></tbody></table></div>)";
string text = tab.DomText;
var reg = new System.Text.RegularExpressions.Regex(regex);
bukvar_check = reg.Matches(text)[0].ToString();
if (bukvar_check == "Нет результатов"){
project.SendInfoToLog("Не найдена частота для ключевого слова " + keyword + " берем другой", true);
tab.KeyEvent("a", "press", "ctrl");
Thread.Sleep(rnd.Next(100,500));
tab.KeyEvent("DELETE", "press", "");
Thread.Sleep(rnd.Next(200,900));
project.SendInfoToLog("Вводим ключ " + keyword, true);
instance.SendText(keyword, 21);
tab.KeyEvent("enter", "press", "");
}else{
Thread.Sleep(800);
//Парсим частотность по нужному ключевому слову
project.SendInfoToLog("Парсим частотность ключа", true);
//выдергиваем первое значение
string regex2 = @"(?<=</td><td\ class='\ dt-body-right'>).*?(?=</td><td\ class='\ dt-body-right'>)"; // в кавычках заключаем регулярное выражение
string text2 = tab.DomText;
var reg2 = new System.Text.RegularExpressions.Regex(regex2);
wordstat_frequency = reg2.Matches(text2)[2].ToString();
Thread.Sleep(800);
}
//Добавляем нужные значения в табличку
lock(SyncObjects.TableSyncer){
project.Tables["Site_report"].AddRow(project.Variables["target_domain"].Value+"\t"+project.Variables["keyphrase"].Value+"\t"+
project.Variables["region"].Value+"\t"+project.Variables["dom_zone"].Value+"\t"+project.Variables["competitor"].Value+"\t"+project.Variables["wordstat_frequency"].Value);
project.SendInfoToLog("Записываем частотность в табличку в + к имеющимся данным - " + project.Variables["wordstat_frequency"].Value, true);
project.SendInfoToLog("Пишем строку " + (k++), true);
}
}