小编Spu*_*nik的帖子

获取嵌套 url 时如何在 asyncio 中链接协程

我目前正在设计一个蜘蛛来抓取特定的网站。我可以同步完成,但我正在尝试了解 asyncio 以使其尽可能高效。我尝试了很多不同的方法,yieldchained functionsqueues无法使其发挥作用。

我最感兴趣的是设计部分和解决问题的逻辑。不是必需的可运行代码,而是强调 assyncio 最重要的方面。我无法发布任何代码,因为我的尝试不值得分享。

使命:

example.com(我知道,应该是 example.com)有以下设计:

在此输入图像描述

以同步方式,逻辑将是这样的:

for table in my_url_list:
    # Get HTML
    # Extract urls from HTML to user_list
    for user in user_list:
        # Get HTML
        # Extract urls from HTML to user_subcat_list
        for subcat in user_subcat_list:
            # extract content
Run Code Online (Sandbox Code Playgroud)

但现在我想异步抓取网站。假设我们使用 5 个实例(pyppeteer 中的选项卡或 aiohttp 中的请求)来解析内容。我们应该如何设计它以使其最高效以及我们应该使用什么 asyncio 语法?

更新

感谢@user4815162342解决了我的问题。我一直在研究他的解决方案,如果其他人想使用 asyncio,我会在下面发布可运行的代码。

import asyncio
import random
 
my_url_list = ['exemple.com/table1', 'exemple.com/table2', 'exemple.com/table3']


# Random sleeps to simulate requests to the …
Run Code Online (Sandbox Code Playgroud)

python web-scraping python-asyncio python-3.7

3
推荐指数
1
解决办法
1127
查看次数

标签 统计

python ×1

python-3.7 ×1

python-asyncio ×1

web-scraping ×1