|
4 / 4 / 2
Регистрация: 04.04.2015
Сообщений: 186
|
||||||
Beautiful Soup 4, сравнение html-парсеров при запуске в потоке04.04.2018, 21:03. Показов 7565. Ответов 47
Метки нет (Все метки)
Здравствуйте, спарсил страницу с помощью lxml, встроенного в Beautiful Soup - выдал 30 секунд. Не поверил, начал искать ошибки и оптимизировать. Ничего конкретного не получилось, время парсинга примерна такая же. Вспомнил, что у Beautiful Soup есть еще 2 других парсера html.parser и html5lib, в итоге их результаты:
Запуск в отдельном потоке Запуск в общей программе, без создания отдельного потока html.parser:2 1.44 html5lib: 14 5.5 lxml: 30 1.24 И собственно вопрос, почему в потоке lxml так теряет в скорости? Хотя он считается самым быстрым Метод запуска потока:
Вдруг кому-то захочется спарсить эту же страницу ради спортивного интереса: https://www.mvideo.ru/smartfon... rtfony-205 . Парсить только ссылки на телефоны 1 страницы (этой). Пишите библиотеку и язык программирования для сравнения. Должен быть запрос страницы, без сохранения ее на диск, а потом ее парсинга
0
|
||||||
| 04.04.2018, 21:03 | |
|
Ответы с готовыми решениями:
47
Beautiful Soup Python Парсинг на Python с Beautiful Soup
|
|
║XLR8║
|
|||
| 13.04.2018, 15:48 | |||
|
Разберистесь в чем разница между процессом и потоком, и что такое GIL в CPython,
0
|
|||
|
4 / 4 / 2
Регистрация: 04.04.2015
Сообщений: 186
|
||||||||
| 13.04.2018, 16:17 [ТС] | ||||||||
|
Добавлено через 2 минуты Добавлено через 1 минуту Вот этот код Код
Добавлено через 1 минуту Если посмотрите на код, то увидите закоментированные строчки в коде, на разные способы создания потоков/процессов
0
|
||||||||
|
║XLR8║
|
|
| 13.04.2018, 16:56 | |
|
0
|
|
|
|
||
| 13.04.2018, 17:44 | ||
|
Просто подсчитайте какое число корутин у вас запускается в асинхронном коде. Оно куда больше 10. Поэтому семафор с ограничением на 10 дает бОльшую задержку. Есть выставить в семафор любое большое число (безлимит) - асинхронный код должен стать быстрее многопоточного.
0
|
||
|
4 / 4 / 2
Регистрация: 04.04.2015
Сообщений: 186
|
||
| 13.04.2018, 18:13 [ТС] | ||
|
1. ошибка raise asyncio.TimeoutError from None concurrent.futures._base.TimeoutError, как я понял, это ошибка timeout запросов. 2. максимальное количество запросов, которые мы можем отправить серверу, чтобы не получить бан. И в вопросе имелось ввиду некоторого ограничения, которые постоянно будет действовать, в данном случае макс. количество запросов.
0
|
||
|
|
|
| 13.04.2018, 19:37 | |
|
За asyncio.TimeoutError сказать ничего не могу - она возникает у меня только если я сам задам timeout (например 1\10 или 1\100 секунды для запроса страницы). По дефолту там не помню сколько, но достаточно много.
А по семафору, как я уже писал, вы неверно приравниваете выполнение 10 потоков (и фиг знает сколько заданий внутри них) и 10 корутин. Это не одно и тоже. P.S. Советую полностью отрефакторить код - он реально трудночитаемый и вчитываться в него мало кому интересно. Все url, селекторы и прочие строки не харкодятся в функциях, а определяются в переменных. В функциях нужно использовать переменные вместо строк. Пробелы. Код без пробелов - это ужас.
0
|
|
|
4 / 4 / 2
Регистрация: 04.04.2015
Сообщений: 186
|
|
| 19.04.2018, 19:39 [ТС] | |
|
Вообщем для себя я сделал такие выводы: в случае если есть какое то ограничение, например некоторое максимальное количество запросов для сервера, все же лучше использовать concurrent.futures+request. В случае если ограничение не маленькое, либо его вовсе нет, то лучше asyncio
0
|
|
| 19.04.2018, 19:39 | |
|
В чем проблема? (Beautiful Soup) Парсинг Beautiful Soup 4 и Selenium.Webdriver Beautiful Soup - существует ли ограничения на длину получаемых данных? Извлечь атрибуты a href и img src одновременно, используя Beautiful Soup Как убрать soup = BeautifulSoup (html) из кода? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|