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の値が含まれていなければならない
# 前述でやってい書き方は、完全に一致する必要があるので厳しい。
まとめ
君だけのスクレイピングで、お気に入りのアダルトサイトからリンクを取得してサイトを作ろう。