Есть ли способ превратить find_all
в более эффективный генератор памяти? Например:Генератор BeautifulSoup `find_all`
Дано:
soup = BeautifulSoup(content, "html.parser")
return soup.find_all('item')
Я хотел бы использовать вместо:
soup = BeautifulSoup(content, "html.parser")
while True:
yield soup.next_item_generator()
(предположим, надлежащее вручение окончательного StopIteration
исключения)
Есть некоторые генераторы, построенные в , но не дать следующий результат в поиске. find
возвращает только первый элемент. С тысячами пунктов, find_all
засасывает лот памяти. Для 5792 пунктов, я вижу всплеск чуть более 1 ГБ ОЗУ.
Мне хорошо известно, что есть более эффективные парсеры, такие как lxml, которые могут это сделать. Предположим, что существуют другие ограничения для бизнеса, которые мешают мне использовать что-либо еще.
Как я могу превратить find_all
в генератор для итерации в более памяти с эффективным способом.
Красивые. Отличный способ взглянуть на проблему. –
Очень приятное решение :) – Dekel