1+ import json
2+ import requests
3+ import logging
4+ FORMAT = '[%(asctime)s] [%(name)s] [%(levelname)s] %(message)s'
5+ logging .basicConfig (filename = "hata2.log" ,format = FORMAT ,level = logging .DEBUG )
6+ class Movie ():
7+ title = None
8+ id = None
9+
10+ def __init__ (self , title , id ):
11+ logging .info ('Movie Sınıfı {title}, {id} parametreleri ile Oluşturuldu' .format (title = title ,id = id ))
12+
13+ self .session = requests .session ()
14+ self .title = title
15+ self .id = id
16+
17+ def get_info (self ):
18+ logging .info ('{title}, {id} infosu istendi' .format (title = self .title , id = self .id ))
19+
20+ try :
21+ data = self .session .get ('https://www.imdb.com/title/{id}/?ref_=nv_sr_1' .format (id = self .id )).content .decode (
22+ 'utf-8' )
23+ return data .split ('<span itemprop="ratingValue">' )[1 ].split ('<' )[0 ]
24+ except :
25+ return "N/A"
26+
27+ def __str__ (self ):
28+ return "{} ({})" .format (self .title , self .id )
29+
30+ def __unicode__ (self ):
31+ return "{} ({})" .format (self .title , self .id )
32+
33+
34+ class Parser ():
35+ session = None
36+ search_results = []
37+
38+ def __init__ (self ):
39+ self .session = requests .session ()
40+ logging .info ('Parser Sınıfı Oluşturuldu' )
41+
42+ def search (self , keyword ):
43+ logging .info ('{key} sözcüğü ile arama yapıldı' .format (key = keyword ))
44+
45+ data = self .session .get (
46+ 'https://v2.sg.media-imdb.com/suggests/{aramailk}/{arama}.json' .format (
47+ aramailk = keyword [0 ],
48+ arama = keyword ))
49+ content = data .content .decode ("utf-8" )
50+
51+ suggests_json = content .split ('imdb${sup}(' .format (sup = keyword ))[1 ][:- 1 ]
52+ suggests = json .loads (suggests_json )
53+ logging .info ('Data başarılı bir şekilde çekildi' )
54+
55+ for suggest in suggests .get ('d' ):
56+ self .search_results .append (Movie (** {
57+ "title" : suggest .get ('l' ),
58+ "id" : suggest .get ('id' )
59+ }))
60+ logging .info ('Kendimi return ettim' )
61+
62+ return self
63+
64+ def get_results (self ):
65+ logging .info ('Result istendi' )
66+
67+ return self .search_results
68+
69+
70+ parse = Parser ()
71+ for movie in parse .search ("supernat" ).get_results ():
72+ print (movie , movie .get_info ())
73+
74+ try :
75+ d = 0 / 0
76+ except ZeroDivisionError as e :
77+ logging .exception ("Sıfıra bölünme" ,exc_info = e )
0 commit comments