温馨提示×

在python playwright爬虫中,如何实现并发抓取

小樊
81
2024-12-11 14:41:25
栏目: 编程语言

在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列表以抓取其他网站。

0