8
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

nokogiri 基礎

Posted at

nokogiriとはなんぞや

ググってください

ドキュメントの解析

HTMLドキュメントとXMLドキュメントの解析の二つの方法がある。


doc = Nokogiri::HTML(html_document)
doc = Nokogiri::XML(xml_document)

データ抽出について

nokogiriはドキュメントをツリーデータ構造に変換する。
ツリー構造を頭に置きながら考えると良い感じに抽出できる。

実際に書いてみる


require 'open-uri'
# URLから持ってくるのに必要
require 'nokogiri'
# スクレイピング用

doc = Nokogiri::HTML(open('http://sadakoa.org/'))
# sadakoa.orgを解析
doc.xpath('//figcaption').each do |sample|
  #figcaption要素を解析して
  puts sample.text
  # 出力
end

出力結果

[desktop] ruby main.rb              21:08:48    master   

# sadakoa.org内のfigcaption要素を抽出
Web Design
UI Design
Icon Design
Illust Design
Portfolio Redesign Concept
Dark UI Form
GAMEBOY ADVANCE SP
Red UI Kit
Slack Icon					
Connect

タグ要素を全部引っ張ってくるのはだるいので、特定のclassもしくはid属性を持っている奴を引っ張りたい。


#class属性、id属性はこう
h1[@class = "***"]
p[@id = "***"]

doc.xpath('//div[@class = "about-txt"]/p').each do |sample|
  #div要素のabout-txtというclassが付いているpを解析して
  puts sample.text
  # 出力

出力結果


Thanks for watching :) I'm sadakoa and 20 years old.
I'm Web Designer and Front-end Engineer.
Filed: UI, IA, Icon, Graphic, DTP, Software, and Interaction Design.
Use: Jade / Stylus / CoffeeScript / jQuery / roots / ruby / Rails / vvvv / Sketch3 / Sublime Text 3 /

CSSセレクターの書き方

方法は二つある

//p/a
# p > a と、CSSでは記述される

p.wow
# class属性にwowの値が含まれていなければならない
# 前述でやってい書き方は、完全に一致する必要があるので厳しい。

まとめ

君だけのスクレイピングで、お気に入りのアダルトサイトからリンクを取得してサイトを作ろう。

8
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?