Статьи А построим Граббер для новичков урок

Discussion in 'Статьи' started by ^NSA^, 30 Jan 2013.

  1. ^NSA^

    ^NSA^ Elder - Старейшина

    Joined:
    3 Jul 2012
    Messages:
    64
    Likes Received:
    29
    Reputations:
    32
    [​IMG]

    Сегодня для вас урок про начальный граббер и tkinter.
    Первый делом нам нужен софт идем за ним.

    1.Aptana Studio тут
    2.Python 3 верс качай тут

    Далее Создаем проект
    Название даем Graber. рис 1

    [​IMG]

    [​IMG]

    подключаем Нас путь Питону рис ниже.

    [​IMG]

    [​IMG]

    Напишем первую тест прогу.
    сперва добавим библиотеку tkinter
    from tkinter import *
    from tkinter import ttk
    from tkinter import messagebox
    Программа просто выводит диалог с приветом Hello Anctichat.

    пример кода

    Code:
    from tkinter import *
    from tkinter import ttk
    from tkinter import messagebox
    
    messagebox.showinfo(message='Hello Anctichat') 
    
    
    Перейдем к 2 программы которая в фраме выводит надпись Graber показывает кнопку и Call Frorum.
    при ее нажатие получаем прежний диалог. пример кода

    Code:
    from tkinter import *
    from tkinter import ttk
    from tkinter import messagebox
    
    def click():
        messagebox.showinfo(message='Hello Anctichat') 
        
    frame = Tk()
    frame.title("Graber")
    ttk.Button(frame, text="Call Frorum",width=20, command=click).grid(column=2, row=6, sticky=W)
    frame.mainloop()
    
    В программе под примером 3 мы можем получать значение полей и также устанавливать. пример кода

    Code:
    from tkinter import *
    from tkinter import ttk
    from tkinter import messagebox
    
    def click():
        global name
        messagebox.showinfo(message=name.get()) 
        name.set("Hello Anctichat")
        
    
    frame = Tk()
    frame.title("Graber")
    name= StringVar()
    name.set("Call Frorum")   
    ttk.Button(frame, text="Click",width=20, command=click).grid(column=2, row=1, sticky=W)
    field= ttk.Entry(frame, width=20, textvariable=name).grid(column=2, row=2, sticky=(W, E))
    
    frame.mainloop()
    
    Переходим с 4 примеру код грабера
    создаем форму добавляем элементы как ранние

    В обработчике событий получаем значение полей .
    в первом поле название адреса 2 пат терн рег выражение.
    сперва вызываем 1 фунц грабим текст с сайта.
    потом парсим ее наконец возвращаем результат.
    Разберем siteurl функцию
    Сперва устанавливаем заголовки пробуем запрос если удачно получаем данные если нет видим диалог.

    пример кода

    Code:
    '''
    Created on Jan 29, 2013
    @author: ^NSA^
    Lesson Grabber
    '''
    from tkinter import *
    from tkinter import ttk
    from tkinter import scrolledtext
    from tkinter import messagebox
    import re
    import urllib.request
    import urllib.error
    
    def unit(*args):
        global rezult
        
        pat = regpat.get()
        url = site.get()
        html= siteurl(url)
        str =parseData(html,pat)
        t.insert(END, str)
    
    def siteurl(url):
        
        opener = urllib.request.build_opener()
        opener.addheaders = [('User-agent', ' Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0')]
        try:
            response = opener.open(url)
            
            html = response.read().decode('utf-8')
            return html
        except  urllib.error.URLError as e:
            messagebox.showinfo(message='Can open url') 
            return ""
        
    def clear(): 
       t.get("1.0",END)
       t.delete("1.0",END)
        
    #need fix all
    def parseData(st,pat):
        reg =re.compile(pat,re.M)
        m = reg.search(st)
        if(m is not None):
            return str(m.groups())
        else:
            return "cant search change pattern!"
        
    
    window = Tk()
    window.title("Lesson Grabber")
    site= StringVar()
    regpat = StringVar()
    regpat.set(r"(\s+.*)")
    site.set("http://one.lv")
    
    mainframe = ttk.Frame(window, padding=(5, 5, 12, 0))
    
    hello = {"text":"sample"}
    mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
    mainframe.columnconfigure(0, weight=1)
    mainframe.rowconfigure(0, weight=15)
    
    ttk.Label(mainframe,text="Site url").grid(column=2, row=1, sticky=(W, E))
    field= ttk.Entry(mainframe, width=20, textvariable=site)
    field.grid(column=2, row=2, sticky=(W, E))
    
    ttk.Label(mainframe,text="Pattern Reg").grid(column=2, row=3, sticky=(W, E))
    field2= ttk.Entry(mainframe, width=20, textvariable=regpat)
    field2.grid(column=2, row=5, sticky=(W, E))
    
    ttk.Button(mainframe, text="Grab",width=20, command=unit).grid(column=2, row=6, sticky=W)
    ttk.Button(mainframe, text="Clear",width=20, command=clear).grid(column=2, row=8, sticky=W)
    scrol = Scrollbar(mainframe)
    t =Text(mainframe)
    t.grid(column=2, row=7, sticky=W)
    window.geometry("400x550")
    window.mainloop()
    
    [​IMG]

    Автор ^NSA^ 2013г.
    продолжение следует :confused:
     
    #1 ^NSA^, 30 Jan 2013
    Last edited: 30 Jan 2013
  2. mistika

    mistika New Member

    Joined:
    23 Jun 2012
    Messages:
    0
    Likes Received:
    2
    Reputations:
    0
    Можешь дописать программу чтоб урлы из списка брала и регулярка? (и поделиться с нами)
     
  3. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    Спасибо, очень познавательно.
     
  4. FunOfGun

    FunOfGun Elder - Старейшина

    Joined:
    5 Sep 2012
    Messages:
    388
    Likes Received:
    72
    Reputations:
    124
    Неплохо. Не подскажешь норм доку по tkinter? Можно на английском, главное что бы доходчиво.
     
  5. ^NSA^

    ^NSA^ Elder - Старейшина

    Joined:
    3 Jul 2012
    Messages:
    64
    Likes Received:
    29
    Reputations:
    32
    1 person likes this.
  6. BlackIce

    BlackIce Elder - Старейшина

    Joined:
    10 Jan 2013
    Messages:
    100
    Likes Received:
    31
    Reputations:
    27
    Окай, я новичек в кодинге.
    Зачем мне этот софт? Что он делает? Не понимаю /*Далее проясняется, что эта замечательная программа превращает интерпретируемый язык в компилируемый, бодобно PHP Devel Studio говну.*/

    Какую библиотеку? А она нафига? /*Она видимо содержит какие-то ф-ции, упрощающие работу с чем-то*/

    Считайте кем хотите, но мой мозг счел данное предложение чересчур информативным и отказался обрабатывать инфу...

    Какие поля? Какие значения? Походу я в кодинге безнадёжен... Пойду-ка лучше порнуху посмотрю, а то было так много идей по написанию софта, но спасибо ТСу, что открыл мне глаза на всю сложность и непонятность в программировании...

    По поводу кода писать ничего не стану ибо он и так вопиет о том, что мечтает быть красифо отформатированным и видеть в себе комментарии.

    Тс, без обид, но тут 2 варианта:
    1. Ты сам начинающих прогер и еще недостаточно компетентен для написания годного кода и тем более статей .

    2. Ты Илитный и толстый быдлокодер, который решил завербовать в ряды быдла нивчем неповинных юзверей.

    /*Статья ни то что ничему не учит, а наоборот напрочь отбивает желание кодить*/
     
  7. ^NSA^

    ^NSA^ Elder - Старейшина

    Joined:
    3 Jul 2012
    Messages:
    64
    Likes Received:
    29
    Reputations:
    32
    Я тебе открою правда можешь тока блокнот использовать без Aptana Studio.

    Python должен стоять и добавить переменные окружения Windows.
    тогда запуск через консоль python Graber.py ;)
     
  8. mironich

    mironich Elder - Старейшина

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    Збс! Пиши есче!