
Константин
01.06.2016
04:25:58
чтобы не по очереди проходилось по ссылкам
а одновременно

Can
01.06.2016
04:27:33
Task в помощь

Константин
01.06.2016
04:40:09
Я в документации прочитал, что они от spawn отличаются только более красивым выводом сообщений об ошибках

Google

Константин
01.06.2016
04:41:27
Не освсем могу понять.. я вот сделаю, к примеру, 10 процессов Task.. Дальше я создаю receive чтобы забирать данные из процессов
Как понять, что все процессы завершены и прекратить выполнение receive?

Can
01.06.2016
06:13:23
можно рекурсивно вызывать эту же функцию на ресив, с уменьшенным счетчиком

Константин
01.06.2016
06:20:09
Хмм.. ну да
Ну код я пишу через задницу)))))
Работает охренительно
На руби я написал парсер за 1.5 недели
Но там было чуть сложнее чем тут. Зато тут создается 15 процессов и они одновременно собирают инфу.

Evgeny
01.06.2016
07:16:24
А Thread'ы не пробовал использовать для этого? Тоже бы параллельно работало)

Can
01.06.2016
08:47:29
Для распределенных задач должен быть хороший уровень абстракции без ручного вызова recieve
в OTP
Надо поискать

Константин
01.06.2016
09:05:06
Я сейчас столкнулся с такой штукой..

Google

Константин
01.06.2016
09:05:31
title = body |> Floki.find("#content") |> Floki.find("h1.mrg10")
[{"h1", [{"class", "mrg10"}],
[«209, 242, 232, 234, 32, 210, 240, 229, 226, 229, 235»]}]
Блин, отвлекают
Если в двух словах - как преобразовать
«209, 242, 232, 234, 32, 210, 240, 229, 226, 229, 235»
в строку??
iex(11)> List.to_string title
** (FunctionClauseError) no function clause matching in List.to_string/1
(elixir) lib/list.ex:619: List.to_string(«209, 242, 232, 234, 32, 210, 240, 229, 226, 229, 235»)


Can
01.06.2016
09:15:05
@artemeff в edeliver бы идет автоматический своп кода (на уровне замены модулей прост), но если этого мало (надо к примеру роуты у ковбоя перезапустить), то дописывается ручной код, который делает все свопы, которые надо. С первым, насколько я читал, деливер хорошо справляется, а со вторым тебе никто не поможет, один фиг вручную все апгрейды делать специфичные.
@yaBloom <<...>> это binary. В эликсире строки это тоже binary под капотом, так что это и так строка у тебя. Просто она когда нормальными символами не может напечататься - печатается цифрами
Да
да половина мира о нем и не знает)
Рестартят себе сервера и живут норм
Хот своп нужен только если очень долгосрочные процессы висят и не хочется совсем их трогать


Константин
01.06.2016
09:26:33
Что-то я в замешательстве теперь. Получается, что я не смогу никак увидеть читаемы вариант («209, 242, 232, 234, 32, 210, 240, 229, 226, 229, 235»)?
Хмм.. вот оно что!!!
Значит проблема не в этом))
Видать с кодировкой трабла у Floki или HTTPoison

Can
01.06.2016
09:30:18
У них нет проблем с кодировкой)
Они ж не показывают тебе ничего
Они просто бинарник забирают

Константин
01.06.2016
09:31:03
Ну они забирют страницу сайта и парсят, после этого я получаю эту строку

Google

Can
01.06.2016
09:31:08
За что мне нравится эликсир так это то, что перестаешь о строках думать, как о чем-то склеенном с кодировкой.
Строка это бинарник
Просто как бы набор байт
в эликсире она по дефолту utf8
все остальное как бы ебись сам что называется)

Константин
01.06.2016
09:31:38
Это то понятно, но искомая строка явно не Ñòèê Òðåâåë
Я попробую по эксперементировать
Вот)) это искомая строка))

Can
01.06.2016
09:33:32
Я плохо понимаю, как применить то, что они написали внизу. Но суть как бы ясна, у тебя сайт в кирилице скорее всего на cp1251 а эликсир как юникод хавает.
В русском канале слака ребята отписывали что они с проблемами с кодировкой делали

Константин
01.06.2016
09:34:08
Ок, если не нагуглю - напишу туда
решение отпишу тут

Can
01.06.2016
09:36:49
решил схожую проблему с помощью, если кому еще понадобится) https://hex.pm/packages/iconv
Вот оттуда они писали
сем привет, кто нибудь решал проблему с кодировкой. Не могу конвертировать windows-1251 получил через HTTPoison to_string binary_to_list(<<205, 232, 230, 237, 232, 233, 32, 205, 238, 226, 227, 238, 240, 238, 228>>) получаю Íèæíèé Íîâãîðîä
[14:07]
Пробовал https://github.com/woxtu/elixir-mbcs он не запускается Mbcs.start ошибка ex(1)> Mbcs.start ** (UndefinedFunctionError) undefined function :mbcs.start/0 (module :mbcs is not available) :mbcs.start()
Весьма напоминает симптомы)

Константин
01.06.2016
09:38:41
Да, я уже встречался с подобным текстом
походу это оно
Решение http://stackoverflow.com/questions/33868595/problems-with-binaries-when-scraping
Только у меня теперь другая проблема.. HTTPoison не хочет работать в конкурентной среде..

Google

Константин
01.06.2016
10:38:52
буду искать ему замену

Can
01.06.2016
10:39:13
Что значит не хочет работать в конкурентной среде?
https://github.com/edgurgel/httpoison/issues/108

Константин
01.06.2016
11:12:50
Мой косяк, там ссылка неправильно формировалась. Поэтому мне казалось, что он на одной странице топчится
Все супер, парсер пишется)))
Только что-то я начал буксовать
Если бы не многопоточности там всякие - дело было бы проще значительно, но нахрена тогда эликсир нужен?))
Меня дико прикалывает с какой скоростью он проходит по всем страницам, это прям в кайф, когда он меньше чем за минуту проходится по всем страницам сайта. Их там около 250
До завтра всем)))

Rafkat
01.06.2016
12:13:28
скинешь исходники??

Evgeny
01.06.2016
14:58:19
Ждем исходник, заинтересовали меня попробовать для парсинша эликсир, с руби погоняю тесты)

Константин
02.06.2016
01:54:08
Доброе утро всем!! Я думал скинуть исходники, но чет не хочется палиться какой я сайт парсю, а без него этот код будет бесполезен.
Хотя хочется услышать мнения о коде и его улучшении. Давайте я доделаю момент по сбору данных и открою доступ к битбакет проекту.

Rafkat
02.06.2016
03:37:29
ok

Can
02.06.2016
05:04:17
Порно небось
Сотку ставлю трипадвайзер парсишь)

Rafkat
02.06.2016
05:28:56
его кому не лень парсят

Константин
02.06.2016
05:57:49
Я о таком даже не слышал))))
Ахаха

Google

Константин
02.06.2016
05:58:21
Я не хочу палиться, чтобы меня не заблочили.. вот заберу данные и скажу))
Сайт занимается отелями и домами отдыха

Rafkat
02.06.2016
06:00:29
booking