rodgers
@rodgers
PHP,JQuery, Ajax developer

На каком языке будет быстрее парсить?

Вот есть список из 5к сайтов, и через веб форму его добавляют в обработку в PHP скрипте. В одной строке содержится URL:LOGIN:PASS , скрипт заходит, логинится и проверяет права пользователя, а именно загружает 3 страницы (посредством библиотеки cURL) и из одной из них строит DOM модель посредством simple_html_dom parser и результат записывает в файл(или в БД), но на PHP это делается очень долго, и будет выкидывать по превышению времени работы скрипта. Как лучше и на каком языке это можно сделать для ускорения процесса проверки, или хотя бы можно сделать многопоток на PHP? Посоветуйте пожалуйста или ткните где почитать. Заранее благодарен.
  • Вопрос задан
  • 2394 просмотра
Пригласить эксперта
Ответы на вопрос 7
Sly_tom_cat
@Sly_tom_cat
.
Да в принципе можно на любом - главно многопоточность использовать.
Ответ написан
sim3x
@sim3x
Задержки на сети в разы больше времени парсинга

Кроме как запускать одновременно парсинг на 100+ сайтов никак "ускорить" не получится

Для питона scrapy умеет делать такое из коробки
Ответ написан
Deerenaros
@Deerenaros
Программист, математик, задрот и даже чуть инженер
Когда речь идёт об обработке удалённых ресурсов критически важным становится стабильность и качество соединения, его производительность, а также производительность удалённых ресурсов. Если реализовать на Си максимально эффективный парсер сайта, который будет жевать его, допустим, за 1мс и точно такой же на каком-нибудь жирнющем пайтоне, у которого на обработку уйдёт, допустим, 15мс, очевидно эти числа ничто по сравнению со временем, которое будет затрачено на подключению и загрузку требуемого документа: 100мс на подключение, 1мб/10мбпс, итого 200мс только на то, чтобы получить документ, который может ещё с ошибками приехать или не не приехать вовсе, а удалённому серверу ещё и время потребуется, чтобы его обработать.

Итого важным становиться максимально асинхронная работа с загрузкой документа, а его обработка может занимать столько же, сколько идёт загрузка, ибо оная является узким горлом быстрее которого обработать не получится. Некоторым выходом может быть запуск параллельных процессов (потоков) на различные ресурсы, но злоупотреблять этим не стоит, так как ваш канал не резиновый и качество соединения может во много раз упасть, да и у системы есть серьёзные ограничения на количество одновременных соединений.
Ответ написан
@oxidmod
на пыхе через очереди

для 5к событий в очереди сойдет простейшая на базе бд или редиса. Но лучше сразу заморочится и взять что-то посерьезней, Gearman хотябы
Ответ написан
@beduin01
dlang.org
curl вам не потребуется есть code.dlang.org/packages/requests
От Go после C# вы точно исплюетесь. Это как на Basic перейти.
Ответ написан
zo0m
@zo0m
full stack developer
Язык любой, мне нравится для этих целей JavaScript, а именно Node.js + cheerio(можно будет селекторы из jQuery для парсера использовать ) + Promise (удобно управлять потоками парсера)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы