|
| Дата |
|
USD/RUB | 93.7196 | BTC/USD | 64695.1222 |
|
|
|
Объявления о покупке/продаже товаров и услуг Также в этом разделе следует размещать и предложения о сотрудничестве. |
13.07.2013, 00:40
|
#1
|
Senior Member
Регистрация: 18.05.2009
Сообщений: 928
Бабло: $196595
|
Спарсю бесплатно на Ocaml
Хочу изучить новый язык. Интерсней учить на каких-то реальных задачах. Если кому-то надо спарсить что-нибудь простое, пишите сюда, попробую спарсить c помощью Ocaml.
__________________
TgScan - узнай Telegram группы, в которых состоит человек
|
|
|
14.07.2013, 11:18
|
#2
|
coder
Регистрация: 25.04.2010
Сообщений: 52
Бабло: $12590
|
Ищешь альтернативу питону?
На питоне взять пару тысяч прокси и быстро спарсить пару тысяч разных страниц какого-то сайта - это проблема по ресурсам (gevent - глючит, pycurl не в счет, там другие нюансы).
А как на Ocaml с этим обстоят дела?
Очень интересно, поделись экспериментами, когда будешь парсить.
|
|
|
14.07.2013, 12:41
|
#3
|
Senior Member
Регистрация: 18.05.2009
Сообщений: 928
Бабло: $196595
ТС -->
|
ТС
> На питоне взять пару тысяч прокси и быстро спарсить пару тысяч разных страниц какого-то сайта - это проблема по ресурсам (gevent - глючит, pycurl не в счет, там другие нюансы).
Если честно, пара тысяч страниц через проксики - это по моей классификации довольно простое задание, не вижу проблем никаких. Я уже давно пилю свой фреймворк для парсинга ( http://grablib.org), все рутинние операции и проблемы давно уже там решены, работает на pycurl/multicurl. Можно и gevent прикрутить, но пока не возникало надобности.
Сейчас делаю сервис по подбору дропов, сделал на базе celery + Grab.
Цитата:
А как на Ocaml с этим обстоят дела?
Очень интересно, поделись экспериментами, когда будешь парсить.
|
Да пока не знаю, я даже tutorial не открывал. Вот как будет задача какая-то реальная, открою маны, буду смотреть как задача решается. Ocaml просто для интереса хочу поковырять.
__________________
TgScan - узнай Telegram группы, в которых состоит человек
|
|
|
15.07.2013, 04:29
|
#4
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
|
а почему OCaml ?
лучше ковырни haskell/erlang/scala
|
|
|
15.07.2013, 14:06
|
#5
|
кодер-энтузиаст
Регистрация: 04.04.2007
Адрес: Джамайка
Сообщений: 3,381
Бабло: $447150
|
Плюсую эрланг
|
|
|
15.07.2013, 17:36
|
#6
|
coder
Регистрация: 25.04.2010
Сообщений: 52
Бабло: $12590
|
Цитата:
Сообщение от lorien
>Если честно, пара тысяч страниц через проксики - это по моей классификации довольно простое задание, не вижу проблем никаких.
|
какая максимальная скорость получается url/сек ?
|
|
|
15.07.2013, 18:45
|
#7
|
Senior Member
Регистрация: 18.05.2009
Сообщений: 928
Бабло: $196595
ТС -->
|
ТС
> какая максимальная скорость получается url/сек ?
Мне трудно говорить о сферическом коне в вакууме, давай ты дашь список на пару десятков тыщ урлов, я их скачаю через 3000 fineproxy проксей и скажу скорость. Также уточни, что происходит после скачивания, сохраняется файл или парсится html (строится его DOM, вычленяются какие-то данные).
Цитата:
а почему OCaml ?
лучше ковырни haskell/erlang/scala
|
Мне нравится название языка, красивое. Хаскел как-то ковырял, не понравилось. Про ерланг, скалу ничего не знаю. Я ж всё таки программинг как творчество воспринимаю, поэтому и на питоне так долго, довольно просто творить на нём, открыл редактор, набросал код - готово.
__________________
TgScan - узнай Telegram группы, в которых состоит человек
|
|
|
15.07.2013, 23:18
|
#8
|
coder
Регистрация: 25.04.2010
Сообщений: 52
Бабло: $12590
|
Сферический конь - все сайты в зоне ru
Сканировал весь рунет до 3-го уровня на pycurl, обрабатывал и складывал в mongodb.
Сам по себе pycurl бегает шустро (у меня выходило 200 url в сек), но если параллельно обрабатывать результат на этом же сервере, ресурсов жрется просто немярено.
Если углубишься в Ocaml, просто поделись впечатлениями, как он по ресурсам. Возможно будет похожая задача. Просто Python не для мега промышленных масштабов. Или я чего-то не догоняю.
|
|
|
16.07.2013, 11:48
|
#9
|
Senior Member
Регистрация: 18.05.2009
Сообщений: 928
Бабло: $196595
ТС -->
|
ТС
> Сканировал весь рунет до 3-го уровня на pycurl, обрабатывал и складывал в mongodb. Сам по себе pycurl бегает шустро (у меня выходило 200 url в сек), но если параллельно обрабатывать результат на этом же сервере, ресурсов жрется просто немярено.
Получилось спарсить? Сколько места заняло это всё дело? А как парсишь регекспами или DOM строишь?
__________________
TgScan - узнай Telegram группы, в которых состоит человек
|
|
|
16.07.2013, 15:48
|
#10
|
coder
Регистрация: 25.04.2010
Сообщений: 52
Бабло: $12590
|
Цитата:
Сообщение от lorien
Получилось спарсить? Сколько места заняло это всё дело? А как парсишь регекспами или DOM строишь?
|
Не до конца. Забил 2Тб винт под завязку и остановил.
Я особо не торопился, поэтому строил DOM на BeautifulSoup. Но для более быстрого варианта у меня есть классы и на регекспах. Когда нужна скорость, использую их. Еще читал что libxml вроде как шустрее, чем BeautifulSoup.
Проблема Python. В pycurl multi я заряжаю список url, прохожу по ним, потом всю инфу надо отдельно обработать, пропустить через базу, по мере добавления информации база растет и начинаются тормоза, затем зарядить новый список url (на разные сайты). И так каждый раз по новой.
Ни одно решение у меня не получилось сделать, так чтобы в отдельном процессе был свой краулер на свой сайт.
То есть к примеру зарядить двух тысяч пауков, чтобы каждый паук шел на свой сайт и проходил там до 3-го уровня, а потом просто сливать готовую информацию с каждого паука в базу.
multiprocessing не позволяет сделать такое количество. Вменяемое кол-во процессов 50 - 100.
gevent в связке с urllib2 имеет косяк, если ДНС не резолвится, то таймаут не помогает, он просто зависает.
Поэтому чую для таких задач надо прибегать к помощи другого языка.
У тебя есть решение на Питоне, так чтобы зарядить хотя бы тысячу пауков, чтобы каждый работал сам по себе и шел до заданного уровня?
|
|
|
|