sitateru tech blog: Nokogiri

sitateru tech blog

シタテルの技術やエンジニアの取り組みを紹介するテックブログです。

ラベル Nokogiri の投稿を表示しています。 すべての投稿を表示
ラベル Nokogiri の投稿を表示しています。 すべての投稿を表示

2018年11月8日木曜日

Ruby+Nokogiri 5分で作るスクレイピングツール

11月 08, 2018
こんにちは、シタテルエンジニアの工です!
マーケティングチームからページャー付きのWEBサイト全ページのhtmlが欲しいと言われましたので、簡単なRuby+Nokogiriスクレイピングコードを書きました。
今回は、fromAnaviさんのページから、弊社渋谷オフィス周辺のアルバイト情報のhtmlをGetしてみます!

Nokogiriをインストール

gem install nokogiri

コーディング

scraping.rb
require "open-uri"
require "nokogiri"

file = File.open("froma.txt", "w")

(1..117).each do |page|
  charset = nil

  doc = Nokogiri::HTML(open("https://www.froma.com/baito/jobList/?s_area_cd=1i2002&s_area_cd=1i2004&sort_cd=&edition_cd=1&shrt_indx_cd=1002&st=08&page=#{page}"))
  file.puts(doc.xpath("//div[@class='main']").to_html)
end

file.close

それでは取得してみます 🚀

$ ruby scraping.rb
出力結果
froma.txt
<div class="main">
<ol class="breadcrumbs" itemprop="breadcrumb">
<li><a href="/index.html">全国のアルバイト/バイト</a></li>
<li><a href="/P01/">関東</a></li>
<li>渋谷駅周辺、原宿/表参道の仕事情報を探す</li>
</ol>
<!-- インクルードエリア11(編集用上エリア) -->
<!-- /インクルードエリア11(編集用上エリア) --><h1 class="hd-basic-1">「いろいろな条件」のアルバイト/求人情報</h1>
<table class="scp scp--job-list">
                <colgroup>
                    <col style="width:96px;">
                    <col style="width:131px;">
                    <col style="width:96px;">
                    <col style="width:406px;">
                </colgroup>
    <tr>
                    <th>勤務地</th>
                    <td colspan="3" class="scp-area">
    <div class="scp-area-main">
                            <ul class="scp-area-main__txt">
            <li>渋谷区 &gt; 渋谷駅周辺、原宿/表参道</li>
            </ul>
                            <div class="scp-area-main__btn"><a href="/baito/ajax/jobSearchCond/doAreaCond?st=08&amp;sort_cd=&amp;shrt_indx_cd=1002&amp;s_area_cd=1i2002&amp;s_area_cd=1i2004&amp;edition_cd=1" class="btn-panel--main jsc-modal-trigger-area" onclick="sendSC_ListLimitPanel('1000');">エリアを選ぶ</a></div>
                        </div>
                        <div class="scp-area-sub">
                            <div class="btn"><a href="/baito/ajax/jobSearchCond/doAlongRailCond?st=08&amp;sort_cd=&amp;shrt_indx_cd=1002&amp;s_area_cd=1i2002&amp;s_area_cd=1i2004&amp;edition_cd=1" class="btn-panel--sub jsc-modal-trigger-rail" onclick="sendSC_ListLimitPanel('2000');">沿線・駅を選ぶ</a></div>
                        </div>
        </td>

(長いので割愛)
無事に取得できました 🍻
ハードコーディングだらけですが、即興ということで今回はこここまで。
RubyとNokogiriを使ったシンプルなスクレイピングを紹介しました。