>| f.write('\n'.join(sorted(self.links)))
>| # закрываем файл
> f.close()
Все готово, можем запускать парсер.
>| parser = MyHTMLParser("http://python.org")
После того как вы запустите данный скрипт в директории, где находится ваш файл появится текстовый документ links.txt, содержащий ссылки.
Конечно, данный пример достаточно примитивен, но на его основе вы можете попробовать написать, к примеру, веб-crawler, который будет анализировать весь сайт целиком, а не одну его страницу.
Примитивный Paint на Python
В данной статье мы напишем простенькую рисовалку на Python. На этом примере мы потренируемся в создании GUI, использовании макетов компоновки в tkinter, передаче дополнительных аргументов в функцию-обработчик нажатия кнопки и использовании lambda-функции в Python.
Для этого примера удобнее будет использовать классовый подход к созданию GUI. Для начала определим класс Paint:
>| from tkinter import *
>| class Paint(Frame):
>| def __init__(self, parent):
>| Frame.__init__(self, parent)
>| self.parent = parent
>| def main():
>| root = Tk()
>| root.geometry("1920x1080+300+300")
>| app = Paint(root)
>| root.mainloop()
>| if __name__ == "__main__":
>| main()
Запустив этот код вы должны получить простенькое окно, с которым мы будем работать дальше.
Теперь напишем для класса Paint метод setUI, в котором будет задаваться расположение всех кнопок, меток и самого поля для рисования. У нас будет два ряда кнопок, первый ряд с кнопками устанавливающими цвет, второй ряд устанавливает размер кисти для рисования. Под ними будет идти поле для рисования.
Это достаточно объемный метод, однако многие строки повторяются, так что наберитесь терпения:
>| def setUI(self):
>| self.parent.title("Pythonicway PyPaint") # Устанавливаем название окна
>| self.pack(fill=BOTH, expand=1) # Размещаем активные элементы на родительском окне
>|
>| self.columnconfigure(6, weight=1)
# Даем седьмому столбцу возможность растягиваться, благодаря чему кнопки не будут разъезжаться при ресайзе
>| self.rowconfigure(2, weight=1) # То же самое для третьего ряда
>
>| self.canv = Canvas(self, bg="white") # Создаем поле для рисования, устанавливаем белый фон
>| self.canv.grid(row=2, column=0, columnspan=7,
>| padx=5, pady=5, sticky=E+W+S+N)
# Прикрепляем канвас методом grid. Он будет находится в 3м ряду, первой колонке, и будет занимать 7 колонок, задаем отступы по X и Y в 5 пикселей, и заставляем растягиваться при растягивании всего окна