Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Python para desarrolladores web

jmortegac
February 13, 2016

Python para desarrolladores web

Python para desarrolladores web

jmortegac

February 13, 2016
Tweet

More Decks by jmortegac

Other Decks in Programming

Transcript

  1. http://creativecommons.org/licenses/by-nc-sa/3.0/ Leganés, 11 y 12 de febrero José Manuel Ortega

    Leganés, 11 y 12 de febrero José Manuel Ortega @jmortegac Python para desarrolladores web
  2.  Stack,Django,Flask,Pyramid  Requests  Scraping(BeautifulSoap,Scrapy)  Bokeh  API

    Rest (Django-Rest-Framework)  Twitter API 3 Python para desarrolladores web Agenda
  3. Django 7  Most popular Python web framework  Full

    stack web framework  Django-ORM  Template Engine  HTTP Request/Response  URL Routing Mechanism  Testing  Dev Server (WSGI) Python para desarrolladores web
  4. Django 8  Model Template View  Model → modelo

    de datos (models.py)  View →vistas de datos (views.py): qué datos se presentan  Template → plantillas HTML:cómo se presentan los datos Python para desarrolladores web
  5. Django 9  django.contrib.auth Un sistema de autenticación  django.contrib.contenttypes

     Un framework para tipos de contenidos  django.contrib.sessions  Un framework para manejar sesiones DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'mysite.db', } } Python para desarrolladores web
  6. Flask 15  Microframework  Built in development server and

    debugger  Oriented to small applications with simpler requirements. Python para desarrolladores web
  7. Pyramid 19  Python3 compatible  Templates with Chamaleon 

    Like django has his own bootstraping toolpcreate Python para desarrolladores web
  8. Pyramid 20 pcreate -s starter hello_pyramid ├── CHANGES.txt ├── development.ini

    ├── MANIFEST.in ├── production.ini ├── hello_pyramid │ ├── __init__.py │ ├── static │ │ ├── pyramid-16x16.png │ │ ├── pyramid.png │ │ ├── theme.css │ │ └── theme.min.css │ ├── templates │ │ └── mytemplate.pt │ ├── tests.py │ └── views.py ├── README.txt └── setup.py Python para desarrolladores web
  9. Comparing web frameworks 24 Django Pyramid Flask ORM Django- ORM

    Bootstrapping django- admin pcreate Templates Chameleon Migrations Admin interface Visual debug Python para desarrolladores web
  10. Requests Module  Python’s standard urllib2,httplib module provides most of

    the HTTP capabilities you need, but the API is thoroughly broken.  Python HTTP: Requests. Beautiful, simple, Pythonic. 25 http://www.python-requests.org Python para desarrolladores web
  11. Use requests module  Install requests module (pip install requests)

    http://docs.python-requests.org/en/latest/user/install/#install  Use it interactive mode $ python >>> import requests >>> r = requests.get("http://httpbin.org/get") 26 Python para desarrolladores web
  12. Beautiful Soup 29  Librería que permite el parseo de

    páginas web  Soporta parsers como lxml,html5lib  Instalación  pip install lxml  pip instlal html5lib  pip install beautifulsoup4 Python para desarrolladores web
  13. JSON in python 34  import json  json_dumps(data, sort_keys=True)

     Maybe allow human readable output  json_dumps(data, sort_keys=True, indent=4) Python para desarrolladores web
  14. Scrapy shell 37 scrapy shell <url> from scrapy. import Selector

    hxs = Selector(response) Info = hxs.select(‘//div[@class=“slot-inner”]’) Python para desarrolladores web
  15. Scrapy spiders 40 $ scrapy crawl <spider_name> $ scrapy crawl

    <spider_name> -o items.json -t json $ scrapy crawl <spider_name> -o items.csv -t csv $ scrapy crawl <spider_name> -o items.xml -t xml Python para desarrolladores web
  16. Twisted 41  Event-driven networking engine  Procesar eventos de

    forma asíncrona  https://twistedmatrix.com Python para desarrolladores web
  17. Bokeh 42  Interactive, browser-based visualization for big data, driven

    from Python  http://bokeh.pydata.org  Rich interactivity over large datasets  HTML5 Canvas  Integration with Google Maps  http://bokeh.pydata.org/en/latest/docs/gallery.html Python para desarrolladores web
  18. API Rest in Python 48  Django Rest Framework (DRF)

    pip install djangorestframework Python para desarrolladores web
  19. Django Rest Framework 49 Serializers & Views Python para desarrolladores

    web class PostSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Post fields = ('author', 'title', 'text', 'created_date','published_date') class PostViewSet(viewsets.ModelViewSet): queryset = Post.objects.all() serializer_class = PostSerializer from rest_framework import routers, serializers, viewsets
  20. Twitter API 52  https://apps.twitter.com  Oauth2  Consumer API

    (API KEY)  Consumer Secret (API Secret)  Access Token  Access Token Secret Python para desarrolladores web
  21. Twitter API 53  Python-twitter  https://github.com/bear/python-twitter  Tweepy 

    https://github.com/tweepy/tweepy Python para desarrolladores web
  22. Tweepy 54 import tweepy from tweepy import OAuthHandler consumer_key =

    'YOUR-CONSUMER-KEY' consumer_secret = 'YOUR-CONSUMER-SECRET' access_token = 'YOUR-ACCESS-TOKEN' access_secret = 'YOUR-ACCESS-SECRET' auth = OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_secret)  api = tweepy.API(auth) Python para desarrolladores web
  23. Tweepy Learn REST API with Python in 90 minutes 55

     Timeline  Tweet list  Trending topic for status in tweepy.Cursor(api.home_timeline).items(10): print(status.text) for tweet in tweepy.Cursor(api.user_timeline).items(): process_or_store(tweet._json) def getTrends(): trends = api.trends_place(1)[0]['trends'] return trends
  24. Python-twitter 56 import twitter apiTwitter = twitter.Api(consumer_key="xxx", consumer_secret="xxx", access_token_key="xxx", access_token_secret="xxx")

    query = apiTwitter.GetSearch("#T3chFest2016“,count=50) for result in query: tweet = {} tweet['text'] = result.text.encode('utf-8') tweet['date'] = result.created_at.encode('utf-8') tweet['favorite_count'] = result.favorite_count tweet['lang'] = result.lang.encode('utf-8') tweet['retweet_count'] = result.retweet_count tweet['account'] = result.user.screen_name.encode('utf-8') twitter_results.append(tweet) Python para desarrolladores web
  25. Python-twitter 58 outfile = open('twitter.json','wb') for twitter_result in twitter_results: line

    = json.dumps(twitter_result) + "\n" outfile.write(line) Python para desarrolladores web
  26. References  Django project: http://www.djangoproject.com  Flask: http://flask.pocoo.org  Pyramid:

    http://www.pylonsproject.org  Requests python module: http://www.python-requests.org  BeautifulSoup: http://www.crummy.com/software/BeautifulSoup  Bokeh:http://bokeh.pydata.org  Django Rest:http://www.django-rest-framework.org  https://www.pythonanywhere.com 63 Python para desarrolladores web