Jared Chen 2024-01-18 19:50 采纳率: 100%
浏览 24
已结题

playwright异步操作


 for car_brand in car_brands:
        # 当前访问的车辆品牌信息
        brand = await car_brand.text_content()
        # print(brand)
        await car_brand.click()
        
        await new_page.wait_for_selector('xpath=//table/tbody/tr[contains(@scope,"row")]//a/strong')
        infos = await new_page.query_selector_all('xpath=//table/tbody/tr[contains(@scope,"row")]//a/strong')
        
    
        for info in infos:
            await info.click()
            
        await asyncio.gather(*[info.click()])
        


        await new_page.wait_for_load_state('networkidle')

    
        
        # 写入数据库操作
        for i in range(1, len(infos) + 1): 
            che_type = await new_page.query_selector_all(f"(//div[contains(@class,'tableView')]//tbody/tr[th='车辆种类 ']/td)[{i}]")
            Tecdoc = await new_page.query_selector_all(f"(//div[contains(@class,'tableView')]//tbody/tr[th='TecDoc 型号编号:']/td)[{i}]")
            year = await new_page.query_selector_all(f"(//div[contains(@class,'tableView')]//tbody/tr[th='制造年份']/td)[{i}]")
            KW = await new_page.query_selector_all(f"(//div[contains(@class,'tableView')]//tbody/tr[th='功率']/td)[{i}]")
            CC = await new_page.query_selector_all(f"(//div[contains(@class,'tableView')]//tbody/tr[th='排量']/td)[{i}]")
            engine = await new_page.query_selector_all(f"(//div[contains(@class,'tableView')]//tbody/tr[th='发动机号']/td)[{i}]")
            fuel = await new_page.query_selector_all(f"(//div[contains(@class,'tableView')]//tbody/tr[th='燃油']/td)[{i}]")
            fuel_system = await new_page.query_selector_all(f"(//div[contains(@class,'tableView')]//tbody/tr[th='燃油混合方式']/td)[{i}]")
            print(che_type)

这时部分异步playwright代码,我想在infos循环的info全部执行完再执行下面的解析节点的操作,不然che_type以及其他元素会为[]报错,这该怎么实现infos循环的info全部执行完再执行下面的解析节点的操作

  • 写回答

18条回答 默认 最新

  • weixin_56296963 2024-01-25 22:28
    关注

    根据最新代码,以及网站逻辑,可能是点击比较快,已经点击完成还没来得及加载就已经结束了,可以设置等待一两秒,在

    await new_page.wait_for_load_state('networkidle')
    
    

    判断一下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(17条)

报告相同问题?

问题事件

  • 系统已结题 2月2日
  • 已采纳回答 1月25日
  • 赞助了问题酬金15元 1月18日
  • 创建了问题 1月18日