読者です 読者をやめる 読者になる 読者になる

基本的に怠Diary

学習ログを残したい

Webスクレイ○プ

シェルスクリプト写経以外やること思いつか無かったので

以前作成したRubyコードを公開します。



○MatomeList.rb

require File.dirname(__FILE__) + "/MyScrape"

opts = {depth_limit: 0}

sc = MyScrape.new("http://blog.livedoor.jp/itsoku/",opts)
sc.title_list("//*[@class='article-top']//*[@class='article-title']//a")
sc.title_list("//*[@class='article-bottom']//*[@class='article-title']//a")

○MyScrape.rb

require 'nokogiri'
require 'anemone'
require File.dirname(__FILE__) + "/IOHelper"

class MyScrape
  attr_accessor :url,:opts

  def initialize(url,opts)
    @url=url
    @opts=opts
  end

  def xpath_list(xpath,page)
    hp = IOHelper.new()
    page.doc.xpath(xpath).each do |node|
      hp.write(node.xpath('./text()').to_s)
    end
  end
  def title_list(xpath)
    #某サイトのタイトルを取ってくるだけ
    Anemone.crawl(@url, opts) do |anemone|
        anemone.on_every_page do |page|
           xpath_list(xpath,page);
        end
    end
  end
  
end


○IOHelper.rb

class IOHelper
  def write(str)
    puts str
    puts "\n"
  end
end

IOHelperは正直作らなくてもよかった感はすごいです。


そっちはどうでもよくて、メインはMyScrape.rbです。


使用したライブラリは「anemone」と「nokogiri」

前者はWebページを拾ってくるために、後者はWebページをxpath使って抜き出すために使用しました。


本来の使用方法はよくわかってないです。とある参考サイトを元に(どこだったか忘れた)

簡単なものを作成してみました。

とはいえこの程度ならxpathにわか程度に知ってたら対象のサイトの構造少し見ればできます。


もう少し複雑なものはただいま考え中ですが 記事にできるのは当分先だと思います。



技術何も解説してない・・・