2
2
# -*- coding: utf-8 -*-
3
3
4
4
5
- from pyquery import PyQuery as pq
5
+ # from pyquery import PyQuery as pq
6
+ import requests
6
7
7
8
8
9
class Lintcode (object ):
@@ -11,36 +12,52 @@ def __init__(self):
11
12
self .driver = None
12
13
13
14
def open_url (self , url ):
14
- self .url = url
15
15
print ('open URL: {}' .format (url ))
16
- self .driver = pq (url = url )
16
+ url = url .strip ('description' )
17
+ url = url .strip ('/' )
18
+ self .url = url
19
+ lintcode_unique_name = url .split ('/' )[- 1 ]
20
+ req_url = 'https://www.lintcode.com/api/problems/detail/?unique_name_or_alias={}&_format=detail' .format (lintcode_unique_name )
21
+ self .driver = requests .get (req_url ).json ()
17
22
18
23
def get_title (self ):
19
24
print ('get title...' )
20
- title = self .driver ( 'title' ). text ()
25
+ title = self .driver [ 'title' ]
21
26
return title
22
27
23
28
def get_description (self ):
24
29
print ('get description...' )
25
- desc_pq = self .driver ('#description' )
26
- desc_html = desc_pq ('.m-t-lg:nth-child(1)' ).html ()
27
- example_html = desc_pq ('.m-t-lg:nth-child(2)' ).html ()
28
- return desc_html + example_html
30
+ desc = self .driver ['description' ]
31
+ notice = self .driver ['notice' ]
32
+ clarification = self .driver ['clarification' ]
33
+ example = self .driver ['example' ]
34
+ challenge = self .driver ['challenge' ]
35
+ desc_full = desc
36
+ if notice :
37
+ desc_full += '\n \n #### Notice\n \n ' + notice
38
+ if clarification :
39
+ desc_full += '\n \n #### Clarification\n \n ' + clarification
40
+ if example :
41
+ desc_full += '\n \n #### Example\n \n ' + example
42
+ if challenge :
43
+ desc_full += '\n \n #### Challenge\n \n ' + challenge
44
+
45
+ return desc_full
29
46
30
47
def get_difficulty (self ):
31
48
print ('get difficulty...' )
32
- progress_bar = self .driver ('.progress-bar' )
33
- original_title = progress_bar .attr ('data-original-title' )
34
- splits = original_title .strip ().split (' ' )
35
- difficulty = splits [1 ]
36
- ac_rate = splits [- 1 ]
49
+ mapping = {1 : 'Easy' , 2 : 'Medium' , 3 : 'Hard' }
50
+ difficulty = mapping .get (self .driver ['level' ], 'unknown' )
37
51
return difficulty
38
52
39
53
def get_tags (self ):
40
54
print ('get tags...' )
41
55
tags = []
42
- for i in self .driver ('#tags.tags a' ):
43
- tags .append (i .text )
56
+ for i in self .driver ['tags' ]:
57
+ if i ['alias' ]:
58
+ tags .append (i ['alias' ])
59
+ else :
60
+ tags .append (i ['name' ])
44
61
return tags
45
62
46
63
def _get_related (self ):
@@ -67,12 +84,12 @@ def get_problem_all(self, url):
67
84
'difficulty' : difficulty ,
68
85
'tags' : tags ,
69
86
'description' : description ,
70
- 'url' : self ._clean_url ( url )
87
+ 'url' : self .url
71
88
}
72
89
return problem
73
90
74
91
75
92
if __name__ == '__main__' :
76
- url = 'http ://www.lintcode.com/en/ problem/palindrome-number/ '
77
- leetcode = Lintcode ()
78
- print (leetcode .get_problem_all (url ))
93
+ url = 'https ://www.lintcode.com/problem/topological-sorting '
94
+ lintcode = Lintcode ()
95
+ print (lintcode .get_problem_all (url ))
0 commit comments