Буду признателен за любые предложения.
Я пробовал использовать консоль отладчика Chrome, и это сработало. отлично. Каждый раз, когда я запускал div.scrollBy(0, window.innerHeight); document.documentElement.outerHTML;, возвращаемый HTML-код становится все длиннее и длиннее, и ссылок href с /category/ будет все больше и больше.
Однако, Используя следующие подходы драматурга, я всегда получаю один и тот же HTML. Загруженный HTML (напечатанный с помощью page.conent()) после прокрутки всегда будет содержать 64 ссылки href на доступные категории, которые, как я предполагаю, являются первоначально загруженным контентом.
Здесь вот как я настраиваю веб-драйвер
async with async_playwright() as p:
browser = await p.chromium.launch(
args=[f"--proxy-server={PROXY}"], headless=True, executable_path=CHROME
)
context = await browser.new_context(
user_agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36"
)
page = await context.new_page()
await page.goto("https://kick.com/browse/categories")
Что я пробовал:
- прокручивать с помощью ScrollTo
< /ол>
PAGE_DOWN_JS = """
div = document.querySelector('#main-container');
div.scrollBy(0, window.innerHeight);
"""
await page.wait_for_selector("#main-container")
for _ in range(100):
await page.evaluate(PAGE_DOWN_JS)
await page.wait_for_load_state("networkidle", timeout=120000) - отправка ключа PageDown
for _ in range(100): # Adjust the range according to how much you want to scroll
await page.keyboard.press("PageDown")
- колесо мыши
time.sleep(10)
- прокрутка до локатора, указывающего в конец списка
print(f"found {await cards.count()} cards")
all_cards = await cards.all()
await all_cards[-1].scroll_into_view_if_needed()
cards = page.locator("div.flex.flex-col.items-start")
Подробнее здесь: https://stackoverflow.com/questions/789 ... in-website