Добрый день всем, интересует подобный парсер как отдельный парсер, либо если это реализуемо, на Net::HTTP. Лимиты у ютуба неплохие для парсинга(до 3000 запросов в секунду, до 5 000 000 запросов в сутки), апарсером бы да без прокси самое то.
Через API гораздо быстрее парсится. Так же если использовать несколько API ключей, то можно и увеличить лимиты.
имело бы смысл если без API медленно парсилось, но даже на демо версии в 100 потоков парсит 50 запросов в минуту на дефолт настройках, т.е. 500 страниц выдачи\мин
при этом необходимо кучу гемора сделать с ключом для API. какая конечная цель? нужны такие дикие объемы что без апи никуда? или скорость ради скорости?
конечная цель конечно скорость, сейчас к примеру для 1 дора (~10к ключей) парсится ютуб 30-60 минут(в зависимости от проксей) хотелось конечно пошустрее с таким софтом как апарсер это более чем реально.
сколько видео на ключ используется? может настройки не оптимизированы? 10к х 1 страницу при нормальном числе потоков должно гораздо быстрее собирать
Парсер YouTube через API за 5 минут: Спойлер: Код пресета Код: eyJwcmVzZXQiOiJZb3VUdWJlIEFQSSIsInZhbHVlIjp7InByZXNldCI6IllvdVR1 YmUgQVBJIiwicGFyc2VycyI6W1siTmV0OjpIVFRQIiwiTm8gUHJveHkiLHsidHlw ZSI6Im92ZXJyaWRlIiwiaWQiOiJxdWVyeWZvcm1hdCIsInZhbHVlIjoiaHR0cHM6 Ly93d3cuZ29vZ2xlYXBpcy5jb20veW91dHViZS92My9zZWFyY2g/cT0kcXVlcnkm a2V5PTxBUElLRVk+JnBhcnQ9c25pcHBldCZtYXhSZXN1bHRzPTEifSx7InR5cGUi OiJvcHRpb25zIiwiaWQiOiJjaGVja0NvbnRlbnQiLCJ2YWx1ZSI6InlvdXR1YmUj c2VhcmNoTGlzdFJlc3BvbnNlIn0seyJ0eXBlIjoib3ZlcnJpZGUiLCJpZCI6ImZv cm1hdHJlc3VsdCIsInZhbHVlIjoiWyUgcmVzdWx0ID0gdG9vbHMucGFyc2VKU09O KGRhdGEpICVddmlkZW9JZDogJHJlc3VsdC5pdGVtcy4wLmlkLnZpZGVvSWQsIHRp dGxlOiAkcmVzdWx0Lml0ZW1zLjAuc25pcHBldC50aXRsZVxcbiJ9XV0sInJlc3Vs dHNGb3JtYXQiOiIkcDEucHJlc2V0IiwicmVzdWx0c1NhdmVUbyI6ImZpbGUiLCJy ZXN1bHRzRmlsZU5hbWUiOiIkZGF0ZWZpbGUuZm9ybWF0KCkudHh0IiwiYWRkaXRp b25hbEZvcm1hdHMiOltdLCJyZXN1bHRzVW5pcXVlIjoibm8iLCJxdWVyeUZvcm1h dCI6WyIkcXVlcnkiXSwidW5pcXVlUXVlcmllcyI6ZmFsc2UsInNhdmVGYWlsZWRR dWVyaWVzIjpmYWxzZSwiaXRlcmF0b3JPcHRpb25zIjp7Im9uQWxsTGV2ZWxzIjpm YWxzZSwicXVlcnlCdWlsZGVyc0FmdGVySXRlcmF0b3IiOmZhbHNlLCJxdWVyeUJ1 aWxkZXJzT25BbGxMZXZlbHMiOmZhbHNlfSwicmVzdWx0c09wdGlvbnMiOnsib3Zl cndyaXRlIjpmYWxzZX0sImRvTG9nIjoibm8iLCJrZWVwVW5pcXVlIjoiTm8iLCJt b3JlT3B0aW9ucyI6ZmFsc2UsInJlc3VsdHNQcmVwZW5kIjoiIiwicmVzdWx0c0Fw cGVuZCI6IiIsInF1ZXJ5QnVpbGRlcnMiOltdLCJyZXN1bHRzQnVpbGRlcnMiOltd LCJjb25maWdPdmVycmlkZXMiOltdfSwicGFyc2Vyc0NvbmZQcmVzZXRzIjp7Ik5l dDo6SFRUUCI6eyJObyBQcm94eSI6eyJxdWVyeWZvcm1hdCI6IiRxdWVyeSIsImdv b2RDb2RlIjoiIiwidXNlcHJveHkiOmZhbHNlLCJmb3JtYXRyZXN1bHQiOiIkY29k ZSAkcmVhc29uXFxuJGhlYWRlcnNcXG5cXG4kZGF0YSIsImRldGVjdGNoYXJzZXQi OjAsInByb3h5cmV0cmllcyI6IjEwIiwidXNlci1hZ2VudCI6Ik1vemlsbGEvNC4w IChjb21wYXRpYmxlOyBNU0lFIDYuMDsgV2luZG93cyBOVCA1LjE7IFNWMSkiLCJj b29raWVzIjoiIiwicmVjdXJzZSI6NywidGltZW91dCI6NjAsIm1ldGhvZCI6IkdF VCIsImRvX2d6aXAiOnRydWUsImJyb3dzZXIiOjAsIm9ubHloZWFkZXJzIjowLCJw cm94eWJhbm5lZGNsZWFudXAiOiIzMDAiLCJtYXhfc2l6ZSI6IjI2MjE0NCIsInJl cXVlc3RkZWxheSI6MCwiaGVhZGVycyI6IiIsImJvZHkiOiIifX19fQ== Стоит отметить что каждый поисковый запрос стоит 100 квоты, т.е. лимит запросов на один API ключ примерно 500к запросов в сутки
Подскажите еще, как вывести все результаты построчно. Сейчас выводится только первый. [% result = tools.parseJSON(data) %]videoId: $result.items.0.id.videoId, title: $result.items.0.snippet.title\n
Измените формат результата: Код: [% result = tools.parseJSON(data); FOREACH result.items; 'videoId: ' _ id.videoId _ ', title: ' _ snippet.title _ ', description: ' _ snippet.description _ "\n"; END %] Кол-во результатов задается в Query format параметром maxResults. Спойлер: Результат Инструкция по получению APIKEY, а также описание возможностей API Youtube: https://developers.google.com/youtube/v3/getting-started
@Forbidden , @Support А как можно в подобном пресете использовать не один токен а например 10/20 штук? Мне в частности не для этого пресета нужно, апи контакта пытаюсь парсить, на один токен ограничения не удовлетворяют мои потребности =(
Нужно, чтобы каждый запрос повторялся с каждым из токенов или для каждого запроса брался один рандомный токен?
для каждого запроса нужно рандомный токен. А еще лучше чтоб токены использовались как то по порядку, таким образом можно хоть как то контролировать "нагрузку" на токены.
Для рандома используйте в формате запроса такой шаблон: Код: [% list = [ 'aaa' 'bbb' 'ccc' 'zzz' ]; USE Math; n = Math.int(Math.rand(list.size)); apikey = list.$n -%] https://www.googleapis.com/youtube/v3/search?q=$query&key=$apikey&part=snippet&maxResults=1 Если нужно по порядку - тогда так: Код: [% list = [ 'aaa' 'bbb' 'ccc' 'zzz' ]; n = query.num % list.size; apikey = list.$n -%] https://www.googleapis.com/youtube/v3/search?q=$query&key=$apikey&part=snippet&maxResults=1 Вместо aaa, bbb... нужно вписать токены.