Я хочу обеспечить следующее:
- < li>Создавайте экземпляр браузера только один раз.
- Проверяйте URL-адреса параллельно (3–8 одновременных проверок).
- Эффективно обрабатывайте до 1000 URL-адресов. .
JavaScript и Python подходят.
Дополнительная информация
- Экземпляр внешнего браузера: без браузера
мой прототип
Код: Выделить всё
async def check_bookmark(context, url):
page = await context.new_page()
try:
await page.goto(url)
status = await page.evaluate('() => document.readyState')
if status == 'complete':
print(f"{url} is valid")
else:
print(f"{url} is invalid")
except Exception as e:
print(f"{url} is invalid: {str(e)}")
finally:
await page.close()
async def main():
bookmark_urls = ["https://example.com"]
async with async_playwright() as p:
browser = await p.firefox.connect('ws://localhost:3000/playwright/firefox')
contexts = []
for i in range(0, 3):
context = await browser.new_context()
contexts.append(context)
tasks = []
num_contexts = len(contexts)
num_urls = len(bookmark_urls)
urls_per_context = num_urls // num_contexts
for i in range(num_contexts):
start_index = i * urls_per_context
end_index = start_index + urls_per_context
urls_subset = bookmark_urls[start_index:end_index]
for url in urls_subset:
tasks.append(check_bookmark(contexts[i], url))
await asyncio.gather(*tasks)
await browser.close()
if __name__ == '__main__':
asyncio.run(main())
Подробнее здесь: https://stackoverflow.com/questions/786 ... browser-co