22# -*- coding: utf-8 -*-
33
44
5- from pyquery import PyQuery as pq
5+ # from pyquery import PyQuery as pq
6+ import requests
67
78
89class Lintcode (object ):
@@ -11,36 +12,52 @@ def __init__(self):
1112 self .driver = None
1213
1314 def open_url (self , url ):
14- self .url = url
1515 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 ()
1722
1823 def get_title (self ):
1924 print ('get title...' )
20- title = self .driver ( 'title' ). text ()
25+ title = self .driver [ 'title' ]
2126 return title
2227
2328 def get_description (self ):
2429 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
2946
3047 def get_difficulty (self ):
3148 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' )
3751 return difficulty
3852
3953 def get_tags (self ):
4054 print ('get tags...' )
4155 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' ])
4461 return tags
4562
4663 def _get_related (self ):
@@ -67,12 +84,12 @@ def get_problem_all(self, url):
6784 'difficulty' : difficulty ,
6885 'tags' : tags ,
6986 'description' : description ,
70- 'url' : self ._clean_url ( url )
87+ 'url' : self .url
7188 }
7289 return problem
7390
7491
7592if __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