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

Ruby Mechanize でスクレイピングをするときに User-Agent は必須

More than 1 year has passed since last update.

概要

こんにちは。アレックスです。

この投稿では、スクレイピングをするときに見落としがちな、
User Agent(ユーザーエージェント 以下UA)について簡単に解説します。

なぜ、このような記事を書くのか?
経緯はブログに書きましたので一番最後に記載します。
良かったら、ご覧下さい :)

目次

  1. なぜ必要なのか
  2. 具体的なコード
  3. 参考文献
  4. 最後に

なぜ必要なのか

長い持論も有りますが、そちらはブログに記載いたしました。
端的に技術・機能的な面で言うと、UAを設定しなければ、
Mechanizeのデフォルトで "WWW-Mechanize/バージョン" となります。

サーバアクセス時に User-Agent リクエストヘッダで送信される文字列を返します。
user_agent= や #user_agent_alias= で設定していない場合のデフォルト値は "WWW-Mechanize/バージョン(http://rubyforge.org/projects/mechanize/)" です。

引用元:http://seesaawiki.jp/ruby_mechanize/d/Mechanize#user_agent

ロボット丸出しなので、ロボット対策をしているサイトではたくさん503返されたりします。
httpsのサイトですと、UAの指定が無いからにセキュアな接続が確立できなかったりします。

コード解説

scrap_example.rb
#! /bin/sh
#! ruby
# coding: utf-8
Encoding.default_external = 'UTF-8'
require 'rubygems'
require 'mechanize'
# require 'Mechanize' と頭文字が大文字になっている例を良く見かけるが小文字で統一したほうが良い。

agent = Mechanize.new
agent.user_agent_alias = 'Windows Mozilla'
page = agent.get('https://www.foobar.bazz/')
# Mechanizeは便利なUAのエイリアスがあるので、その中から設定が簡単です。

ua = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36"
agent.user_agent = ua
# 文字列で指定することも可能です。


文字列での指定は、個人的にはあまり使用したことありません。
エイリアスには無いブラウザも有りますので、
以下の様なサイトで確認して文字列で指定するのが良いかもしれません。
ユーザーエージェント確認

簡単ではございましたが、以上が解説です。

リンク

参考文献
楽々スクレイピング! Ruby Mechanizeの使い方
楽々スクレイピング! Ruby Mechanizeの使い方(2)
Ruby Mechanize wiki (ja)
Rubyで始めるWebスクレイピング
APT Browse - /usr/lib/ruby/vendor_ruby/mechanize.rb

経緯ブログ記事
Rubyスクレイピング – 1 User-Agent 設定が必須

最後に

最後までご覧頂き有難うございました。
今回は、アレックスが投稿いたしました。

ご指摘、ご質問、ご意見など何でもございましたら遠慮なくお願いします。

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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした