0
0

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 1 year has passed since last update.

ItayaAdvent Calendar 2022

Day 5

飲食店検索サイトの情報をとってきてみよう -GoogleMap編-

Last updated at Posted at 2022-12-04

概要

久々にスクレイピングで情報を取得するスクリプトを組みたくなったので組む

言語

  • ruby

使うライブラリ

  • nokogiri
  • selenium-webdriver

nokogiriはHTMLをパースする上では欠かせない子です。
GoogleMapはJSゴリゴリに動いていて通信取得が厳しいのでseleniumをつかいます。

本題

seleniumの準備に関しては今回はしてあるものとして話をすすめます。

これで準備ができたので実際のrubyのコードを書いてみましょう。

ファイル名は何でもいいのですが、crawler.rbとかにしましょうか

require 'net/http'
require 'uri'
require 'nokogiri'
require 'kconv'
require 'selenium-webdriver'

driver = Selenium::WebDriver.for :chrome

area = '横浜'
keyword = 'たこ焼き'
driver.navigate.to "https://www.google.co.jp/maps/search/#{area}+#{keyword}/"
html = driver.page_source
driver.quit

doc = Nokogiri::HTML.parse(html.toutf8, nil, 'utf-8')
puts '###ページタイトル取得###'
puts doc.title

puts "\n###お店の名前を取得###"
doc.css('.NrDZNb div').map do |target|
  puts target.text
end

細かいコードの解説はこの記事ではしません。
実行結果はこんな感じになるかと思います。

###ページタイトル取得###
横浜 たこ焼き - Google マップ

###お店の名前を取得###
 ごっつええ本舗 CIAL横浜
 たこ焼きバル くるり 横浜
 たこやきバル tacobe
 浜のたこ焼きタコリーナ
 元天ねぎ蛸 みなとみらい店

「横浜」「たこ焼き」で検索した結果がこんな感じで取得できます。
ただ、スクロールとかさせないと他の取れなかったり、要素的にも不安定な気がするので実際に使う予定があるのであればAPI使うのがいい気がしました...

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?