Scraping avec Python + PyQuery

PyQuery

Python a un module pratique appelé PyQuery qui fournit une API de type jQuery. Beautiful Soup semble être populaire dans les rues, mais PyQuery est définitivement plus facile à utiliser. Puisque la base est lxml, je pense que les performances et la fiabilité sont également garanties.

Si vous transmettez l'url au constructeur, il la récupérera pour vous. Vous pouvez également transmettre des chaînes HTML ou des objets fichier. Après cela, si vous spécifiez une chaîne de caractères similaire au sélecteur jQuery, vous pouvez obtenir tous les éléments correspondants.

Il est également possible d'exploiter chaque élément en passant une expression ou une fonction lambda. Si vous connaissez jQuery, vous pouvez imaginer ce que vous pouvez faire. Veuillez consulter le Manuel pour plus de détails!

Exemple d'opération DOM

Donnez des attributs à l'élément sélectionné avec la méthode .each (). class est un mot réservé en Python, donc si vous le définissez sur class_, ce sera une classe HTML.

sample.py


from pyquery import PyQuery as pq


html = '''
<ul>
  <li> item 1 </li>
  <li> item 2 </li>
  <li> item 3 </li>
</ul>
'''

dom = pq(html)
dom('li').each(lambda index, node: pq(node).attr(class_='red', x='123'))

print dom

Quand je l'ai exécuté, la classe et l'attribut mystérieux x ont été définis.

<ul>
  <li x="123" class="red"> item 1 </li>
  <li x="123" class="red"> item 2 </li>
  <li x="123" class="red"> item 3 </li>
</ul>

Vous pouvez faire la même chose avec dom ('li'). AddClass ('red') pour la classe.

Exemple d'acquisition d'URL d'image

J'ai créé un exemple de programme qui accède à une page Web et extrait l'URL d'une image. Sélectionnez la balise img et accédez à chaque élément avec .items ().

img_scraper.py


#!/usr/bin/env python
from urlparse import urljoin
from pyquery import PyQuery as pq
from pprint import pprint

url = 'http://www.yahoo.co.jp'

dom = pq(url)
result = set()
for img in dom('img').items():
    img_url = img.attr['src']
    if img_url.startswith('http'):
        result.add(img_url)
    else:
        result.add(urljoin(url, img_url))

pprint(result)

Le résultat est le suivant

set(['http://i.yimg.jp/images/sicons/box16.gif',
     'http://k.yimg.jp/images/clear.gif',
     'http://k.yimg.jp/images/common/tv.gif',
     'http://k.yimg.jp/images/icon/photo.gif',
     'http://k.yimg.jp/images/new2.gif',
     'http://k.yimg.jp/images/sicons/ybm161.gif',
     'http://k.yimg.jp/images/top/sp/cgrade/iconMail.gif',
     'http://k.yimg.jp/images/top/sp/cgrade/icon_point.gif',
     'http://k.yimg.jp/images/top/sp/cgrade/info_btn-140325.gif',
     'http://k.yimg.jp/images/top/sp/cgrade/logo7.gif',
     'http://lpt.c.yimg.jp/im_sigg6mIfJALB8FuA5LAzp6.HPA---x120-y120/amd/20150208-00010001-dtohoku-000-view.jpg'])

Si vous sélectionnez la balise a au lieu de la balise img et recherchez dans la liste en combinaison avec gevent, vous pouvez créer un robot d'exploration en un rien de temps.

Google Finance Scraper

Un script pour extraire les états financiers de Google Finance. Comme il est long, je posterai uniquement le lien vers Gist.

https://gist.github.com/knoguchi/6952087

Recommended Posts

Scraping avec Python + PyQuery
Grattage avec Python
Grattage avec Python
Essayez de gratter avec Python.
Grattage avec du sélénium [Python]
Scraping RSS avec Python
J'ai essayé de gratter avec Python
Web scraping avec python + JupyterLab
Grattage au sélénium en Python
Grattage avec Selenium + Python Partie 1
Grattage avec chromedriver en python
Grattage festif avec Python, scrapy
Grattage avec du sélénium en Python
Grattage avec Tor en Python
[Scraping] Scraping Python
Scraping prévisions météorologiques avec python
Grattage avec Selenium + Python Partie 2
J'ai essayé de gratter avec du python
Web scraping débutant avec python
Essayez de gratter avec Python + Beautiful Soup
Scraping avec Node, Ruby et Python
Scraping avec Selenium en Python (Basic)
Grattage avec Python, Selenium et Chromedriver
Gratter le classement Web d'Alexa avec pyQuery
Web scraping avec Python Première étape
J'ai essayé webScraping avec python.
Grattage avec Python et belle soupe
Faisons du scraping d'images avec Python
Obtenez les tendances Qiita avec le scraping Python
Mémo d'apprentissage "Scraping & Machine Learning avec Python"
Obtenez des informations météorologiques avec Python et le grattage
Mémo de raclage Python
Grattage au sélénium
FizzBuzz en Python3
Scraping Python get_ranker_categories
Grattage au sélénium ~ 2 ~
Statistiques avec python
Python avec Go
Twilio avec Python
Intégrer avec Python
Python racle eBay
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
Grattage avec du sélénium
python commence par ()
Grattage Python get_title
avec syntaxe (Python)
Python: grattage partie 1
Bingo avec python
Zundokokiyoshi avec python
Yosemite + python + pyquery
Scraping à l'aide de Python
Excel avec Python
Micro-ordinateur avec Python
Python: grattage, partie 2
Cast avec python
Obtenez des informations sur la propriété en grattant avec python
Grattage WEB avec Python (pour mémo personnel)
Automatisez des tâches simples avec Python Part1 Scraping
Premiers pas avec Python Web Scraping Practice