Scraping avec Node, Ruby et Python

J'ai décidé d'essayer le scraping, et j'ai vérifié chacun avec Node, Ruby et Python. Essayez-le avec le contenu de la récupération du titre de google.co.jp.

scraping.png

Essayez-le avec Node

Accédez à la page avec request et utilisez des sélecteurs de type jQuery avec cheerio Essayez d'analyser et de rechercher des éléments.

Installez d'abord le module à partir du terminal.

$ npm install request cheerio

Créez un fichier approprié et implémentez-le.

scrape.js


var request = require('request'),
    cheerio = require('cheerio');

var url = 'http://google.co.jp';

request(url, function (error, response, body)
{
    if (!error && response.statusCode === 200)
    {
        var $ = cheerio.load(body),
            title = $('title').text();
        console.log(title);
    }
});

Essayez de l'exécuter.

$ node scrape.js Google

cheerio implémente non seulement l'acquisition d'éléments mais également certaines méthodes de $ .addClass, $ .append et jQuery, donc cela semble être bon pour les cas où vous manipulez le DOM.

Essayez-le avec Ruby

Quand j'ai fait le tour, Nokogiri est sorti le premier. C'est le de facto. Obtenez la page avec open-uri et analysez-la avec Nokogiri.

$ gem install nokogiri

Comme open-uri est inclus en standard, installez Nokogiri. Créez un fichier de manière appropriée.

scrape.rb


require 'open-uri'
require 'nokogiri'

url = 'http://www.google.co.jp/'
html = open(url)
doc = Nokogiri::HTML.parse(html)

puts doc.css('title').text

Il semble que les objets retournés par HTML.parse puissent être recherchés par XPath, CSS ou les deux. Les sélecteurs CSS sont simples et agréables.

Essayez de l'exécuter.

$ ruby scrape.rb "Google"

Très bon à faire rapidement.

Essayez-le avec Python

J'ai d'abord trouvé Scrapy, mais c'est une bibliothèque légèrement plus grande, donc c'est un peu décontracté BeautifulSoup. ) Pour l'essayer. Il semble y avoir un HTMLParser standard, mais BeautifulSoup semble faire beaucoup de bonnes choses.

Je n'ai pas pu l'installer avec pip, alors je l'ai installé avec easy_install.

$ easy_install BeautifulSoup

Le flux de récupération des pages avec urllib et d'analyse avec BeautifulSoup.

scrape.py


import urllib
import BeautifulSoup

url = 'http://www.google.co.jp/'
html = urllib.urlopen(url).read()
soup = BeautifulSoup.BeautifulSoup(html)

print soup.find('title').string

Essayez de l'exécuter.

$ python scrape.py Google

Essayez-le avec Scrapy (Python)

Scrapy semble être une bibliothèque qui inclut le robot d'exploration et le scraping. Je l'ai essayé pendant un moment, alors prenez note.

$ pip install scrapy

Jetez un coup d'œil au didacticiel Documentation. Tout d'abord, créez un modèle de projet avec scrapy.

$ scrapy startproject hello

Créez un fichier directement sous les araignées et décrivez le processus de robot d'exploration et de scraping.

hello/hello/spiders/scrape.py


from scrapy.spider import Spider
from scrapy.selector import Selector

class HelloSpider(Spider):
    name = "hello"
    allowed_domains = ["google.co.jp"]
    start_urls = ["http://www.google.co.jp/"]

    def parse(self, response):
        sel = Selector(response)
        title = sel.css('title::text').extract()
        print title

Vous pouvez utiliser des sélecteurs XPath ou CSS pour obtenir des éléments. Alors, essayez de l'exécuter à partir du terminal.

$ scrapy crawl hello

Résultat de sortie

[u'Google']

Le robot d'exploration est également inclus dans l'ensemble, il semble donc bon de le rendre solide.

Recommended Posts

Scraping avec Node, Ruby et Python
Scraping Web facile avec Python et Ruby
Grattage avec Python
Grattage avec Python, Selenium et Chromedriver
Grattage avec Python et belle soupe
Gestion des versions de Node, Ruby et Python avec anyenv
Crypter avec Ruby (Rails) et décrypter avec Python
Pratiquer le web scraping avec Python et Selenium
Grattage en Python (préparation)
Essayez de gratter avec Python.
Grattage avec Python + PhantomJS
Ruby, Python et carte
Python et Ruby se séparent
Grattage avec du sélénium [Python]
Scraping avec Python + PyQuery
Scraping RSS avec Python
Grattage de la nourriture avec python et sortie en CSV
Programmation avec Python et Tkinter
J'ai essayé de gratter avec Python
Chiffrement et déchiffrement avec Python
Grattage au sélénium en Python
Python sur Ruby et Ruby en colère sur Python
Grattage avec chromedriver en python
Grattage festif avec Python, scrapy
Mémo tranche python et rubis
Grattage avec du sélénium en Python
Zundokokiyoshi avec python / rubis / Lua
Grattage avec Tor en Python
Syntaxe Ruby et Python ~ branch ~
Scraping prévisions météorologiques avec python
Grattage avec Selenium + Python Partie 2
python avec pyenv et venv
J'ai essayé de gratter avec du python
Web scraping débutant avec python
Fonctionne avec Python et R
Comparaison de CoffeeScript avec la grammaire JavaScript, Python et Ruby
Communiquez avec FX-5204PS avec Python et PyUSB
Résolution avec Ruby et Python AtCoder ARC 059 C Méthode du carré minimum
Différence entre Ruby et Python Split
Briller la vie avec Python et OpenCV
Essayez de gratter avec Python + Beautiful Soup
Robot fonctionnant avec Arduino et python
Installez Python 2.7.9 et Python 3.4.x avec pip.
Modulation et démodulation AM avec python
Scraping avec Selenium en Python (Basic)
Proxy dynamique avec python, ruby, PHP
Résolution avec Ruby et Python AtCoder ABC151 D Recherche de priorité de largeur
Résolution avec Ruby et Python AtCoder ABC133 D Somme cumulée
Web scraping avec Python Première étape
J'ai essayé webScraping avec python.
Résolution avec Ruby et Python AtCoder AISING2020 D Méthode carrée itérative
Encodage et décodage JSON avec python
Résolution avec Ruby, Perl, Java et Python AtCoder ATC 002 A
Introduction à Hadoop et MapReduce avec Python
[GUI en Python] PyQt5-Glisser-déposer-
[Scraping] Scraping Python
Exploration Web, scraping Web, acquisition de caractères et sauvegarde d'image avec python
Lire et écrire NetCDF avec Python
Faisons du scraping d'images avec Python