Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Разное > Объявления о покупке/продаже товаров и услуг
Дата
USD/RUB59.1340
BTC/USD0.0000
Объявления о покупке/продаже товаров и услуг Также в этом разделе следует размещать и предложения о сотрудничестве.

Закрытая тема
Опции темы Опции просмотра
Старый 13.07.2013, 00:40   #1
lorien
Senior Member
 
Аватар для lorien
 
Регистрация: 18.05.2009
Сообщений: 879
Бабло: $177835
Отправить сообщение для lorien с помощью Skype™
По умолчанию Спарсю бесплатно на Ocaml

Хочу изучить новый язык. Интерсней учить на каких-то реальных задачах. Если кому-то надо спарсить что-нибудь простое, пишите сюда, попробую спарсить c помощью Ocaml.
lorien вне форума  
Старый 14.07.2013, 11:18   #2
vlad0708
coder
 
Аватар для vlad0708
 
Регистрация: 25.04.2010
Сообщений: 48
Бабло: $9050
По умолчанию

Ищешь альтернативу питону?

На питоне взять пару тысяч прокси и быстро спарсить пару тысяч разных страниц какого-то сайта - это проблема по ресурсам (gevent - глючит, pycurl не в счет, там другие нюансы).

А как на Ocaml с этим обстоят дела?
Очень интересно, поделись экспериментами, когда будешь парсить.
vlad0708 вне форума  
Старый 14.07.2013, 12:41   #3
lorien
Senior Member
 
Аватар для lorien
 
Регистрация: 18.05.2009
Сообщений: 879
Бабло: $177835
ТС -->
Отправить сообщение для lorien с помощью Skype™
автор темы ТС По умолчанию

> На питоне взять пару тысяч прокси и быстро спарсить пару тысяч разных страниц какого-то сайта - это проблема по ресурсам (gevent - глючит, pycurl не в счет, там другие нюансы).

Если честно, пара тысяч страниц через проксики - это по моей классификации довольно простое задание, не вижу проблем никаких. Я уже давно пилю свой фреймворк для парсинга (http://grablib.org), все рутинние операции и проблемы давно уже там решены, работает на pycurl/multicurl. Можно и gevent прикрутить, но пока не возникало надобности.

Сейчас делаю сервис по подбору дропов, сделал на базе celery + Grab.

Цитата:
А как на Ocaml с этим обстоят дела?
Очень интересно, поделись экспериментами, когда будешь парсить.
Да пока не знаю, я даже tutorial не открывал. Вот как будет задача какая-то реальная, открою маны, буду смотреть как задача решается. Ocaml просто для интереса хочу поковырять.
lorien вне форума  
Старый 15.07.2013, 04:29   #4
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,382
Бабло: $470735
По умолчанию

а почему OCaml ?

лучше ковырни haskell/erlang/scala
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 15.07.2013, 14:06   #5
medar
кодер-энтузиаст
 
Аватар для medar
 
Регистрация: 04.04.2007
Адрес: Джамайка
Сообщений: 3,410
Бабло: $447110
По умолчанию

Плюсую эрланг
medar вне форума  
Старый 15.07.2013, 17:36   #6
vlad0708
coder
 
Аватар для vlad0708
 
Регистрация: 25.04.2010
Сообщений: 48
Бабло: $9050
По умолчанию

Цитата:
Сообщение от lorien Посмотреть сообщение
>Если честно, пара тысяч страниц через проксики - это по моей классификации довольно простое задание, не вижу проблем никаких.
какая максимальная скорость получается url/сек ?
vlad0708 вне форума  
Старый 15.07.2013, 18:45   #7
lorien
Senior Member
 
Аватар для lorien
 
Регистрация: 18.05.2009
Сообщений: 879
Бабло: $177835
ТС -->
Отправить сообщение для lorien с помощью Skype™
автор темы ТС По умолчанию

> какая максимальная скорость получается url/сек ?

Мне трудно говорить о сферическом коне в вакууме, давай ты дашь список на пару десятков тыщ урлов, я их скачаю через 3000 fineproxy проксей и скажу скорость. Также уточни, что происходит после скачивания, сохраняется файл или парсится html (строится его DOM, вычленяются какие-то данные).

Цитата:
а почему OCaml ?

лучше ковырни haskell/erlang/scala
Мне нравится название языка, красивое. Хаскел как-то ковырял, не понравилось. Про ерланг, скалу ничего не знаю. Я ж всё таки программинг как творчество воспринимаю, поэтому и на питоне так долго, довольно просто творить на нём, открыл редактор, набросал код - готово.
lorien вне форума  
Старый 15.07.2013, 23:18   #8
vlad0708
coder
 
Аватар для vlad0708
 
Регистрация: 25.04.2010
Сообщений: 48
Бабло: $9050
По умолчанию

Сферический конь - все сайты в зоне ru
Сканировал весь рунет до 3-го уровня на pycurl, обрабатывал и складывал в mongodb.

Сам по себе pycurl бегает шустро (у меня выходило 200 url в сек), но если параллельно обрабатывать результат на этом же сервере, ресурсов жрется просто немярено.

Если углубишься в Ocaml, просто поделись впечатлениями, как он по ресурсам. Возможно будет похожая задача. Просто Python не для мега промышленных масштабов. Или я чего-то не догоняю.
vlad0708 вне форума  
Старый 16.07.2013, 11:48   #9
lorien
Senior Member
 
Аватар для lorien
 
Регистрация: 18.05.2009
Сообщений: 879
Бабло: $177835
ТС -->
Отправить сообщение для lorien с помощью Skype™
автор темы ТС По умолчанию

> Сканировал весь рунет до 3-го уровня на pycurl, обрабатывал и складывал в mongodb. Сам по себе pycurl бегает шустро (у меня выходило 200 url в сек), но если параллельно обрабатывать результат на этом же сервере, ресурсов жрется просто немярено.

Получилось спарсить? Сколько места заняло это всё дело? А как парсишь регекспами или DOM строишь?
lorien вне форума  
Старый 16.07.2013, 15:48   #10
vlad0708
coder
 
Аватар для vlad0708
 
Регистрация: 25.04.2010
Сообщений: 48
Бабло: $9050
По умолчанию

Цитата:
Сообщение от lorien Посмотреть сообщение
Получилось спарсить? Сколько места заняло это всё дело? А как парсишь регекспами или DOM строишь?
Не до конца. Забил 2Тб винт под завязку и остановил.
Я особо не торопился, поэтому строил DOM на BeautifulSoup. Но для более быстрого варианта у меня есть классы и на регекспах. Когда нужна скорость, использую их. Еще читал что libxml вроде как шустрее, чем BeautifulSoup.

Проблема Python. В pycurl multi я заряжаю список url, прохожу по ним, потом всю инфу надо отдельно обработать, пропустить через базу, по мере добавления информации база растет и начинаются тормоза, затем зарядить новый список url (на разные сайты). И так каждый раз по новой.

Ни одно решение у меня не получилось сделать, так чтобы в отдельном процессе был свой краулер на свой сайт.

То есть к примеру зарядить двух тысяч пауков, чтобы каждый паук шел на свой сайт и проходил там до 3-го уровня, а потом просто сливать готовую информацию с каждого паука в базу.

multiprocessing не позволяет сделать такое количество. Вменяемое кол-во процессов 50 - 100.

gevent в связке с urllib2 имеет косяк, если ДНС не резолвится, то таймаут не помогает, он просто зависает.

Поэтому чую для таких задач надо прибегать к помощи другого языка.

У тебя есть решение на Питоне, так чтобы зарядить хотя бы тысячу пауков, чтобы каждый работал сам по себе и шел до заданного уровня?
vlad0708 вне форума  
Закрытая тема



Опции темы
Опции просмотра