Я создал скрипт, использующий python в сочетании с pyppeteer , чтобы продолжать нажимать на кнопку следующей страницы, пока не будет больше. Скрипт при нажатии на кнопку следующей страницы выдает эту ошибку pyppeteer.errors.TimeoutError: Navigation Timeout Exceeded: 30000 ms exceeded.
, указывающую на эту строку await page.waitForNavigation()
. Однако он может анализировать name
и item_type
с целевой страницы этого сайта. Я знаю, что могу отправлять запросы http с соответствующей полезной нагрузкой, чтобы получить оттуда данные, но я намерен использовать pyppeteer
и продолжать нажимать на кнопку следующей страницы, анализируя необходимые поля.
адрес веб-сайта
import asyncio
from pyppeteer import launch
link = "https://www.e-ports.com/ships"
async def get_content():
wb = await launch(headless=True)
[page] = await wb.pages()
await page.goto(link)
while True:
await page.waitForSelector(".common_card", {'visible':True})
elements = await page.querySelectorAll('.common_card')
for element in elements:
name = await element.querySelectorEval('span.title > a','e => e.innerText')
item_type = await element.querySelectorEval('.bottom > span','e => e.innerText')
print(name.strip(),item_type.strip())
try:
await page.click("button.btn-next")
await page.waitForNavigation()
except Exception: break
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(get_content())
Кстати, если я впервые вручную нажму кнопку следующей страницы, остальное выполнится успешно.