# 使用python进行套利监控2

By [想住大房子的java程序员](https://paragraph.com/@java-3) · 2022-11-30

---

熟悉了python并踩过坑之后，觉得python还是挺好的。毕竟男人嘛，喜新厌旧都是可以理解的。emmmm………

接上一节。

现在开始改写。毕竟一个dex市场是不够的。需要多个。

所以，我们要求有一个集合

    中间两个市场一直无法执行成功。估计是墙的问题。
    FACTORY_ADDRESSES = [
        CRO_FACTORY_ADDRESS,
        # ZEUS_FACTORY_ADDRESS,
        # LUA_FACTORY_ADDRESS,
        SUSHISWAP_FACTORY_ADDRESS,
        UNISWAP_FACTORY_ADDRESS,
    ]
    

    循环的pagesize和最大页数
    BATCH_COUNT_LIMIT = 10
    UNISWAP_BATCH_SIZE = 50
    

修改queryPairs()

    def queryPairs():
        pairList = []
        for i in range(0, len(FACTORY_ADDRESSES)):
            factoryAddress = FACTORY_ADDRESSES[i]
            print("开始查询--->" + factoryAddress)
            result = uniswapQuery.functions.getPairsByIndexRange(factoryAddress, i, UNISWAP_BATCH_SIZE).call()
            for pair in result:
                pairList.append(EthMarketPair(pair[2], pair[0], pair[1]))
    
            if len(result) < UNISWAP_BATCH_SIZE:
                continue
            # 如果需要进行token黑名单的校验，则需要获取下列的token地址，再进行类似!blacklistTokens.includes(tokenAddress)校验
            # if pair[0] == WETH_ADDRESS:
            #     tokenAddress = pair[1]
            # elif pair[1] == WETH_ADDRESS:
            #     tokenAddress = pair[0]
            # else:
            #     continue
        return pairList
    

创建一个查询交易对的函数queryReservesByPairs

    def queryReservesByPairs(marketAddresList):
        # 返回交易对的储备值, token0 -->reserve[0], token1 -->reserve[1], 时间戳reserve[2]
        result = uniswapQuery.functions.getReservesByPairs(marketAddresList).call()
        print("查询获取库存结果:")
        print(result[0])
        return result[0]
    

这里，先暂时进行打印输出，以便我们观察结果。

接下来就是修改main函数。

    if __name__ == '__main__':
        pairList = queryPairs()
        print("查询交易对结果集长度:%d" % len(pairList))
    
        marketAddressList = list(map(lambda pair: pair.marketAddress, pairList))
        print("开始查询交易对储备%d" % +len(marketAddressList))
        print(marketAddressList)
        queryReservesByPairs(marketAddressList)
    

OK,如果顺利，会有以下提示

  

![交易对返回的数据结构](https://storage.googleapis.com/papyrus_images/a7f2aa73f626e155e325e5a61f0ff7a3f2069ce266c3d0678b3aa36430bfe363.png)

交易对返回的数据结构

好了。坐稳了！下一节我们准备要上国道，之后再进收收费站上高速！！！

---

*Originally published on [想住大房子的java程序员](https://paragraph.com/@java-3/python-2)*
