在Python Playwright爬虫中,实现并发抓取的方法是使用异步编程。Playwright本身支持异步API,因此你可以利用Python的asyncio
库来实现并发抓取。以下是一个简单的示例,展示了如何使用Playwright和asyncio
实现并发抓取:
首先,确保你已经安装了Playwright库:
pip install playwright
然后,创建一个名为concurrent_scraper.py
的文件,并添加以下代码:
import asyncio
from playwright.sync_api import sync_playwright
async def fetch(url):
async with sync_playwright() as p:
browser = await p.chromium.launch()
context = await browser.new_context()
page = await context.new_page()
await page.goto(url)
content = await page.content()
await browser.close()
return content
async def main():
urls = [
'https://example.com/page1',
'https://example.com/page2',
'https://example.com/page3',
]
tasks = [fetch(url) for url in urls]
results = await asyncio.gather(*tasks)
for result in results:
print(result)
if __name__ == '__main__':
asyncio.run(main())
在这个示例中,我们定义了一个名为fetch
的异步函数,它接受一个URL作为参数。这个函数使用Playwright打开一个新的浏览器上下文,导航到指定的URL,获取页面内容,然后关闭浏览器。
在main
函数中,我们创建了一个包含多个URL的列表,并为每个URL创建了一个fetch
任务。然后,我们使用asyncio.gather
并发执行这些任务,并等待它们全部完成。最后,我们打印出每个任务的结果。
要运行这个示例,请在命令行中执行以下命令:
python concurrent_scraper.py
这将并发抓取urls
列表中的所有页面内容,并将结果打印到控制台。你可以根据需要修改urls
列表以抓取其他网站。