使用pyppeteer + 多线程 下载操作文件冲突解决方法

使用pyppeteer + 多线程 下载操作文件冲突解决方法

1、开始 使用信号量控制线程并发访问,但是线程跑起来等待下载操作文件时间较长,效率慢,有些靠后的在等待过程可能ip就过时了,轮到它,再下载文件就报错了。这个用来控制获取代理ip很好

# 使用信号量控制线程并发访问
semaphore = threading.Semaphore()
def main():
	semaphore.acquire()
	proxy = get_ip()
	semaphore.release()

2、后面直接使用浏览器根据线程id,新建文件夹,设置浏览器默认下载目录,完美解决


    page2 = await browser.newPage()
    await sleep(1)
    path_dir = os.path.join('E:\\path', threading.current_thread().name)
    os.makedirs(path_dir, exist_ok=True)
    # 创建CDP会话
    cdp = await page2.target.createCDPSession()
    # 设置下载行为和下载路径
    await cdp.send('Page.setDownloadBehavior', {
        'behavior': 'allow',
        'downloadPath': path_dir  # 指定下载目录
    })
    await page2.goto(url,  timeout=1000 * 60)
    await sleep(3)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值