diff --git a/HTMLKit/CSSSelector.h b/HTMLKit/CSSSelector.h
index d13fb58..a4f8a58 100644
--- a/HTMLKit/CSSSelector.h
+++ b/HTMLKit/CSSSelector.h
@@ -44,6 +44,7 @@ extern NSString * _Nonnull NSStringFromNthExpression(CSSNthExpression expression
@interface CSSSelector : NSObject
-- (BOOL)acceptElement:(nonnull HTMLElement *)element;
++ (nullable instancetype)selectorWithString:(NSString *)stirng;
+- (BOOL)acceptElement:(HTMLElement *)element;
@end
diff --git a/HTMLKit/CSSSelector.m b/HTMLKit/CSSSelector.m
index f3a8e52..14097a7 100644
--- a/HTMLKit/CSSSelector.m
+++ b/HTMLKit/CSSSelector.m
@@ -8,9 +8,20 @@
#import
#import "CSSSelector.h"
+#import "CSSSelectorParser.h"
@implementation CSSSelector
++ (instancetype)selectorWithString:(NSString *)string
+{
+ NSError *error = nil;
+ CSSSelector *instance = [CSSSelectorParser parseSelector:string error:&error];
+ if (error) {
+ return nil;
+ }
+ return instance;
+}
+
- (BOOL)acceptElement:(HTMLElement *)element
{
[self doesNotRecognizeSelector:_cmd];