Я пытаюсь извлечь список подписчиков в Instagram с базовым кодированием на Python, так как я не эксперт ни в Python, ни в HTML. Итак, мой подход состоит в том, чтобы моделировать человеческие итерации.
В основном я использую Selenium, чтобы открыть страницу подписчиков Instagram, использовал базовую кодировку Python, чтобы прокрутить вниз бесконечную прокрутку, и BeautifulSoup, чтобы очистить список.
Проблема в том, что после нескольких часов прокрутки я достигаю своего предела памяти, потому что список огромен.
Мой текущий подход:
- Получите окно бесконечной прокрутки с помощью:
elemWindow=browser.find_element_by_css_selector('.j6cq2')
- Я прокручиваю вниз, пока ~ 30 новых пользователей не появятся в списке
- Получить всю страницу источника:
pg1=browser.page_source
- Используйте SoupStrainer и BeautifulSoup, чтобы получить весь список (использовал lxml, потому что я искал здесь, и люди говорили, что это быстрее, и это действительно так):
strainer = SoupStrainer("a",{"class":"FPmhX notranslate zsYNt "})
elm1=bs4.BeautifulSoup(pg1, "lxml", parse_only=strainer)
- Затем я экспортирую в Excel только новых пользователей, которые появились (у меня последняя длина списка и новая длина списка, поэтому я экспортирую разницу)
Основная проблема заключается в том, что после нескольких часов прокрутки сценарий останавливается на: pg1=browser.page_source
, возможно, потому что он достиг предела памяти.
Поэтому я пытаюсь выяснить, как сохранить в памяти компьютера только фрагмент HTML новых пользователей, появившихся после прокрутки вниз, и вычистить небольшой список из этого фрагмента html.
Я искал здесь о iterparse
и htmltext.split
ElementTree, но мне не было ясно, следует ли идти по этому пути ...