我创建了一个脚本,使用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())
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())
Btw,如果我第一次手动点击下一页按钮,它就能成功完成剩下的工作。