By implementing algorithmic versions of Sapozhenko's graph container methods, we give new algorithms for approximating the number of independent sets in bipartite graphs. Our first algorithm applies to d-regular, bipartite graphs satisfying a weak expansion condition: when d is constant, and the graph is a bipartite Ω(log 2 d/d)-expander, we obtain an FPTAS for the number of independent sets. Previously such a result for d > 5 was known only for graphs satisfying the much stronger expansion conditions of random bipartite graphs. The algorithm also applies to weighted independent sets: for a d-regular, bipartite α-expander, with α > 0 fixed, we give an FPTAS for the hard-core model partition function at fugacity λ = Ω(log d/d 1/4 ). Finally we present an algorithm that applies to all d-regular, bipartite graphs, runs in time exp O n • log 3 d d , and outputs a (1 + o(1))-approximation to the number of independent sets.