Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
6
Help us understand the problem. What is going on with this article?
@1stMinos

nokogiriスクレイピング練習 はろーわーるど (くどい説明多数)

More than 1 year has passed since last update.

はじめに

既存htmlファイルの改修とか、スクレイピングとかが必要になりました。
そこで、nokogoriを使って処理を試そうと思いました。
と、ついでにrubyの復習も。

ツッコミ等大歓迎

調査対象(仮にread.htmlとする)

ここで記載されているソース
http://vsanna.sakura.ne.jp/wp/2015/01/scraping_start_up2/

ソースコード 仮に parser1.rb とでもします。

# ノコギリ読み込みます。
require 'nokogiri'

#読み込みたいファイルを読み込んでインスタンス生成
f = File.open("read.html")
doc = Nokogiri::HTML(f);
f.close

#欲しいものを拾って
what_i_want = (doc).xpath("/html/body/p")

#単純表示
puts what_i_want

実施コマンド

$ ruby parser1.rb

結果

<p>これは本文。ほげほげ。</p>

やたらこまかい解説

 ライブラリ”nokogiri” を読み込む

# ノコギリ読み込みます。
require 'nokogiri'

ライブラリを読み込むときは、require で読み込むこと。
require は、対象物を1回だけ読み込む。

ファイルを読み、インスタンスを生成する。

#読み込みたいファイルを読み込んでインスタンス生成
f = File.open("read.html")
doc = Nokogiri::HTML(f);
f.close

ファイルのストリームを開く
開いたストリームから、ノコギリのインスタンスを生成する。
ストリームを使い終わったら、閉じる(忘れずに)

xpathを使い、取得対象を特定する。

xpath とは、htmlやxmlのツリー構造を利用して、欲しい要素を(node)を特定するを特定する手法とのこと。
ここでは、さきほど指定したnokogiri のインスタンスを指定します。

基本文法は

取得結果 = (nokogiriのインスタンス).xpath("ツリー構造")

したがって

what_i_want = (doc).xpath("/html/body/p")

ここでは、what_i_want に対し、nokogiriメソッドに対しpathにてhtmlタグ、bodyタグ、pタグで
囲まれている領域を指すことになります。

取得結果を表示します

#単純表示
puts what_i_want

ここでは、putsを利用した。pメソッドだと結果がうまく表示されない。

参考、引用元

【スクレイピングのやり方#2】周りに勧められてスクレイピングなるものをしてみたいけど何すればいいのかわからなかったあの日の自分へ

第18章 ロード
http://i.loveruby.net/ja/rhg/book/load.html
requireとinclude のちがい
http://qiita.com/yanap/items/65c3953fb4e52218399a

puts命令
http://ref.xaio.jp/ruby/classes/kernel/puts

余談

htmlそのまま記載できればなー。<pre>タグではだめみたい。

6
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
1stMinos
サーバサイドの処理をメインにやってます。 Ruby、PHP、JSなどを使ってます。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
6
Help us understand the problem. What is going on with this article?