Pull to refresh
22
0
Архипов Сергей @flint

User

Send message

Практически все фреймворки для скрапинга асинхронные. От Scrapy до менее известных вроде Grab. Чем отличается ваш подход?

Все верно, именно так и живет все, что касается, например, ShadowSocks: быстро разворачиваем, пользуемся, пока не прибили. Сами прокси передаются либо сарафанным радио (во всех клиентах даже есть возможность считывания QR-кода + его генерация для каких-нибудь существующих), либо через сайты вроде free-ss.site Какие уж спонсорские штуки, да множественные секреты.
А можете сделать 2 образа, один с pypy, другой с cpython (либо один образ, но с опциональным переключением)? Если память является узким местом, то PyPy — не лучший выбор. Помимо скорости, он еще ощутимо более прожорливый в смысле оперативки.
Эти 10 адресов будут наверняка в одной небольшой подсети)
Прикинуться определенным юзерагентом — это здравая мысль, но помогает только в самых простых случаях. Еще нужно отправлять те хедеры, что посылает тот браузер, под который идет закос, причем очень желательно посылать в том же порядке, в котором их сам браузер и расставляет.
Далеко не все банят очевидным 429, к слову. Многие предпочитают, например, начинать показывать капчу. Капча — тот же бан в смысле парсинга: вебсайт защищает свой контент от показа.
Ирония заключается в том, что для промышленных скраперов язык совершенно неважен, важно написать его быстро, без ошибок и устойчивым к изменениям со стороны самого сайта.

Дело в том, что многие вебсайты — особенно популярные, которые представляют интерес с точки зрения данных, — так или иначе защищаются от скрапинга, поэтому довольно быстро вы сами себе по рукам начнете давать, ограничивая количество запросов с секунду, чтобы не получить лишний бан. Либо будете ограничивать RPS, чтобы вебсайт не накатал abuse report на ваши действия, которые быстро покажутся подозрительными.

В случае масштабных кравлов (3000000 сайтов) быстро понадобится какая-то инфраструктура, и там язык уж точно не будет ботлнеком. Посмотрите на Frontera, как раз-таки промышленный инструмент для подобной задачи.
Да, у нас как раз есть решение, которое может помочь с банами: Crawlera.
Ну так очень много тестирования делается на Python, что в этом удивительного. А так, совершенно верное наблюдение: в НН исторически самые крупные компании, всасывающие студентов, — аутсорсеры; многие так или иначе карьеру начинали там. Плюс, как минимум из-за размера таких компаний, у них вакансий существенно больше.
Если я правильно понимаю, то в основе OT лежит идея, близкая к Treedoc и Logoot. Вы не смотрели на подобные CRDT?
Привет. А можно и мне промокод, чтобы потестировать?
Вы могли бы потратить несколько минут на уточнение задания и тем самым сэкономить несколько часов, не реализуя того, что никому не нужно. Одно из наших тестовых заданий примерно такое же по сложности, и здесь суть в том, чтобы можно было увидеть общий подход к решению задач: простоту, понятность, вопросы, удобочитаемость кода, комментарии, тесты, логирование, использование линтеров, легкость установки и тп. Небольшое приложение, которое в кратчайшие сроки можно оформить как следует. Как правило, после просмотра кода у кандидата всегда спрашивают, какие он сам видит недостатки у своего решения, и что бы он поменял перед выпуском в продакшн.

К сожалению, данное тестовое задание было наполнено по большей части поиском библиотек и администрированием, в нем очень мало программирования. Что хотел выяснить работодатель этим заданием мне не очень понятно.

А это самое первое, что нужно выяснять, когда берешься за любую задачу. На основе простого тестового задания, вы придумали какое-то свое, особенное, и делали уже его.
Как уже упоминали, есть set relativenumber. Но если хочется попадать сразу куда-то, то есть плагины вроде Easy Motion (в том числе и для Sublime Text). В этом случае скорость зависит только от знания раскладки клавиатуры.
Как вариант — некоторое время использовался Vagrant, но это всё-таки ovrerhead и наши поиски оптимального способа привели, на данный момент, к Docker.

Vagrant не исключает Docker, более того, Vagrant поддерживает его уже не первый день.
А каким образом вы боретесь с неконсистентностью данных? Скажем, поднимается датацентр, включается в работу, а данные уже рассинхронизированы. Как перенаправляете запросы, каким образом реагируете на непредсказуемую задержку в этом случае? Особенно интересно, каким образом все восстанавливается в случае географически удаленных датацентров.
Согласен, допишу немного позже. Она пока куцая, не спорю.
1
23 ...

Information

Rating
Does not participate
Location
Нижегородская обл., Россия
Date of birth
Registered
Activity