Задать вопрос

Какие есть библиотеки для работы с сетью?

Существует ли какие-нибудь библиотеки для C++, через которые возможен парсинг веб-страниц и загрузка этой информации в файлы либо в БД?

Если да, то будут ли они быстрее работать обычного file_get_contents в php?

P.S. Библиотека необходима для загрузки большого числа страниц (около 5 млн.) и сохранения информации с них.

  • Вопрос задан
  • 3549 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 4
EugeneOZ
@EugeneOZ

99% времени уйдёт на скачивание контента (5000000 страниц это не хухры мухры). Тут хоть на бейсике писать можно. Ну, конечно, C++ будет быстрее, но в абсолютных величинах, по итогам выполнения этой задачи, это вряд ли будет заметно.

Ответ написан
Комментировать
afiskon
@afiskon

Мне кажется, вашу задачу лучше на Perl решать или на Python, но никак не на C++.

Ответ написан
Комментировать
alekciy
@alekciy
Вёбных дел мастер

Я использую MultiCurl. Запускаю 100 загрузок, через bash запускается 20 копий скрипта (IPC реализовано через очередь в Redis). 18кссылок отрабатывает за 10 минут (около 30 в секунду). Но скрипт не просто качает, он проводит анализ страницы, перекодирует в требуемую кодировку, строит DOM страницы и через XPath вытягивает нужные данные. При этом каждая копия жрет где-то 50МБ. Схема простая и легко масштабируемая горизонтально.

Кстати, нужно понимать/разделять процесс скачки страницы и её парсинг. Первое может легко и непринужденно делать wget.

Сишные либы дадут в принципе один плюс - экономию ОЗУ (т.е. nelis заблуждается). В остальном больше времени уйдет на взаимодействие с сетью и записи данных в базу.

file_get_contents без задания контекстов использовать категорически нельзя. Ибо 1) это блокируемая функция, 2) не содержит таймаутов.

Ответ написан
Комментировать

Не скажу про существующие библиотеки, так как на C++ не писал ничего. Но, работа это будет быстрее чем на PHP (тем более, с учетом того объема, что Вы указали) - точно, хотя бы потому что PHP это интерпретируемый язык.

Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽