from grab.spider import Spider, Task import sqlite3 as lite class HabraParser(Spider): # initial_urls = ['http://habrahabr.ru/hubs/'] def prepare(self): # self.post = [] self.con = lite.connect('files/habra_hubs.db') def task_initial(self, grab, task): # , nav = grab.doc.select('//ul[@class="next-prev"]/li/a[@class="next"]') # hub for elem in grab.doc.select('//div[@class="info"]/div[@class="stat"]/a[2]'): self.add_task(Task(name='hub', url=elem.attr('href'))) # - if nav.exists(): self.add_task(Task(name='initial', url=nav.attr('href'))) def task_hub(self, grab, task): nav = grab.doc.select('//a[@class="next" and @id="next_page"]') # for elem in grab.doc.select('//div[@class="posts shortcuts_items"]/div'): # if elem.attr('class') == 'ufo-was-here': continue comments = '' score = '' favs = '' post_url = elem.node.find('h1[@class="title"]/a').get('href') post_title = elem.node.find('h1[@class="title"]/a').text # try: comments = int(elem.node.find('.//span[@class="all"]').text) except: comments = 0 try: score = int(elem.node.find('.//span[@class="score"]').text) except: score = 0 try: favs = int(elem.node.find('.//div[@class="favs_count"]').text) except: favs = 0 self.post.append([ score, comments, favs, post_url, post_title ]) if nav.exists(): self.add_task(Task(name='hub', url=nav.attr('href'))) else: # hub = task.url.split('/')[4] # self.save_data(hub) def save_data(self, hub): with self.con: self.cur = self.con.cursor() self.cur.execute("DROP TABLE IF EXISTS %s"%hub) self.cur.execute("CREATE TABLE %s(Score INT, Comments INT, Favs INT, Url TEXT, PostTitle TEXT)"%hub) self.cur.executemany("INSERT INTO %s VALUES(?, ?, ?, ?, ?)"%hub, self.post) self.post = []
("SELECT * FROM %s ORDER BY Score DESC LIMIT 10" % hub)
habraindex > 100.0 and posts_number > 200
Source: https://habr.com/ru/post/In204706/More articles:DVHack 2013. рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдерд╛ред рдпрд╛ рд╕реБрджреВрд░ рдкреВрд░реНрд╡ рдореЗрдВ рдкрд╣рд▓рд╛ рд╣реИрдХрд╛рдереЙрдиZeronights Crackme 2013 рд╕рдорд╛рдзрд╛рди рдФрд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╣рд╛рдБ рд╣реИGoogle рдЕрдЦрдмрд╛рд░ рдХреЗ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдлрд┐рд░ рд╕реЗ рдЫрд╛рдкреЗрдЧрд╛рдмрд┐рд▓реНрдбрдмреЙрдЯ рдХреЗ рд╕рд╛рде рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг: рдкрд░рд┐рдЪрдп0 рд╕реЗ 9 рдФрд░ 9 рд╕реЗ 0VBA рдФрд░ PHP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Microsoft Outlook 2010 рдореЗрдВ рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рднреЗрдЬрдирд╛Google рд▓реЛрдЧреЛ: рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХреА рдЫреБрдЯреНрдЯреА рдХрд╛рдпрд╛рдкрд▓рдЯрдкрд░реНрд╕рд┐рдпрд╕ рдПрд▓рдЯреА рдХреЛрдирд╕ред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдпрд╣ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рддрд╛рд░реЛрдВ рдФрд░ рдЧреНрд░рд╣реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд╣рд╛рдВ рдХрд░рдирд╛ рд╣реИрджреЗрд╡рд╛рдирдВрдж рд╡реИрди рдбрд░ рд╡реАрди, рдУрдкрдирд╕реНрдЯреИрдХ рдЖрдпрд░рдирд┐рдХ рдЯреЗрдХреНрдирд┐рдХрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореИрдиреЗрдЬрд░ рдХреЗ рд╕рд╛рде рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░uid.me - MongoDB рдФрд░ Mojolicious рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреГрд╖реНрда рд╕реЗрд╡рд╛All Articles