- Регистрация
- 12.10.2012
- Сообщения
- 420
- Реакции
- 726
- Баллы
- 93
Приветствую всех!
В этот раз решил обойтись длинным монологом, СРАЗУ ПЕРЕЙДЕМ К ДЕЛУ
Когда я был дорвейщиком , то планировал смастерить этот шаблон на зенки... да все руки не доходили.
Парсить мы будет по слову "Скачать" . Сразу со страницы твиттера мне перехотелось
https://twitter.com/search?q=скачать&src=typd
Api твиттера на поиск тоже не поддавалось (а я то думал, что у дропбокса самое идиотское... наивный
), но гугл как всегда спешит на помощь
||| После нудного получасового перебора всех сайтов.. я был вымотан, НО ДОВОЛЕН !!!
Теперь все кандидаты в сборе.. (a-parser, зенка, источник инфы) - Пора приступать
Наша задача:
Далее настраиваем A-parser и его взаимодействия с ЗенноПостером :
1) Создадим пресет "test" и поставим в него формат запроса "!$query"
2) Зарегаем яндекс аккаунтов, чтобы парсить директ
3) Установим прокси
4) Создадим post запрос на API
"parser" : "SE::Yandex;Direct:Frequency", - (парсер частотки) - http://a-parser.com/wiki/se-yandex-direct-frequency/
"password" : "", - пароль от учетки а-парсера
"preset" : "test", - прессет, где я указал антикапчу и юзать прокси / не юзать + формат запроса и и полученного результат.
"threads" : 4, - кол-во потоков.
"queries" : - наши запросы
Как видим в примере, нам вместо этих слов нужно подставить спарсенные слова с твиттера.
Для этого делаем сл.шаги:
В ответе мы получаем:
После обработки:
ИТОГО:
1) Запускаем а-парсер на серваке
2) Закцикливаем парсер на 10 попыток (раз в 6 сек)
3) Ставим шаблон на планировщик "1 запуск - раз в минуту"
На выходе получаем более +- 50к кеев в сутки по слову "скачать" с прочеканной частоткой".
Многие меня спросят.. ДЫК ЭТО МОЖНО И НА ЗЕНКИ СДЕЛАТЬ!!!?
А ответ на вопрос (почему мы вообще подключили А-парсер?) ждите в 3 части моей статьи по а-парсеру
[это был только разогрев]....
Скачать шаблон: https://yadi.sk/d/JL6_DLJQgvj8p
1) Идем сюда - http://json2csharp.com/
2) Вставляем наш JSON - http://pastebin.com/xvAZynYL
3) Получаем структурированный класс на разбор JSON
4) Выкидываем ненужные параметры и обворачиваем все в namespace JSOND (для подключение нашего класса из общего кода в using)
5) Подключаем библиотеку Newtonsoft.Json.dll (скачать)
7) Прописываем код из пункта "4", в новую фичу зеннопостера - "ОБЩИЙ КОД" . Она позволяет нам переносить все классы кода , заменяя прежние костыли (генераций dll с нашими классами в Devel Studio).
+ Добавляем в USING
using Newtonsoft.Json;
using JSOND;
Добавляем этот код в c# сниппет
Как итог, все данные записались в таблицу. Кто хорошо знаком с c# .. может сразу Replace-ом заменить 1/0 - (оффлайн , онлайн). И дальнейшие манипуляции.
Кто еще не работает с новым зеннопостером, то ему подойдет этот вариант разбора JSON.
В этот раз решил обойтись длинным монологом, СРАЗУ ПЕРЕЙДЕМ К ДЕЛУ

Парсить мы будет по слову "Скачать" . Сразу со страницы твиттера мне перехотелось
https://twitter.com/search?q=скачать&src=typd
Api твиттера на поиск тоже не поддавалось (а я то думал, что у дропбокса самое идиотское... наивный
), но гугл как всегда спешит на помощь
||| После нудного получасового перебора всех сайтов.. я был вымотан, НО ДОВОЛЕН !!!
HTML:
https://www.twilert.com/twilerts/preview?query=%D1%81%D0%BA%D0%B0%D1%87%D0%B0%D1%82%D1%8C
Теперь все кандидаты в сборе.. (a-parser, зенка, источник инфы) - Пора приступать

Наша задача:
- Спарсить из этой кучи-малы только текст твиттов
- Отобрать твитты, которые имеют: (не менее 20 символов && но не больше 55 символов).
- Почистить их от мусора
Код:
var contentfinal = project.Lists["contentfinal"]; // обозначим список "contentfinal "
var list = project.Lists["list"]; // обозначим список "list"
string regex = project.Variables["regex2"].Value; // регулярка
string text = project.Variables["nomer2"].Value; // текст
var reg = new System.Text.RegularExpressions.Regex(regex, System.Text.RegularExpressions.RegexOptions.None);
foreach (var match in reg.Matches(text))
{
list.Add(match.ToString()); // добавляем в цикле все значения в список
}
lock(SyncObjects.ListSyncer)
{
for(int i=0; i < list.Count; i++) // цикл на Replace, кол-во символов
{
// читаем строку из списка
var str = list[i];
var output = System.Text.RegularExpressions.Regex.Replace(str,@"http://.+", ""); // первая замена
var next = System.Text.RegularExpressions.Regex.Replace(output,@"[^\w\d\s]", ""); // вторая замена
// проверяем на кол-во символов
if (next.Length > 20 && next.Length < 55)
contentfinal.Add(next); //добавляем результаты в "contentfinal" (список)
}
}
Далее настраиваем A-parser и его взаимодействия с ЗенноПостером :
1) Создадим пресет "test" и поставим в него формат запроса "!$query"
3) Установим прокси
4) Создадим post запрос на API
"parser" : "SE::Yandex;Direct:Frequency", - (парсер частотки) - http://a-parser.com/wiki/se-yandex-direct-frequency/
"password" : "", - пароль от учетки а-парсера
"preset" : "test", - прессет, где я указал антикапчу и юзать прокси / не юзать + формат запроса и и полученного результат.
"threads" : 4, - кол-во потоков.
"queries" : - наши запросы
Как видим в примере, нам вместо этих слов нужно подставить спарсенные слова с твиттера.
Для этого делаем сл.шаги:
В ответе мы получаем:
HTML:
{"success":1,"data":{"resultString":"\"!Скачать nfs carbon na windovs xp 3\": 0\n\"!Скачать сервер 152 с нужными плагинами для майнкрафт\": 0\n\"!Скачать все серии губка боб через торрент рус\": 0\n\"!Trolhappy скачать для в вконтакте смайлы\": 0\n","logs":{"1":{"1":[[0,1432825525,"Parser SE::Yandex::Direct::Frequency::0 parse query \"!Скачать nfs carbon na windovs xp 3\""],[0,1432825525,"Wait for proxy"],[0,1432825525,"Use proxy socks://91.214.71.16:7103"],[0,1432825525,"GET(1): https://direct.yandex.com/public?cmd=ajaxGetSuggestion&csrf_token=&geo=225&get_stat=1&promo=spros&srcPhrases=%22!%D0%A1%D0%BA%D0%B0%D1%87%D0%B0%D1%82%D1%8C%20nfs%20carbon%20na%20windovs%20xp%203%22 - 200 OK (0.11 KB)"],[0,1432825525,"Parse response: 1"],[3,1432825525,1],[0,1432825527,"Thread complete work"]]},"0":{"1":[[0,1432825525,"Parser SE::Yandex::Direct::Frequency::0 parse query \"!Скачать сервер 152 с нужными плагинами для майнкрафт\""],[0,1432825525,"Wait for proxy"],[0,1432825525,"Use proxy http://185.31.160.178:7073"],[0,1432825526,"GET(1): https://direct.yandex.com/public?cmd=ajaxGetSuggestion&csrf_token=&geo=225&get_stat=1&promo=spros&srcPhrases=%22!%D0%A1%D0%BA%D0%B0%D1%87%D0%B0%D1%82%D1%8C%20%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%20152%20%D1%81%20%D0%BD%D1%83%D0%B6%D0%BD%D1%8B%D0%BC%D0%B8%20%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%20%D0%B4%D0%BB%D1%8F%20%D0%BC%D0%B0%D0%B9%D0%BD%D0%BA%D1%80%D0%B0%D1%84%D1%82%22 - 200 OK (0.16 KB)"],[0,1432825526,"Parse response: 1"],[3,1432825526,1],[0,1432825527,"Thread complete work"]]},"3":{"1":[[0,1432825525,"Parser SE::Yandex::Direct::Frequency::0 parse query \"!Скачать все серии губка боб через торрент рус\""],[0,1432825525,"Wait for proxy"],[0,1432825525,"Use proxy http://62.76.75.165:7142"],[0,1432825527,"GET(1): https://direct.yandex.com/public?cmd=ajaxGetSuggestion&csrf_token=&geo=225&get_stat=1&promo=spros&srcPhrases=%22!%D0%A1%D0%BA%D0%B0%D1%87%D0%B0%D1%82%D1%8C%20%D0%B2%D1%81%D0%B5%20%D1%81%D0%B5%D1%80%D0%B8%D0%B8%20%D0%B3%D1%83%D0%B1%D0%BA%D0%B0%20%D0%B1%D0%BE%D0%B1%20%D1%87%D0%B5%D1%80%D0%B5%D0%B7%20%D1%82%D0%BE%D1%80%D1%80%D0%B5%D0%BD%D1%82%20%D1%80%D1%83%D1%81%22 - 200 OK (0.15 KB)"],[0,1432825527,"Parse response: 1"],[3,1432825527,1],[0,1432825527,"Thread complete work"]]},"2":{"1":[[0,1432825525,"Parser SE::Yandex::Direct::Frequency::0 parse query \"!Trolhappy скачать для в вконтакте смайлы\""],[0,1432825525,"Wait for proxy"],[0,1432825525,"Use proxy http://94.142.142.52:7272"],[0,1432825527,"GET(1): https://direct.yandex.com/public?cmd=ajaxGetSuggestion&csrf_token=&geo=225&get_stat=1&promo=spros&srcPhrases=%22!Trolhappy%20%D1%81%D0%BA%D0%B0%D1%87%D0%B0%D1%82%D1%8C%20%D0%B4%D0%BB%D1%8F%20%D0%B2%20%D0%B2%D0%BA%D0%BE%D0%BD%D1%82%D0%B0%D0%BA%D1%82%D0%B5%20%D1%81%D0%BC%D0%B0%D0%B9%D0%BB%D1%8B%22 - 200 OK (0.14 KB)"],[0,1432825527,"Parse response: 1"],[3,1432825527,1],[0,1432825527,"Thread complete work"]]}}}}
После обработки:
HTML:
"!Скачать nfs carbon na windovs xp 3": 0
"!Скачать сервер 152 с нужными плагинами для майнкрафт": 0
"!Скачать все серии губка боб через торрент рус": 0
"!Trolhappy скачать для в вконтакте смайлы": 0
ИТОГО:
2) Закцикливаем парсер на 10 попыток (раз в 6 сек)
3) Ставим шаблон на планировщик "1 запуск - раз в минуту"
На выходе получаем более +- 50к кеев в сутки по слову "скачать" с прочеканной частоткой".
Многие меня спросят.. ДЫК ЭТО МОЖНО И НА ЗЕНКИ СДЕЛАТЬ!!!?
А ответ на вопрос (почему мы вообще подключили А-парсер?) ждите в 3 части моей статьи по а-парсеру

[это был только разогрев]....
Скачать шаблон: https://yadi.sk/d/JL6_DLJQgvj8p
1) Идем сюда - http://json2csharp.com/
2) Вставляем наш JSON - http://pastebin.com/xvAZynYL
3) Получаем структурированный класс на разбор JSON
HTML:
public class LastSeen
{
public int time { get; set; }
public int platform { get; set; }
}
public class Response
{
public int uid { get; set; }
public string first_name { get; set; }
public string last_name { get; set; }
public int online { get; set; }
public string home_phone { get; set; }
public string facebook { get; set; }
public string facebook_name { get; set; }
public string instagram { get; set; }
public LastSeen last_seen { get; set; }
public string online_app { get; set; }
public int? online_mobile { get; set; }
public string twitter { get; set; }
public string skype { get; set; }
public int? hidden { get; set; }
public string livejournal { get; set; }
}
public class RootObject
{
public List<Response> response { get; set; }
}
4) Выкидываем ненужные параметры и обворачиваем все в namespace JSOND (для подключение нашего класса из общего кода в using)
Код:
namespace JSOND
{
public class Response
{
public int uid { get; set; }
public string first_name { get; set; }
public string last_name { get; set; }
public int online { get; set; }
}
public class RootObject
{
public List<Response> response { get; set; }
}
}
5) Подключаем библиотеку Newtonsoft.Json.dll (скачать)
7) Прописываем код из пункта "4", в новую фичу зеннопостера - "ОБЩИЙ КОД" . Она позволяет нам переносить все классы кода , заменяя прежние костыли (генераций dll с нашими классами в Devel Studio).
+ Добавляем в USING
using Newtonsoft.Json;
using JSOND;
Добавляем этот код в c# сниппет
Код:
string json = project.Variables["json"].Value; // тут наш json
var table = project.Tables["table"]; // Имя таблицы
RootObject obj = JsonConvert.DeserializeObject<RootObject>(json);
//перебираем все елементы обьекта
for (int i = 0; i < obj.response.Count; i++)
{
//формируем строку
string str = String.Format("{0};{1};{2};{3}", obj.response[i].uid, obj.response[i].first_name, obj.response[i].last_name, obj.response[i].online);
//{0};{1};{2};{3} и obj.response[i].uid, obj.response[i].first_name, obj.response[i].last_name, obj.response[i].online можно менять (это наш рабочий черновик)
table.AddRow(str);
//пишем в таблицу строку
}
return 1;
Кто еще не работает с новым зеннопостером, то ему подойдет этот вариант разбора JSON.
- Номер конкурса статей
- Третий конкурс статей
- Тема статьи
- Парсинг
Вложения
Последнее редактирование:




все вопросы к нему.....

