With the development of service-oriented computing environments, QoS-aware service selection has been a more and more important research issue. In service composition environments, QoS attributes of atomic services are always aggregated for computing the QoS of the composite services, which has been reported in many previous studies. However, there are situations that some QoS attributes cannot be aggregated for composite services. For example, it is difficult to compute the translation quality of a composite translation service by simply aggregating its component atomic services (machine translation service, morphological analysis service, dictionary service). Moreover, when multiple QoS attributes are used for evaluating services, it is always difficult to maximize all the QoS attributes because there might be anti-correlated relations between them. To address above problems, this paper proposes an approach for selecting services based on context-aware factors of QoS attributes. In our proposed approach, context-aware factors that affect QoS attributes are first extracted from analyzing their correlation with QoS attributes. Then, QoS data is generated based on the extracted factors for QoS prediction and evaluation. Further, dynamic service selection is realized based on QoS prediction and evaluation considering user requirements. We use a case study in the domain of language service with some experiments to show the effectiveness of our approach.