Posted at

PythonとRubyで簡単なWebスクレイピング

More than 3 years have passed since last update.

Webスクレイピング -> WebサイトのHTMLデータを収集して、特定のデータを抽出・整形することです。

今回はPythonとRubyのやり方の1つをそれぞれ紹介します。


Python: BeautifulSoup4

PythonではBeautifulSoupを使うとけっこう便利です。


インストール

pip install beautifulsoup4


使い方

import urllib2

from bs4 import BeautifulSoup

html = urllib2.urlopen("http://example.com")
# => もちろんファイルを読み込んだりもできます。

soup = BeautifulSoup(html)

# 便利なメソッドがいっぱい!
soup.find_all('td')
soup.find("head").find("title")
soup.find_parents()
soup.find_parent()
soup.descendants()

# タグの名前変更、属性値の変更、追加、削除も出来るみたいです!
tag = soup.a
tag.string = "New link text."
tag
# => <a href="">New link text.</a>

soup = BeautifulSoup("<a>Foo</a>")
soup.a.append("Bar")
# => <a href="">FooBar</a>

Pythonってほぼつかったことないけどけっこう楽しく使えました。


Ruby: nokogiri


インストール

gem install nokogiri

source 'https://rubygems.org'

gem 'nokogiri'

bundle


使い方

charset = nil

html = open("http://example.com") do |f|
charset = f.charset
f.read
end

doc = Nokogiri::HTML.parse(html, nil, charset)

doc.title
doc.xpath('//h2 | //h3').each do |link|
puts link.content
end

html = File.open('data.html', encoding: 'utf-8') { |file| file.read }

doc = Nokogiri::HTML.parse(html, nil) do |d|
d.xpath('//td').each do |td|
pp td.content
end
end

個人的にはやっぱりRubyが好きでした。


参考

PythonとBeautiful Soupでスクレイピング - Qiita

http://qiita.com/itkr/items/513318a9b5b92bd56185

kondou.com - Beautiful Soup 4.2.0 Doc. 日本語訳 (2013-11-19最終更新)

http://kondou.com/BS4/#

Nokogiri を使った Rubyスクレイピング [初心者向けチュートリアル] - 酒と泪とRubyとRailsと

http://morizyun.github.io/blog/ruby-nokogiri-scraping-tutorial/