ssXXXss
Client
- Регистрация
- 23.12.2014
- Сообщения
- 7 375
- Благодарностей
- 2 041
- Баллы
- 113
вот скажи что смог от меня скачать ???да не бойся ты, что может быть обидного в 8 кб программы?
вот скажи что смог от меня скачать ???да не бойся ты, что может быть обидного в 8 кб программы?
так я и говорю, что прога безобидная и там нет ничего такоговот скажи что смог от меня скачать ???
Удалить элементы содержащие текст
Удалить элементы, удовлетворяющие регулярному выражению
C#:var list = project.Lists["List"]; Regex reg = new Regex("Регулярка"); lock (SyncObjects.ListSyncer) { for (int i = 0; i < list.Count; i++) { string str = list[i]; if (reg.IsMatch(str)) { list.RemoveAt(i); i--; } } }[/QUOTE] Что то не срабатывает = ( project.Lists["[B]List[/B]"]; = project.Lists["[B]Список 1[/B]"]; new Regex("[B]Регулярка[/B]"); = new Regex("[B]\t\t\t\t\t\ .*[/B]"); Далее создают свой С# код и вставляю этот код туда ? Но выдает ошибку. [IMG]http://f2.s.qip.ru/cMfvWP6O.png[/IMG] [IMG]http://f4.s.qip.ru/cMfvWP6P.png[/IMG]
Перед регуляркой @ надо
Regex reg = new Regex(@"\t\t\t\t\t\ .*");
собаку перед регуляркой всунь
Спасибо , сразу сработало . Но к сожалению оно удаляет всю строкуПеред регуляркой @ надо
C#:Regex reg = new Regex(@"\t\t\t\t\t\ .*");
Странно, но TRIM меняет только для первой строки в переменной.Долго это только в PM, запускай в ZP.
Можно просто заменить \t на пустоту по Regex.
Если обрабатывать построчно, то можно еще Обработка текста - Trim.
Regex reg = new Regex(@"Местореализации:.*, Место\ реализации\ :.*, Купить.* и т.д");
Regex reg = new Regex(@"((Местореализации:)|(Место реализации:)|(Купить)).*");
Спасибо большое за ответы очень помогли.Долго это только в PM, запускай в ZP.
Можно просто заменить {-String.Tab-} на пустоту или \t на пустоту по Regex.
Если обрабатывать построчно, то можно еще Обработка текста - Trim.
Стандартным кубиком можно заменить по Regex \ {2,} на пустоту (или пробел). Или принципиально в коде нужно?Очень часто надо убрать "лишние" пробелы в тексте, но оставив при этом логические пробелы ( между словами, между цифрами и тд). В голову пришла идея как это сделать, но как на языке С# написать не знаю.
Если число пробелов > 1, то пробел = пустота.
tring str = project.Variables["Text"].Value;
str = Regex.Replace(str, " {2,}", "");
return str;
Приложи этот проект, посмотрим.
В одном кубике все-равно работать не хочет, последний запрос не отправляет( я ж как всегда наверное что-то натупил), если в двух C# кубиках - норм - шаблон ниже.ктото шаб на халяву обещал )))
//Get запрос, получаем куки-хуюки
var resultGet = ZennoPoster.HttpGet(
"https://e.mail.ru/signup?from=main_noc",
"",
"utf-8",
InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
5000,
"",
project.Profile.UserAgent,
true,
5,
AdditionalHeaders: new [] {
"Host: e.mail.ru",
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language: uk,ru;q=0.8,en-US;q=0.5,en;q=0.3 ", //+project.Profile.AcceptLanguage,
"Accept-Encoding: gzip, deflate, br" ,//+project.Profile.AcceptEncoding,
"Referer: https://e.mail.ru/signup?from=main_noc",
"Connection: keep-alive"
}
);
// Парсим регулярками переменные
var cookie = Regex.Match(resultGet, "(?<=Set-Cookie: ).*?(?=").Value;
var id = Regex.Match(resultGet, "(?<=<input\\ type=\"hidden\" name=\"ID\" value=\").*(?=\"/>)").Value;
var x_reg_id = Regex.Match(resultGet, "(?<='x_reg_id':\\ ').*(?=')").Value;
var name = Regex.Match(resultGet, "(?<=:first',\\ 'firstName':\\ 'input\\[name=\\\\').*?(?=\\\\']:-)").Value;
var family = Regex.Match(resultGet, "(?<=:first',\\ 'lastName':\\ 'input\\[name=\\\\').*?(?=\\\\']:-)").Value;
var god = Regex.Match(resultGet, "(?<='x_reg_id', ').*?(?=', 'BirthMonth', ')").Value;
var pol = Regex.Match(resultGet, "(?<=<input type=\"radio\" class=\"vtm\" name=\").*?(?=\" value=\"1\" id=\"man1\">)").Value;
var name_mail = Regex.Match(resultGet, "(?<=\\{'login':\\ 'input\\[name=\\\\').*?(?=\\\\'])").Value;
var password1 = Regex.Match(resultGet, "(?<=name=\").*?(?=\" value=\"\" type=\"password\")").Value;
var password2 = Regex.Match(resultGet, "(?<=name=\").*?(?=\" value=\"\" type=\"password\")", RegexOptions.RightToLeft).Value;
var captha1 = Regex.Match(resultGet, "(?<=<input id=\"captchaCode\" class=\"inPut form__captcha-old__input\" type=\"text\" name=\").*?(?=\" value=\")").Value;
var cpat = Regex.Match(resultGet, "(?<=2\\?r=).*?(?=\"\\ )").Value;
var day = Regex.Match(resultGet, "(?<=BirthMonth',\\ ').*?(?=\')").Value;
//Get на каптчу
var captcha__get = ZennoPoster.HttpGet(
"http://c.mail.ru/c/2?r=" + cpat,
"",
"utf-8",
InterfacesLibrary.Enums.Http.ResponceType.File,
5000,
cookie,//"cookie",
project.Profile.UserAgent,
true,
5,
AdditionalHeaders: new [] {
//"Host: e.mail.ru",
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language: uk,ru;q=0.8,en-US;q=0.5,en;q=0.3 ", //+project.Profile.AcceptLanguage,
"Accept-Encoding: gzip, deflate, br" ,//+project.Profile.AcceptEncoding,
"Referer: https://e.mail.ru/signup?from=main_noc",
"Connection: keep-alive"
}
);
//Обрабатываем каптчу
var image = System.Drawing.Image.FromFile(@captcha__get);
string base64String = String.Empty;
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
byte[] imageBytes = ms.ToArray();
base64String = Convert.ToBase64String(imageBytes);
}
var result = ZennoPoster.CaptchaRecognition("RuCaptcha.dll", base64String, ""); // Указываем модуль распознавания
var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
if (tmp.Length > 1) return tmp[0];
//Post отправка данных регистрации на сервер
var post = ZennoPoster.HttpPost(
url:"https://e.mail.ru/reg?from=main_noc",
content:"signup_b=1&sms=1&no_mobile=1&ID=" + id + "&Count=1&back=&browserData=NoJS&Mrim.Country=24&Mrim.Region=226&x_reg_id=" + x_reg_id + "&security_image_id=&geo_countryId=24&geo_cityId=226&geo_regionId=999998&geo_country=&geo_place=&lang=ru_RU&" + name + "=" + project.Profile.Name + "&" + family + "=" + project.Profile.Surname + "&" + day + "=" + project.Profile.BornDay + "&BirthMonth=3&" + god + "=" + project.Profile.BornYear + "&your_town=Санкт-Петербург, Россия&" + pol + "=2&" +name_mail + "=" + project.Profile.Login + "&RegistrationDomain=mail.ru&" + password1 + "=" + project.Profile.Password + "&" + password2 + "=" + project.Profile.Password + "&RemindPhoneCode=7&RemindPhone=&Password_Question=Custom&" + captha1 + "=" + project.Variables["result"].Value + "&new_captcha=1",
contentPostingType:"application/x-www-form-urlencoded",
proxy:"",
Encoding:"utf-8",
respType:ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
Timeout:30000,
Cookies:cookie,
UserAgent:project.Profile.UserAgent,
UseRedirect:true,
MaxRedirectCount:5,
AdditionalHeaders: new [] {
//"Host: e.mail.ru",
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language: uk,ru;q=0.8,en-US;q=0.5,en;q=0.3 ", //+project.Profile.AcceptLanguage,
"Accept-Encoding: gzip, deflate, br" ,//+project.Profile.AcceptEncoding,
"Referer: https://e.mail.ru/signup?from=main_noc",
"Connection: keep-alive"
}
);
return post;
http://zennolab.com/discussion/threads/perenos-znachenij-iz-spiska-v-tablicu-po-stolbcam.28468/#post-233195Может подскажите, как решить следующую задачу.
Агая ж как всегда наверное что-то натупил
if (tmp.Length > 1) return tmp[0];
if (tmp.Length > 1)
project.Variables["result"].Value = tmp[0];
теперь все в 1 кубике!Ага
В строке 70 ты возвращаешь значение return tmp[0]; и тем самым прерываешь дальнейшее выполнение кода. ЗаменинаC#:if (tmp.Length > 1) return tmp[0];
C#:if (tmp.Length > 1) project.Variables["result"].Value = tmp[0];
то норм, каждый раз парсятся новые айдишники полей, которые надо отправлять для регистрации. сейчас эти переменные можно убрать, не связывать с переменными проджектмейкератеперь все в 1 кубике!
Только почему в данных такая фигня?
всмысле убрать? из кубика удалить?то норм, каждый раз парсятся новые айдишники полей, которые надо отправлять для регистрации. сейчас эти переменные можно убрать, не связывать с переменными проджектмейкера
Надо вместо такоговсмысле убрать? из кубика удалить?
И еще тогдаКак доберусь до зенки, попробую сделать
if (tmp.Length > 1)
project.Variables["result"].Value = tmp[0];
// заменить на
if (tmp.Length <= 1) return null;
// или на
if (tmp.Length <= 1)
throw new Exception("Каптча чё-то там...");
project.Variables["result"].Value
// заменить на
tmp[0]
ясно! Я такое и сам могу сделать )))Надо вместо такого
project.Variables["cookie"].Value = Regex.Match(resultGet, "(?<=Set-Cookie: ).*?(?=").Value;
делать так
var cookie = Regex.Match(resultGet, "(?<=Set-Cookie: ).*?(?=").Value;
В первом случае в ПМ должна быть соответствующая переменная, во втором все остается в коде
Как доберусь до зенки, попробую сделать
у меня в строке 76 вообще такого нет!и соответственно в строке 76C#:project.Variables["result"].Value // заменить на tmp[0]
все вроде подправил, код выполняется без ерроров но в почту зайти немогу через обработку почты!Ну ты, наверно, код просто подправил, я имел ввиду тут в коде под спойлером, в конце 76й строки.
все вроде подправил, код выполняется без ерроров но в почту зайти немогу через обработку почты!
//Get запрос, получаем куки-хуюки
var resultGet = ZennoPoster.HttpGet(
"https://e.mail.ru/signup?from=main_noc",
"",
"utf-8",
InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
5000,
"",
project.Profile.UserAgent,
true,
5,
AdditionalHeaders: new [] {
"Host: e.mail.ru",
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language: uk,ru;q=0.8,en-US;q=0.5,en;q=0.3 ", //+project.Profile.AcceptLanguage,
"Accept-Encoding: gzip, deflate, br" ,//+project.Profile.AcceptEncoding,
"Referer: https://e.mail.ru/signup?from=main_noc",
"Connection: keep-alive"
}
);
// Парсим регулярками переменные
var cookie = Regex.Match(resultGet, "(?<=Set-Cookie: ).*?(?=;)").Value;
var id = Regex.Match(resultGet, "(?<=<input\\ type=\"hidden\" name=\"ID\" value=\").*(?=\"/>)").Value;
var x_reg_id = Regex.Match(resultGet, "(?<='x_reg_id':\\ ').*(?=')").Value;
var name = Regex.Match(resultGet, "(?<=:first',\\ 'firstName':\\ 'input\\[name=\\\\').*?(?=\\\\']:)").Value;
var surname = Regex.Match(resultGet, "(?<=:first',\\ 'lastName':\\ 'input\\[name=\\\\').*?(?=\\\\']:)").Value;
var year = Regex.Match(resultGet, "(?<='x_reg_id', ').*?(?=', 'BirthMonth', ')").Value;
var sex = Regex.Match(resultGet, "(?<=<input type=\"radio\" class=\"vtm\" name=\").*?(?=\" value=\"1\" id=\"man1\">)").Value;
var email = Regex.Match(resultGet, "(?<=\\{'login':\\ 'input\\[name=\\\\').*?(?=\\\\'])").Value;
var password1 = Regex.Match(resultGet, "(?<=name=\").*?(?=\" value=\"\" type=\"password\")").Value;
var password2 = Regex.Match(resultGet, "(?<=name=\").*?(?=\" value=\"\" type=\"password\")", RegexOptions.RightToLeft).Value;
var catpcha = Regex.Match(resultGet, "(?<=<input id=\"captchaCode\" class=\"inPut form__captcha-old__input\" type=\"text\" name=\").*?(?=\" value=\")").Value;
var cpat = Regex.Match(resultGet, "(?<=2\\?r=).*?(?=\"\\ )").Value;
var day = Regex.Match(resultGet, "(?<=BirthMonth',\\ ').*?(?=\')").Value;
//Get на каптчу
var captcha__get = ZennoPoster.HttpGet(
"http://c.mail.ru/c/2?r=" + cpat,
"",
"utf-8",
InterfacesLibrary.Enums.Http.ResponceType.File,
5000,
cookie,
project.Profile.UserAgent,
true,
5,
AdditionalHeaders: new [] {
"Host: e.mail.ru",
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language: uk,ru;q=0.8,en-US;q=0.5,en;q=0.3 ", //+project.Profile.AcceptLanguage,
"Accept-Encoding: gzip, deflate, br" ,//+project.Profile.AcceptEncoding,
"Referer: https://e.mail.ru/signup?from=main_noc",
"Connection: keep-alive"
}
);
//Обрабатываем каптчу
var image = System.Drawing.Image.FromFile(@captcha__get);
string base64String = String.Empty;
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
byte[] imageBytes = ms.ToArray();
base64String = Convert.ToBase64String(imageBytes);
}
var result = ZennoPoster.CaptchaRecognition("RuCaptcha.dll", base64String, ""); // Указываем модуль распознавания
var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
if (tmp.Length <= 1) return null;
//Post отправка данных регистрации на сервер
var post = ZennoPoster.HttpPost(
url:"https://e.mail.ru/reg?from=main_noc",
content:"signup_b=1&sms=1&no_mobile=1&ID=" + id + "&Count=1&back=&browserData=NoJS&Mrim.Country=24&Mrim.Region=226&x_reg_id=" + x_reg_id + "&security_image_id=&geo_countryId=24&geo_cityId=226&geo_regionId=999998&geo_country=&geo_place=&lang=ru_RU&" + name + "=" + project.Profile.Name + "&" + surname + "=" + project.Profile.Surname + "&" + day + "=" + project.Profile.BornDay + "&BirthMonth=3&" + year + "=" + project.Profile.BornYear + "&your_town=Санкт-Петербург, Россия&" + sex + "=2&" +email + "=" + project.Profile.Login + "&RegistrationDomain=mail.ru&" + password1 + "=" + project.Profile.Password + "&" + password2 + "=" + project.Profile.Password + "&RemindPhoneCode=7&RemindPhone=&Password_Question=Custom&" + catpcha + "=" + tmp[0] + "&new_captcha=1",
contentPostingType:"application/x-www-form-urlencoded",
proxy:"",
Encoding:"utf-8",
respType:ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderOnly,
Timeout:30000,
Cookies:cookie,
UserAgent:project.Profile.UserAgent,
UseRedirect:true,
MaxRedirectCount:5,
AdditionalHeaders: new [] {
//"Host: e.mail.ru",
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language: uk,ru;q=0.8,en-US;q=0.5,en;q=0.3 ", //+project.Profile.AcceptLanguage,
"Accept-Encoding: gzip, deflate, br" ,//+project.Profile.AcceptEncoding,
"Referer: https://e.mail.ru/signup?from=main_noc",
"Connection: keep-alive"
}
);
Если надо из Проксичекера, то, вроде как, нужен экшн "Проксичекер - Получить прокси" и коде прописывать переменную.А прокси ж не работают в С# кубиках если их просто подключить при работе постера из проксичекера?
Надо в самом кубике прописывать переменную или проксю?