Traditional steganalysis methods usually rely on handcrafted features. However, with the rapid development of advanced steganography, manual design of complex features has become increasingly difficult. In this paper, we propose a new paradigm for steganalysis based on the concept of feature learning. In our method, Convolutional Neural Network (CNN) is used to automatically learn features for steganalysis. To make CNN work better for steganalysis, we incorporate domain knowledge of steganalysis (i.e. enhancing stego noise and exploiting nearby dependencies) when designing the CNN architectures. We further propose to use model combination to boost the performance of CNN based method. Additionally, a cropping strategy is proposed to enable the CNN based model to deal with arbitrary input image sizes. We demonstrate the effectiveness of the proposed method against state-of-the-art spatial domain steganographic algorithms such as HUGO, WOW, S-UNIWARD, MiPOD, and HILL-CMD. To help understand the learned features from CNN, we provide visualizations of the learned filters and feature maps. Finally, we also provide quantitative analysis of the learned features from convolutional layers.