Scraping à l'aide de Python 3.5 async / await

Parce qu'il y avait un tel article avant. http://postd.cc/fast-scraping-in-python-with-asyncio/ Faisons cela avec la nouvelle syntaxe Python 3.5.

Ah, l'article original grattait du html, mais je voulais accéder à une URL qui retournait un nombre similaire de réponses en même temps, alors j'ai décidé d'utiliser RSS. Oh, ça ne gratte pas du tout. Eh bien, c'est la même chose que je fais ...

import asyncio
import aiohttp
import feedparser
import time

async def print_first_title(url):
    response = await aiohttp.request('GET', url)
    body = await response.text()
    d = feedparser.parse(body)
    print(d.entries[0].title)

rss = [] #En quelque sorte un tableau d'URL RSS. J'ai fait environ 10 actualités Yahoo

if __name__ == '__main__':
    start = time.time()
    loop = asyncio.get_event_loop()
    loop.run_until_complete(asyncio.wait([print_first_title(url) for url in rss]))
    end = time.time()
    print("{0} ms".format((end - start) * 1000))
390.4871940612793 ms

Eh bien, est-ce certainement plus facile à lire? Mais avec cela seul, il semble que celui qui faisait avec le décorateur et le rendement avait une syntaxe comme celle-là. Jusqu'à présent, je n'ai rien de plus. Est-ce incroyable?

Au contraire, comme l'article original, j'utilise une bibliothèque appelée aiohttp pour rendre la partie communication asynchrone, mais c'est très pratique! Je ne savais pas! !! !!

Comparaison de vitesse avec celui qui n'utilise pas de collout à cause du problème

import urllib.request
import feedparser
import time

def print_first_title(url):
    response = urllib.request.urlopen(url)
    body = response.read()
    d = feedparser.parse(body)
    print(d.entries[0].title)

rss = []

if __name__ == '__main__':
    start = time.time()
    [print_first_title(url) for url in rss]
    end = time.time()
    print("{0} ms".format((end - start) * 1000))
1424.4353771209717 ms

Lent! C'est tout!

Recommended Posts

Scraping à l'aide de Python 3.5 async / await
Scraping à l'aide de la syntaxe Python 3.5 Async
Scraping à l'aide de Python
python async / attend curio
Web scraping avec Selenium (Python)
[Scraping] Scraping Python
Masquer les websockets async / attendent dans Python3
[Python] Requête asynchrone avec async / await
Benchmark des performances de thread léger utilisant async / await implémenté dans Python 3.5
Mémo de raclage Python
Scraping Python get_ranker_categories
Grattage avec Python
Grattage avec Python
[Débutant] Scrapage Web Python facile à comprendre à l'aide de Google Colaboratory
Commencez à utiliser Python
Jouer Python async
Python racle eBay
Grattage Python get_title
Scraping de sites Web à l'aide de JavaScript en Python
Python: grattage partie 1
[Python] Gratter une table avec Beautiful Soup
Python: grattage, partie 2
J'ai essayé le web scraping en utilisant python et sélénium
Un chercheur d'une société pharmaceutique a résumé le raclage Web à l'aide de Python
Grattage en Python (préparation)
Essayez de gratter avec Python.
Manipuler Redmine à l'aide de Python Redmine
Séquence de Fibonacci utilisant Python
UnicodeEncodeError: 'cp932' pendant le scraping Python
Principes de base du grattage Python
Grattage avec Python + PhantomJS
Nettoyage des données à l'aide de Python
Utilisation des packages Python #external
Câblage Communication Pi-SPI avec Python
Calcul de l'âge à l'aide de python
Rechercher sur Twitter avec Python
Grattage avec du sélénium [Python]
Scraping avec Python + PyQuery
Identification de nom à l'aide de python
Notes sur l'utilisation de sous-processus Python
Essayez d'utiliser Tweepy [Python2.7]
Scraping RSS avec Python
Convertir l'API asynchrone de style callback en async / await en Python
Traitement asynchrone de Python ~ Comprenez parfaitement async et attendez ~
mémo python utilisant l'opérateur perl-ternaire
Aplatir à l'aide du rendement Python de
J'ai essayé de gratter avec Python
Enregistrer des images à l'aide de requêtes python3
Web scraping avec python + JupyterLab
Grattage au sélénium en Python
Grattage avec Selenium + Python Partie 1
[S3] CRUD avec S3 utilisant Python [Python]
[Python] Scraping dans AWS Lambda
python super débutant essaie de gratter
[Python] Essayez d'utiliser le canevas de Tkinter
Grattage avec chromedriver en python
Grattage festif avec Python, scrapy