#43. Практика Python

Практика Python

Теория — это когда все известно, но ничего не работает.
Практика — это когда все работает, но никто не знает почему.
Мы же объединяем теорию и практику: ничего не работает и никто не знает почему!

Альберт Эйнштейн

enter image description here

Платформа repl.it - ide в браузере

Где можно попрактиваться - checkio

Задания

  • Human vs Planet

Создать класс Human
. параметры name, date of birth
. методы str, property age

Создать класс Planet
. параметры name
. методы str, add_human([humans]),property count(return count of humans)
тесты)

  • Web-scrapper

Необходимо реализовать приложение с cli для выгрузки изображенией из https://app.prntscr.com/ хранилища картинок из Lightshot
https://prnt.sc/opm8a1
генератор ссылок
парсер
прогрессбар
cli
рандомная задержка между запросами 0.3-1.2 с

Библиотеки

Requests
Requests: HTTP for Humans™
pip install requests

https://2.python-requests.org/en/master/

import requests

r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
print(r.status_code)
print(r.headers['content-type'])
print(r.encoding)
print(r.text)
print(r.content)
print(r.json())

Beautiful Soup - парсинг HTML

pip install beautifulsoup4

https://www.crummy.com/software/BeautifulSoup/

from bs4 import BeautifulSoup
import requests
 

r = requests.get('https://www.google.com/')
soup = BeautifulSoup(r.text, "html.parser")
print (soup.prettify())

Fake-useragent

pip install fake-useragent

from fake_useragent import UserAgent
ua = UserAgent()

ua.opera
# Opera/9.80 (X11; Linux i686; U; ru) Presto/2.8.131 Version/11.11
ua.chrome
# Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/22.0.1216.0 Safari/537.2'
ua.google
# Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/537.13 (KHTML, like Gecko) Chrome/24.0.1290.1 Safari/537.13
ua['google chrome']
# Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11
ua.firefox
# Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1
ua.ff
# Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:15.0) Gecko/20100101 Firefox/15.0.1

# and the best one, random via real world browser usage statistic
ua.random
from bs4 import BeautifulSoup
import requests
from fake_useragent import UserAgent

ua = UserAgent()
headers = {'User-Agent':str(ua.random)}
# headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36'}

r = requests.get('https://www.google.com/', headers=headers)

soup = BeautifulSoup(r.text, "html.parser")
# print (soup.prettify())
print(soup.title, '\n')
print(soup.title.name, '\n')
print(soup.title.string, '\n')
print(soup.title.parent.name, '\n')
print(soup.p, '\n')
print(soup.a, '\n')
print(soup.find_all('a'), '\n')
print(soup.find(id="gb_70"), '\n')
gb_70 = soup.find(id="gb_70")
print (gb_70.contents)
print (soup.head.children)
# print (soup.head.parent)
# print (soup.head.next_subling)
soup.title.string = "AlhABET"
print(soup.title.string, '\n')

https://stackoverflow.com/questions/13137817/how-to-download-image-using-requests

import requests
from fake_useragent import UserAgent

ua = UserAgent()
headers = {'User-Agent':str(ua.random)}

url = 'https://caricatura.ru/parad/kuznetsov_daniil/pic/karikatura-teoriya-i-praktika_%28daniil-kuznecov%29_28417.gif'

r = requests.get(url, headers=headers)
with open('caricatura.gif', 'wb') as f:
     f.write(r.content)
import requests
from fake_useragent import UserAgent

ua = UserAgent()
headers = {'User-Agent':str(ua.random)}

url = 'https://caricatura.ru/parad/kuznetsov_daniil/pic/karikatura-teoriya-i-praktika_%28daniil-kuznecov%29_28417.gif'

r = requests.get(url, stream=True, headers=headers)
if r.status_code == 200:
    with open('caricatura.gif', 'wb') as f:
        for chunk in r.iter_content(1024):
            f.write(chunk)

Pillow - работа с изображениями

pip install Pillow

from PIL import Image

im = Image.open(file_name)
im.show()
im.save(fp=file_name, optimize=True)