Help us understand the problem. What is going on with this article?

Nokogiriを使用したクローラーめも

More than 5 years have passed since last update.

文字コードの変更

require 'kconv'

str = "日本語の文字列"

puts str.tosjis => shift_jisに変換
puts str.toutf8 => utf-8に変換

Nokogiri

NodeとNodeSetとElement

NodeとNodeSetの違いについて理解する必要がある。

Nodeset

Nodeを格納したリスト型は配列

Node

NodeSetに格納されているもの
(例)

require 'nokogiri'
require 'open-uri'

html = open("http://XXXXXXX")
doc = Nokogiri::HTML.parse(html, nil, "UTF-8")

nodesets = doc.xpath('//title')
puts nodesets.text
puts nodesets.inner_text
puts nodesets.first_inner_text

nodesets.each do |nodeset|
puts nodeset.text
puts nodeset.inner_text
end

検索系のメソッド

doc.at('//title')  => 検索にヒットした最初のノード

doc.at_xpath('//title')  => xpathの検索にヒットした最初のノード

doc.at_css('title')  => cssの検索にヒットした最初のノード

doc.css('title')  => cssで検索。Nodeset

doc.css('title')[0]  => cssで検索。NodeSetから最初のノード

doc.xpath('//title')  => xpathで検索。最初のNode

doc.xpath('//title')[0]  => xpahtで検索。NodeSetから最初のNode

doc.search('title')
xpathかcssで検索。NodeSet

doc.search('title')[0]  => xpathかcssで検索。NodeSetから最初のNode

Nokogiriの検索・参照系メソッド

at

cssかxpathで検索し、ヒットした最初のElementをとりだす

at_css

cssで検索し、ヒットした最初のElementをとりだす

at_xpath

xpathで検索し、ヒットした最初のElementをとりだす

css

cssで検索し、NodeSetを返す

xpath

xpathで検索し、NodeSetを返す

search

cssかxpathで検索し、NodeSetを返す

content

コンテンツ(タグで囲まれた部分)を返す

inner_html

タグ内のHTMLを返す

inner_text

タグ内のテキスト文を返す

to_html

要素全体を返す

to_s

要素全体を返す

to_str

stringで返す

to_xhtml

要素全体を返す

to_xml

要素全体を返す

便利なやつ

Google

指定した文字を検索させ、検索結果を取得する

require 'google-search'

Google::Search::Web.new(:query => 'クローラー').each do |item|
puts item.url
puts item.title
end

Google Custom Search APIを使用するのあり

Amazon

Product Advertising API

Twitter

Twitter Streaming API

Facebok

Facebook Graph API

Kenya
ゆるく書いてます。 論理よりも感情に従ってプログラムを書くアレです。
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