Невозможно выполнить бесконечную прокрутку с помощью драматурга на определенном веб-сайте.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно выполнить бесконечную прокрутку с помощью драматурга на определенном веб-сайте.

Сообщение Anonymous »

Я просматриваю https://kick.com/browse/categories, где каждый раз, когда вы прокручиваете, загружаются новые карточки категории. Я пробовал несколько методов с помощью драматурга, но ни один из них не сработал.
Буду признателен за любые предложения.
Я пробовал использовать консоль отладчика 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
await page.wait_for_load_state("networkidle", timeout=60000)
for _ in range(100): # Adjust the range according to how much you want to scroll
await page.keyboard.press("PageDown")
  • колесо мыши
await page.mouse.wheel(0, 150000)
time.sleep(10)
  • прокрутка до локатора, указывающего в конец списка
cards = page.locator("div.flex.flex-col.items-start")
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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»