python 版的playwright 如何并发爬取
时间: 2024-04-26 08:26:26 浏览: 117
要在 Python 中使用 Playwright 进行并发爬取,可以使用 asyncio 库。以下是一个简单的示例代码:
```python
import asyncio
from playwright.async_api import Playwright, async_playwright
async def scrape_page(browser: Playwright, url: str) -> str:
page = await browser.new_page()
await page.goto(url)
content = await page.content()
await page.close()
return content
async def main():
urls = ['http://example.com', 'http://google.com', 'http://bing.com']
async with async_playwright() as p:
browser = await p.chromium.launch()
tasks = [scrape_page(browser, url) for url in urls]
results = await asyncio.gather(*tasks)
await browser.close()
for result in results:
print(result)
asyncio.run(main())
```
在这个示例代码中,我们首先定义了一个 `scrape_page` 函数,用于爬取指定 URL 的页面内容。然后,在 `main` 函数中,我们定义了要爬取的 URL 列表,并使用 `asyncio.gather` 方法在一个浏览器实例中并发执行 `scrape_page` 函数。最后,我们输出爬取结果。
这是一个非常简单的示例,实际应用中可能需要更复杂的逻辑,比如处理异常、设置代理等等。但是基本思路是相同的:使用 asyncio 库实现并发爬取。
阅读全文