変数はデータ値を保存するためのコンテナです。
Pythonには変数を宣言するコマンドはありません。
変数は最初に値を割り当てた瞬間に作成されます。
x = 5
y = "John"
print(x)
print(y)
変数は特定の型で宣言する必要はなく、設定された後に型を変更することもできます。
x = 4 # xはint型
x = "Sally" # xは今やstr型
print(x)
変数のデータ型を指定したい場合は、キャスティングを使用できます。
x = str(3) # xは'3'になります
y = int(3) # yは3になります
z = float(3) # zは3.0になります
変数のデータ型は type()
関数で取得できます。
x = 5
y = "John"
print(type(x))
print(type(y))
文字列変数はシングルクォートまたはダブルクォートで宣言できます:
x = "John"
# 以下と同じ
x = 'John'
変数名は大文字と小文字を区別します。
これは2つの変数を作成します:
a = 4
A = "Sally"
# Aはaを上書きしません
コメントはPythonコードを説明するために使用できます。
コメントはコードをより読みやすくするために使用できます。
コメントはコードのテスト時に実行を防ぐために使用できます。
コメントは #
で始まり、Pythonはそれを無視します:
# This is a comment
print("Hello, World!")
コメントは行の末尾に置くこともでき、Pythonは行の残りを無視します:
print("Hello, World!") # This is a comment
コメントはコードを説明するテキストである必要はなく、Pythonがコードを実行しないようにするためにも使用できます:
# print("Hello, World!")
print("Cheers, Mate!")
Pythonには実際には複数行のコメントの構文がありません。
複数行のコメントを追加するには、各行に #
を挿入することができます:
# This is a comment
# written in
# more than just one line
print("Hello, World!")
また、意図した使い方ではありませんが、複数行の文字列を使用することもできます。
Pythonは変数に割り当てられていない文字列リテラルを無視するので、コード内に複数行の文字列(トリプルクォート)を追加し、その中にコメントを置くことができます:
"""
This is a comment
written in
more than just one line
"""
print("Hello, World!")
文字列が変数に割り当てられていない限り、Pythonはそのコードを読みますが、その後無視します。これで複数行のコメントを作成できます。
前のページで学んだように、Python構文はコマンドラインで直接書くことで実行できます:
>>> print("Hello, World!")
Hello, World!
または、サーバー上に拡張子が.pyのPythonファイルを作成し、それをコマンドラインで実行することもできます:
C:\Users\Your Name>python myfile.py
インデントとは、コード行の先頭にあるスペースのことを指します。
他のプログラミング言語では、インデントは読みやすさのためだけに使われますが、Pythonでは非常に重要です。
Pythonはインデントを使用してコードのブロックを示します。
if 5 > 2:
print("Five is greater than two!")
インデントを省略するとPythonはエラーを出します:
構文エラー:
if 5 > 2:
print("Five is greater than two!")
スペースの数はプログラマー次第ですが、一般的には4つのスペースが使われます。ただし、少なくとも1つのスペースは必要です。
if 5 > 2:
print("Five is greater than two!")
if 5 > 2:
print("Five is greater than two!")
同じコードブロック内では同じ数のスペースを使用する必要があります。そうしないとPythonはエラーを出します:
構文エラー:
if 5 > 2:
print("Five is greater than two!")
print("Five is greater than two!")
Pythonでは、値を代入することで変数が作成されます:
Pythonの変数:
x = 5
y = "Hello, World!"
Pythonには変数を宣言するためのコマンドはありません。
Pythonにはコード内ドキュメントのためのコメント機能があります。
コメントは #
で始まり、Pythonは行の残りをコメントとして解釈します:
Pythonのコメント:
# This is a comment.
print("Hello, World!")
多くのPCやMacにはPythonがすでにインストールされています。
Windows PCでPythonがインストールされているか確認するには、スタートバーでPythonを検索するか、コマンドライン(cmd.exe)で以下を実行します:
C:\Users\Your Name>python --version
LinuxやMacでPythonがインストールされているか確認するには、Linuxではコマンドラインを開き、Macではターミナルを開いて以下を入力します:
python --version
もしPythonがインストールされていない場合は、以下のウェブサイトから無料でダウンロードできます:https://www.python.org/
Pythonはインタープリタ型のプログラミング言語です。つまり、開発者はテキストエディタでPython(.py)ファイルを書き、そのファイルをPythonインタープリタに投入して実行します。
コマンドラインでPythonファイルを実行する方法は以下の通りです:
C:\Users\Your Name>python helloworld.py
ここで、「helloworld.py」はPythonファイルの名前です。
最初のPythonファイル「helloworld.py」を作成しましょう。これは任意のテキストエディタで行えます。
print("Hello, World!")
非常に簡単です。ファイルを保存し、コマンドラインを開いて、ファイルを保存したディレクトリに移動し、以下を実行します:
C:\Users\Your Name>python helloworld.py
出力は以下のようになります:
Hello, World!
おめでとうございます。これで最初のPythonプログラムを書いて実行できました。
少量のコードをテストするために、ファイルにコードを書かない方が早くて簡単な場合があります。Pythonはコマンドラインとしても実行できるため、これが可能です。
Windows、Mac、Linuxのコマンドラインで以下を入力します:
C:\Users\Your Name>python
または、「python」コマンドが動作しない場合は「py」を試すこともできます:
C:\Users\Your Name>py
ここから、以前のチュートリアルの「Hello, World!」の例を含め、任意のPythonコードを書くことができます:
C:\Users\Your Name>python
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello, World!")
これにより、コマンドラインに「Hello, World!」と表示されます:
C:\Users\Your Name>python
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello, World!")
Hello, World!
Pythonコマンドラインでの作業を終了するには、以下を入力してPythonコマンドラインインターフェイスを終了できます:
exit()
Pythonは人気のあるプログラミング言語です。Guido van Rossumによって作られ、1991年にリリースされました。
Pythonの使用用途:
Pythonの最新のメジャーバージョンはPython 3であり、このチュートリアルではこれを使用します。ただし、Python 2はセキュリティアップデート以外の更新は行われていませんが、依然として人気があります。
このチュートリアルではPythonをテキストエディタで書きます。Thonny、Pycharm、Netbeans、Eclipseなどの統合開発環境(IDE)でもPythonを書くことができ、特に大規模なPythonファイルを管理する場合に便利です。
Pythonは読みやすさを重視して設計されており、数学から影響を受けた英語に似た構文を持っています。
Pythonは他のプログラミング言語でよく使用されるセミコロンや括弧の代わりに、新しい行でコマンドを完了します。
Pythonはインデント(空白)を使用してスコープを定義します。例えばループ、関数、クラスのスコープです。他のプログラミング言語ではこの目的のために波括弧を使用することが多いです。
print("Hello, World!")
ローカルで作成したスクレイピングプログラムをHerokuでも動かしたい場合の方法を解説します。
今回はスクレイピングについてではなく、HerokuでSelneiumを動かす方法について焦点を当てたいので、動かすプログラムは以下のようなごくシンプルなものと仮定します。また仮想環境やHerokuにアップロードする必要があるProcfileやrequirements.txtについては既に用意されているものとします。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://codelabsjp.net")
print(driver.page_source)
driver.quit()
print("完了")
SeleniumをHerokuで動かしたい場合、ブラウザはヘッドレス(バックグラウンドで動くブラウザ)に設定しなければなりません。その他にもHerokuの要件を満たす必要があるので、以下のコードを追加します。
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--disable-dev-shm-usage")
chrome_options.add_argument("--no-sandbox")
またローカルで動かす場合はdriverのパスを直接指定してやればよかったですが、Herokuでは環境変数を指定しておき、あとでHerokuの方でHerokuサーバー内の具体的なパスを指定します。
chrome_options.binary_location = os.environ.get("GOOGLE_CHROME_BIN")
driver = webdriver.Chrome(executable_path=os.environ.get("CHROMEDRIVER_PATH"), chrome_options=chrome_options)
os.environを使用していますので、必要なパッケージもインポートし、最終的なコードは以下のようになります。
from selenium import webdriver
import os
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--disable-dev-shm-usage")
chrome_options.add_argument("--no-sandbox")
chrome_options.binary_location = os.environ.get("GOOGLE_CHROME_BIN")
driver = webdriver.Chrome(executable_path=os.environ.get("CHROMEDRIVER_PATH"), chrome_options=chrome_options)
driver.get("https://codelabsjp.net")
print(driver.page_source)
driver.quit()
print("完了")
上記コード及び必要ファイルをHerokuにデプロイしたらHeroku側でSeleniumの動作に必要な設定をします。なおchrome.driverなどのドライバはHerokuサーバーに既にありますので、アップロードする必要はありません。
chrome_options.binary_location = os.environ.get("GOOGLE_CHROME_BIN")
driver = webdriver.Chrome(executable_path=os.environ.get("CHROMEDRIVER_PATH"),
上記コードで環境変数を設定していたので、環境変数に値を設定します。
Herokuで作成したアプリのSettingsにいき、Config VarsのReveal Config varsをクリックしてください。
そしたら以下のように設定します。(黒枠は無視してください。)
Key | Value |
---|---|
CHROMEDRIVER_PATH | /app/.chromedriver/bin/chromedriver |
GOOGLE_CHROME_BIN | /app/.apt/usr/bin/google-chrome |
KeyとValueの組み合わせは上記の通りです。コピーしてご利用ください。
引き続きSettingsを見るとConfig Varsの少し下にBuildpacksがあると思います。
Add buildpacksをクリックして以下のBuildpacksを追加してください。
以上でSeleniumを動かすための設定は完了です。
あとは通常通り、デプロイすればSelneiumが動きます。Herokuへのデプロイ方法についての詳しい説明はここでは行っていないので、わからない方はSelenium python デプロイ等で調べてください。
Python等で作成したLINE botを本番環境で動かしたいと思ったらサーバーにデプロイする必要があります。一番最初に選択肢にあがるのがHerokuだと思います。Herokuは2022年11月に無料枠を廃止したことで利用者はだいぶ減少したと言われていますが、それでも比較的安価なサーバーとして利用しやすいのも事実です。
また世界中のユーザーが利用しているので、フォーラムが充実しており、なにか問題があったときに比較的解決しやすいのもメリットです。
今回はそんなHerokuサーバーに自作したLINE botをデプロイ(アップロード)する手順を解説します。
LINE botの作り方については以下の記事で解説しておりますので、気になる方はどうぞ。
この記事では以下のようなLINE botのソースコードがすでに完成している前提で進めていきます。
# app.py
from flask import Flask, request, abort
from linebot import (
LineBotApi, WebhookHandler
)
from linebot.exceptions import (
InvalidSignatureError
)
from linebot.models import (
MessageEvent, TextMessage, TextSendMessage,
)
from scrape import get_url
app = Flask(__name__)
line_bot_api = LineBotApi('アクセストークン')
handler = WebhookHandler('チャネルシークレット')
@app.route("/callback", methods=['POST'])
def callback():
# get X-Line-Signature header value
signature = request.headers['X-Line-Signature']
# get request body as text
body = request.get_data(as_text=True)
app.logger.info("Request body: " + body)
# handle webhook body
try:
handler.handle(body, signature)
except InvalidSignatureError:
print("Invalid signature. Please check your channel access token/channel secret.")
abort(400)
return 'OK'
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=event.message.text))
if __name__ == "__main__":
app.run()
Pythonで作られたLINE botは基本的にFlaskを利用しているので、HerokuでFlaskを実行させるためのgunicornというライブラリをインストールします。
pip install gunicorn
これまでにインストールしたライブラリをHerokuにデプロイした際にもインストールするように伝えるためのrequirements.txtを作成します。
pip freeze > requirements.txt
aiohttp==3.8.3
aiosignal==1.3.1
async-generator==1.10
async-timeout==4.0.2
attrs==22.2.0
certifi==2022.12.7
cffi==1.15.1
charset-normalizer==2.1.1
...
...
上記のようなファイルが出来上がるはずです。
続いて、app.py(メインのソースコード)と同じ階層にProcfileという名前のファイルを新規作成してください。
ProcfileはHerokuにデプロイした際に最初に実行する内容を指示するためのファイルです。先程インストールしたgunicornを用いてapp.pyを実行させたいので、以下のコードをコピペしてください。
web: gunicorn app:app
半角スペースが全角になっていたり、改行が入ったりするとエラーが発生するので、上のコードをそのまま貼り付けてください。
以上で下準備は完了です。
https://www.heroku.comよりサインアップを済ませ、ログインしてください。
ログイン後、ダッシュボードにいくとNEW > Create new appというボタンがありますので、クリックして新規アプリを作成してください。
なんでも良いのでアプリ名を決めて、Create appをクリックします。名前は固有のものないといけないので、availableと表示されていることを確認してください。regionに関してはUnited Statesのままで問題ありません。
The Heroku CLI | Heroku Dev CenterよりHeroku CLIをダウンロード・インストールしてください。
macの場合は上記コマンド、Windowsの場合はインストーラーをダウンロードして実行します。
heroku --version
インストールが完了したら上記コマンドを実行し、下画像のようにバージョンが表示されれば正常にインストールされています。
インストールしたらターミナルからherokuにログインします。下記のコマンドを実行してください。
heroku login
実行後、なんでもいいのでキーを押すように求められるので、エンターキーなどを押すとログインするためにブラウザが起動しますので、通常通りログインしてください。
ログインが完了するとターミナルにログインが完了した旨が表示されるので、cdコマンドを利用してapp.pyがあるディレクトリまで移動してください。
cd my-project/
移動したら下記のコマンドで下記コマンドを順番に実行してください。
git init
heroku git:remote -a your-app-name
your-app-nameは最初に登録したアプリ名に置き換えてください。私の場合は以下のようになります。
heroku git:remote -a my-first-line-bot
引き続き以下のコマンドを実行してください。
git add .
git commit -am "make it better"
git push heroku master
以上でデプロイは完了です。
デプロイが完了したらLINE botのwebhook URLの設定を変更するのを忘れないようにしましょう。
問題なくデプロイが完了していればherokuのアプリ管理画面に以下のように表示されているはずです。
デフォルトではデプロイが完了しただけではアプリは実行されていないのでconfigure DynosをクリックしてDynosをONにしましょう。
以上で完了です。お疲れ様でした。
LINE botが正常に動くか確認してみてください。動かない場合はWebhook URLの変更を忘れているか、DynosがONになっていない可能性があります。
デプロイ時にエラーが出ている人はrequirements.txtかProcfileが正しく作成できていない可能性が高いですのでもう一度確認してみてください。
HerokuにFlaskアプリ(LINE botなど)をデプロイするには
をしてから、サーバーにアップロードします。最初はそれぞれのファイルやコマンドがなんの意味を持つのか知る必要はありません。とりあえず必要な手順として従いましょう。Webアプリを開発していくうちに嫌でもコマンドの意味やそれぞれのファイルの意味が自然と身についていくはずです。
今回はLINE botのデプロイというタイトルで解説しましたが、基本的に一連の流れはどのようなアプリでも変わりません。Procfileの中身や必要なライブラリが少し変わる程度です。
よく企業の公式アカウントである自動応答LINE botですが、実は個人でも意外と簡単に作ることができちゃいます。また個人で利用するくらいであればお金も一切かからずに楽しむことができるので、Pythonの基礎を一通り勉強した人には次のステップとしてオススメです。
この記事ではPython初心者でもわかるようにLINE botの作成手順を説明していきます。
自動応答botではなく、ある特定の条件になったらLINE通知を送ることができるLINE notifyというものもありますが、それについては以下の記事で紹介していますので、気になる方は参考にしてみてください。
【Python】LINE Notifyを活用してお気に入りのサイトの更新をLINEで自動通知させよう!
LINE Developersに飛んでLINE Notifyに登録しましょう。
登録はLINEアカウントを持っていれば誰でも無料でできます。
すでにLINEアカウントを持っている方は右上のログインからログインしてください。
ログインすると、以下のようなコンソール画面が表示されます。
サービスを提供し、利用者の情報を取得する個人の開発者、企業、または組織の名称を表すプロバイダーというものを作成する必要があります。個人の開発者であれば名称はなんでも構いませんので、お好きな名前のプロバイダーを作成ボタンから作成してください。
プロバイダーを作成するとプロバイダーごとの設定画面が表示されます。
LINE botはMessaging APIというLINEが提供しているAPIを利用することによって実装できますので、チャネル設定からMessaging APIをクリックしてください。
チャネル作成について必要な情報の入力が求められますので、必須項目を入力してください。アイコンやチャネル名は後から変更できますので、気軽に決めていただいて問題ありません。チャネルの説明にはBotが具体的に何をするのかについての説明を入力します。
大業種・小業種は必須項目ですが何かBotに影響を与えるものではないので、適当でも構いません。
プライバシーポリシーURLとサービス利用規約URLがある方は入力しますが、任意ですので特にない方はスキップできます。
必須項目の入力が完了したら利用規約に同意するを選択して作成を完了させます。
チャネルの作成が完了するとチャネル設定画面が表示されます。チャネル基本設定タブを下の方にスクロールしていくとチャネルシークレットが表示されています。後で使いますので、メモ帳などにコピーして保存しておいてください。
続いて、上に戻るとMessaging API設定というタブがありますので、クリックして下までスクロールするとチャネルアクセストークンがあります。「発行」ボタンをクリックして発行してください。
こちらもメモ帳などにコピーして保存しておきましょう。
LINE botではユーザーがBotに対してメッセージを送ったときにwebhookURLというものに対してwebhookイベントを送ることで何かしらの処理をします。
簡単にいうと「~さんがこういうメッセージを送信したよー」ということを指定したサーバー(webhookURL)に伝えて、サーバーでは私たちがこれから作成するPythonコードの内容が処理されて、その結果がユーザーに返されるという仕組みです。普通のwebサイトと同じような仕組みですね。完璧に理解する必要はありませんが、そういうものなんだ程度に抑えておいてください。
webhookURLについては後で作成します。
先ほど取得したチャネルアクセストークンの少し上に応答メッセージの欄があります。
右端の編集をクリックしてください。
応答機能のwebhookがデフォルトではオフになっていると思いますので、こちらをクリックしてオンにしてください。応答メッセージはオフにしてください。設定を変更すると自動で変更内容が保存されますので、そのページは閉じていただいて大丈夫です。
(上画像では応答メッセージがオンなっていますが、オフで大丈夫です)
いよいよBotの応答内容を支持するPythonコードを作成していきます。
作業用のフォルダを作成し、コードエディターで作業用フォルダを開いてください。名前はなんでも構いませんが、今回はLINE_botというフォルダにしています。
まずは仮想環境を作成します。Python3では標準で仮想環境作成用モジュールがインストールされていますので、ターミナルで以下のコマンドを実行してください。
python -m virtualenv env
続いて以下のコマンドで作成した仮想環境を有効にします。
./env/Scripts/activate.ps1
envという仮想環境名がコマンドラインの先頭に表示されていれば、正常に仮想環境が有効になっています。
必要なパッケージをインストールします。
LINE Bot SDK
pip install line-bot-sdk
flask
pip install flask
main.pyを作成し、以下のコードをコピペしてください。
from flask import Flask, request, abort
from linebot import (
LineBotApi, WebhookHandler
)
from linebot.exceptions import (
InvalidSignatureError
)
from linebot.models import (
MessageEvent, TextMessage, TextSendMessage,
)
app = Flask(__name__)
line_bot_api = LineBotApi('アクセストークン')
handler = WebhookHandler('チャネルシークレット')
@app.route("/callback", methods=['POST'])
def callback():
# get X-Line-Signature header value
signature = request.headers['X-Line-Signature']
# get request body as text
body = request.get_data(as_text=True)
app.logger.info("Request body: " + body)
# handle webhook body
try:
handler.handle(body, signature)
except InvalidSignatureError:
print("Invalid signature. Please check your channel access token/channel secret.")
abort(400)
return 'OK'
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=event.message.text))
if __name__ == "__main__":
app.run()
アクセストークンとチャネルシークレットの部分に先ほど保存したアクセストークンとチャネルシークレットをペーストしてください。
Pythonコードはこれで完了ですが、先ほど説明したwebhook URLというLINEからユーザーのデータを送るためのURLがないので、これを作成するためにngrokというツールを利用してURLを作成します。
ngrokはhttp://127.0.0.1:5000といったローカルサーバーをグローバルなURLに変換するためのツールです。無料で利用できますので、以下のURLから自分のOSに合った方法でngrokをダウンロードしてください。
Windowsの場合はzipファイルをダウンロードして解凍します。でてきたngrok.exeを作業用フォルダにコピーしてください
macの場合もほぼ同様の作業でダウンロードしたzipファイルを解凍後、でてきたファイルを作業用フォルダにコピーしてください。
ngrokを使用するためにもトークンが必要になりますので、ngrok – sing upからngrokに登録します。
登録が完了したらログインして、ダッシュボードのGetting started→Your Authtokenをクリックしてください。以下の画面にトークンが表示されます。
以下のコマンドを実行し、取得したトークンを登録します。Your-Authtokenの部分は取得したAuthtokenに置き換えてください。
ngrok config add-authtoken Your-Authtoken
これでngrokの設定が完了したので、main.pyを実行してください。
ここで表示されているhttp://127.0.0.1:5000というローカルサーバーでflaskアプリが起動しましたので、これをngrokを使ってグローバルなURLに変換します。
flaskはこのまま動作した状態にしたいので、もう一つ別にコンソールを開いてください。以下のコマンドを実行してください。5000の部分はポート番号とよばれるもので、http://127.0.0.1:8000の人は8000に置き換えて実行してください。
ngrok http 5000
Forwardingというところにhttp://localhost:5000に対応するURLが表示されます。
そのURLの最後に/callbackを追加してMessagin API設定のWebhook URLに貼り付けてください。
例)https://e986-2001-8004-4420-c3aa-8183-dfdc-4e2f-3d9c.au.ngrok.io/callback
またWebhookの利用も有効にしておいてください。
更新をクリック後、検証をクリックして「成功」が表示されれば設定完了です。エラーが発生した人は何かが間違っているので、上記手順を見直してみてください。ポート番号が違っているか、/callbackをつけ忘れている可能性が高いです。
これでQRコードなどから作成したLINE botを友達に追加して何かテキストを送ってみてください。
オウム返しされるはずです。これは下記の部分のコードによってオウム返しするように設定されているからです。
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=event.message.text))
ユーザーが何かメッセージを送信すると、handle_messageが呼び出され、この関数に渡されたeventにはユーザーが送ったメッセージなどが含まれています。event.message.textがユーザーが送った内容で、その内容をそのままTextSendMessage関数に渡すことでオウム返ししています。
ですので、TextSendMessageに渡す内容を以下のように変更してみると、ユーザーが送った内容に関係なく「自動応答です」が返されるようになります。(変更を反映させるには一度flaskアプリを再起動する必要があるので、flaskを実行しているコンソール上でCtrl+Cをおして終了してから、再度main.pyを実行してください。)
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text="自動応答です"))
あとはこのTextSendMessageの内容をif文などで分岐させてあげればユーザーが送った内容に対応して応答メッセージを変更させることができます。
例えばユーザーが「現在時刻」と送った場合に時間を返したい場合、
import datetime
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
if event.message.text == '現在時刻':
reply_message = datetime.datetime.now().strftime('%Y年%m月%d日 %H:%M:%Sです')
else:
reply_message = "「現在時刻」と送信してください。"
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=reply_message))
とすると以下のような結果になります。
if文でevent.message.text(ユーザーが送った内容)が「現在時刻」かを確認し、そうである場合には現在時刻を、そうでない場合は定型文で返すようにしています。
あとはあなたのアイデア次第でどんなBotでも作成できます。
いかがでしたか?今回はLINE Messaging APIを使ってLINE botを作成する方法について解説しました。
Webhookなど、少しサーバー関連の小難しい話もありましたが、手順に従えばカンタンに実装できてしまいます。TextSendMessage()関数の中身を変更することで、応答内容を変更することができます。
ぜひあなたのアイデアで面白いBotを作成してみてください!
サイトのスクレイピングはBeautifulSoupやSeleniumといったライブラリを利用して行うことができますが、中には簡単にはスクレイピングできないようなサイトもあります。
例えばJavascriptで制御されているサイト、いわゆる動的なサイトはブラウザでサイトが開かれた後にJavascriptが実行され、そこではじめてHTMLが生成・描写されるためBeatifulSoupでは取得できません。React.jsやAngular.js、JQueryといったフレームワークを利用して作られたサイトなど、Javascriptで制御されているサイトは数多くあり、増加傾向にあります。
Seleniumでブラウザを開き、ゴリゴリにやっていくことも不可能ではありませんが、いまいち動作が安定しないのと、何かと不具合が多いのでこちらも簡単ではありません。
今回はBeautifulSoupよりもシンプルに、Seleniumよりも安定してJavascriptでレンダリングされるサイトをスクレイピングできるAPIを発見したので紹介したいと思います。
その名はScrapingBee
ScrapingBeeではJavascriptで制御されたページで何かしらの操作(クリックやスクロールなど)をした後しか表示されないような内容まで簡単にスクレイピングすることができます。以下ではScrapingBeeの使い方を解説していきます。
まずはScrapingBeeを利用するためにAPIキーが必要ですので、公式サイトから取得します。
リンクをクリックすると上のような画面が表示されると思いますので、Try ScrapingBee for Freeをクリックしてください。
その後、メールアドレスまたはGoogleアカウントまたはGithubアカウントで登録するかを選べますので、お好きな方法で登録してください。
登録が完了したら以下のダッシュボード画面が表示されると思います。(されない場合はもう一度トップページがTry ScrapingBee for Freeをクリックするとダッシュボードに飛びます)
右上にYour API Keyセクションがあるので、CopyをクリックしてAPIキーを保存しておいてください。
ScrapingBeeライブラリを利用しますので、以下のコマンドでインストールします。
pip install scrapingbee
from scrapingbee import ScrapingBeeClient
client = ScrapingBeeClient(api_key='YOUR-API-KEY')
response = client.get("YOUR-URL")
print('Response HTTP Response Body: ', response.content)
Pythonコードは上記のたった4行です。
以下のような結果が返ってきます。
<html>
<head>
...
</head>
<body>
<content>
</content>
<content>
</content>
<content>
</content>
<content>
</content>
<content>
</content>
</body>
</html>
ScrapingBeeClientオブジェクトを自分のAPIキーで作成したらgetメソッドにスクレイピングしたいサイトのURLを渡すだけです。getメソッドにparamsに辞書型のパラメーターを渡すことで様々な動作を指定することができます。下のrender_jsというパラメーターはデフォルトではTrueになっており、これによりJavascriptで描写されるサイトでもスクレイピングできるようになっています。
response = client.get('YOUR-URL',
params = {
'render_js': 'False',
}
)
render_jsをFalseにした場合の結果は以下のようになります。
<html>
<head>
..
</head>
<body>
</body>
</html>
Javascriptが描写されない状態で取得しているので、bodyタグの中身が空になってしまっています。
ScrapingBeeAPIはスクレイピングしたいサイトに対して何かしらのアクションをさせなければいけない場合でもパラメーターにjs_scenarioを渡すことによって実際のブラウザを操作しているかのような挙動を実現できます。
たとえばページ内のあるボタンをクリックしないと表示されないデータがある場合、そのボタンをクリックさせなければいけません。その場合、以下のコードで実現できます。
from scrapingbee import ScrapingBeeClient
client = ScrapingBeeClient(api_key='YOUR-API-KEY')
response = client.get('YOUR-URL',
params = {
'js_scenario': '{"instructions": [{"click": "#buttonId"}]}',
}
)
print('Response HTTP Status Code: ', response.status_code)
print('Response HTTP Response Body: ', response.content)
js_scenario’: ‘{“instructions”: [{“click”: “#buttonId”}]}の#buttonId部分にクリックしたいボタンのIDを指定するだけです。
便利なものとして以下のようなものがあります。他にもありますので、もっと知りたい方は公式ドキュメントを参考にしてください。
{"click": "#button_id"} # 要素をクリックさせる
{"wait": 1000} # 指定した時間(ミリ秒)待機
{"wait_for": "#slow_div"} # CSSで指定された要素が描写されるまで待機
{"wait_for_and_click": "#slow_div"} # CSSで指定された要素が描写されるまで待機し、その後要素をクリック
{"scroll_x": 1000} # 指定したpx分水平方向にスクロール
{"scroll_y": 1000} # 指定したpx分垂直方向にスクロール
{"fill": ["#input_1", "value_1"]} # input_1のIDを持つ要素に"value_1"を入力
{"evaluate": "console.log('toto')" # 指定したJavascriptコードを実行
javascriptで描写されるサイトの中には要素が描写されるまで時間がかかるものもあり、描写が終わる前にスクレイピングしてしまうと中身が取得できていないことも多々あります。秒数指定でもいいのですが、描写までどれくらいかかるかわからないので安定しませんし、だからといって長く待ちすぎるのも嫌なので、wait_forはかなり便利です。秒数指定ではなく要素指定なので、その要素が描写されてから確実にスクレイピングしてくれます。
その他にも便利な機能がたくさんあるので、スクレイピングを極めたいならScrapingBeeは利用しない手はないでしょう。
ScrapingBeeのより具体的なユースケースやメリットを紹介してほしいという声を多くいただきましたので、紹介させていただきます。以下ではPythonでスクレイピングする場合を想定してサンプルコードの解説をしていきます。
ScrapingBeeのAPIはECサイトの価格を監視する際や不動産・物件情報のスクレイピングなど、一般的なスクレイピングタスクをこなすのにも最適です。スクレイピングが難しいようなサイトでもブロックされずに情報を取得することができます。
実際に私がScrapingBeeを使う場面で最も多いのがこのデータ抽出です。ScraipingBeeのAPIはデータ抽出をするのに非常に適していて、かなりカンタンに特定のサイトの必要な情報を抽出することができます。なんといっても強力なのが自動HTMLパース機能で、めんどうな整形処理を行わずにJson形式などでデータを抽出することができます。
例えばScraipingBee公式ブログのタイトル・サブタイトル・記事一覧を取得したい場合は次のようなコードで簡潔に記すことができます。
# pip install scrapingbee
from scrapingbee import ScrapingBeeClient
client = ScrapingBeeClient(api_key='YOUR-API-KEY')
response = client.get(
'https://www.scrapingbee.com/blog',
params={
'extract_rules':{
"title" : "h1",
"subtitle" : "#subtitle",
"articles": {
"selector": ".card",
"type": "list",
"output": {
"title": ".post-title",
"link": ".post-title@href",
"description": ".post-description"
}
}
},
},
)
print('Response HTTP Status Code: ', response.status_code)
print('Response HTTP Response Body: ', response.json())
# ----------結果--------------
Response HTTP Status Code: 200
{
"title": "The ScrapingBee Blog",
"subtitle": " We help you get better at web-scraping: detailed tutorial, case studies and writing by industry experts",
"articles": [
{
"title": " Block ressources with Puppeteer - (5min)",
"link": "https://www.scrapingbee.com/blog/block-requests-puppeteer/",
"description": "This article will show you how to intercept and block requests with Puppeteer using the request interception API and the puppeteer extra plugin."
},
...
{
"title": " Web Scraping vs Web Crawling: Ultimate Guide - (10min)",
"link": "https://www.scrapingbee.com/blog/scraping-vs-crawling/",
"description": "What is the difference between web scraping and web crawling? That's exactly what we will discover in this article, and the different tools you can use."
},
]
}
paramsの’extract_rules’に取得したいデータを辞書形式で指定します。サンプルコードではタイトルはシンプルにh1タグで指定、サブタイトルはidがsubtitleの要素を指定、複数ある記事はCSSセレクターと”type”:”list”で指定した後に”output”に記事のタイトル、リンク、詳細をそれぞれクラス名で指定して取得しています。@hrefとすることで、要素の指定した属性の値を取得することができます。
視覚的にもかなりわかりやすいコードだと思います。
スクレイピングするサイトのスクリーンショットを撮りたい場合などもあるかと思います。
ScrapingBeeのAPIを利用することで超簡単にスクリーンショットをとることもできちゃいます。
# pip install scrapingbee
client = ScrapingBeeClient(api_key='YOUR-API-KEY')
response = client.get(
'YOUR-URL',
params={
'screenshot': True,
}
)
if response.ok:
with open("./screenshot.png", "wb") as f:
f.write(response.content)
ScrapingBee APIでスクリーンショットを撮る方法はparamsに’screenshot’: Trueを渡してあげるだけです。スクリーンショットが格納されたresponseを上のサンプルコードのようにすることで画像を保存することができます。
スクリーンショットはrender_js=Trueになっている場合のみ撮ることができます。Javascriptでレンダリングされるサイトもレンダリング後にスクリーンショットを撮れるようにするためです。
またScrapingBeeにはスクレイピングを高速化するためのオプションの一つとしてblock_resourcesがありますが、これは画像などスクレイピングに必要ない情報のレンダリングを無視することで高速化をはかるものですが、screenshot=Trueにした場合は当然ですがこちらのオプションは自動的にFalseになります。
様々な理由でGoogleの検索結果の内容をスクレイピングしたい方は多いと思います。実際にエンジニアとして働いていると、検索結果の内容をスクレイピングしてほしいという依頼をよくいただきます。
が、Googleの検索結果のスクレイピングは非常に難しく、通常のアプローチではすぐにロボット判定されてブロックされてしまいます。
ScrapingBeeではGoogle Search APIというまさにGoogle検索結果を取得するため専用のAPIが用意されているので、高度な技術を必要とせずに簡単に検索結果を取得できてしまいます。
オーガニック検索結果や広告情報、ローカル情報、Google Mapの情報、関連したクエリなど、さまざまな情報の取得に対応しているので、非常に使い勝手がいいかと思います。
# `pip install requests`
import requests
def send_request():
response = requests.get(
url="https://app.scrapingbee.com/api/v1/store/google",
params={
"api_key": "YOUR-API-KEY",
"search": "pizza new-york",
},
)
print('Response HTTP Status Code: ', response.status_code)
print('Response HTTP Response Body: ', response.content)
send_request()
コードは上記のようにかなりシンプル。
paramsに自分のAPIキーと検索したいワードを渡すだけです。
「pizza new-york」で検索した場合の結果は以下のようになります。
{
"bottom_ads": [],
"knowledge_graph": {},
"local_results": [
{
"position": 1,
"review": 4.6,
"review_count": 62,
"title": "NY Pizza Suprema"
},
...
],
"meta_data": {
"location": null,
"number_of_ads": 0,
"number_of_organic_results": 20,
"number_of_page": 363000000,
"number_of_results": 363000000,
"url": "https://www.google.com/search?q=pizza+new+york&hl=en&num=20"
},
"organic_results": [
{
"date": null,
"date_utc": null,
"description": null,
"displayed_url": "https://www.tripadvisor.com › ... › New York City",
"domain": "www.tripadvisor.com",
"position": 1,
"rich_snippet": {},
"sitelinks": [],
"title": "THE 10 BEST Pizza Places in New York City (Updated 2023)",
"url": "https://www.tripadvisor.com/Restaurants-g60763-c31-New_York_City_New_York.html"
},
{
"date": null,
"date_utc": null,
"description": "New York–style pizza is pizza made with a characteristically large hand-tossed thin crust, often sold in wide slices to go. The crust is thick and crisp ...",
"displayed_url": "https://en.wikipedia.org › wiki › New_York–style_pizza",
"domain": "en.wikipedia.org",
"position": 2,
"rich_snippet": {
"top": {
"attributes": [
{
"name": "Main ingredients",
"value": "Pizza dough, tomato sauce, ..."
},
{
"name": "Region or state",
"value": "New York City, New York"
}
],
"attributes_flat": "Main ingredients: Pizza dough, tomato sauce, ..., Region or state: New York City, New York",
"detected_extensions": {}
}
},
"sitelinks": [],
"title": "New York–style pizza",
"url": "https://en.wikipedia.org/wiki/New_York%E2%80%93style_pizza"
},
...
],
"questions": [
{
"answer": "New York-style pizza has slices that are large and wide with a thin crust that is foldable yet crispy. It is traditionally topped with tomato sauce and mozzarella cheese, with any extra toppings placed on top of the cheese. Pizza without additional toppings is called “plain,” “regular,” or “cheese.”",
"position": null,
"text": "What pizza is New York famous for?"
},
...
],
"related_queries": [
{
"position": 0,
"title": "best pizza in new york manhattan",
"url": "https://www.google.com/search?num=20&hl=en&q=Best+pizza+in+New+York+Manhattan&sa=X&ved=2ahUKEwjctLPoq4uAAxWUmWoFHRs4DmgQ1QJ6BAgxEAE"
},
...
],
"related_searches": [
{
"link": "https://www.google.com/search?num=20&hl=en&q=Best+pizza+in+New+York+Manhattan&sa=X&ved=2ahUKEwjctLPoq4uAAxWUmWoFHRs4DmgQ1QJ6BAgxEAE",
"position": 0,
"query": "best pizza in new york manhattan",
"type": "standard"
},
...
],
"top_ads": [
{
"description": "Cheap UK Pizza: Compare pizza in the UK",
"domain": "uk-go-pizza.com",
"position": 1,
"sitelinks": [],
"snippet": null,
"title": "Compare UK Pizza - Pizza - UK Pizza",
"tracking_url": "https://www.google.com/aclk?sa=l&ai=DChcSEwjU1qrRrYuAAxUVn1oFHdLZBI8YABAAGgJ2dQ&ae=2&sig=AOD64_3CFgH0bQFdqiC1kwZfEpVChxRd4g&q&adurl",
"url": "https://uk-go.com/home-insurance/",
"visual_url": "uk-go.com"
}
],
"bottom_ads": [
{
"description": "Cheap UK Pizza: Compare pizza in the UK",
"domain": "uk-go-pizza.com",
"position": 1,
"sitelinks": [],
"snippet": null,
"title": "Compare UK Pizza - Pizza - UK Pizza",
"tracking_url": "https://www.google.com/aclk?sa=l&ai=DChcSEwjU1qrRrYuAAxUVn1oFHdLZBI8YABAAGgJ2dQ&ae=2&sig=AOD64_3CFgH0bQFdqiC1kwZfEpVChxRd4g&q&adurl",
"url": "https://uk-go.com/home-insurance/",
"visual_url": "uk-go.com"
}
],
"top_stories": [
{
"date": "2023-07-12T13:25:12.298Z",
"link": "https://www.grubstreet.com/2023/07/the-best-of-the-year-i-ate-ny-so-far.html",
"position": 2,
"source": "Grub Street",
"title": "The Best of NYC Eating in 2023 (So Far)"
}
],
"news_results": [
{
"date": "2023-07-11T09:23:18.283Z",
"domain": "www.cnbc.com",
"link": "https://www.cnbc.com/2023/07/10/pizza-delivery-driver-why-tipping-is-crucial.html",
"position": 1,
"snippet": "No week of pay is the same for pizza delivery driver Brendan Madden of Lincroft, New Jersey, because \"not everyone tips fairly.\"",
"source": "CNBC",
"title": "Tipping is 'not a sustainable system,' says 25-year-old pizza delivery driver: My income 'relies on the goodwill of others'"
}
],
"map_results": [
{
"address": "New York, NY",
"category": "pizza",
"link": "https://www.google.com/aclk?sa=l&ai=DChcSEwiH9968tNmBAxWrNa0GHQPvDw4YABAAGgJwdg&gclid=EAIaIQobChMIh_fevLTZgQMVqzWtBh0D7w8OEBAYAiAAEgJekvD_BwE&sig=AOD64_32J9Tmh5PKoq6WWVAXNhjXb9jvqA&q=&ctype=99&ved=2ahUKEwjgzNe8tNmBAxVxHDQIHUznDkAQhKwBegQIGxAZ&adurl=",
"phone": "(212) 831-0300",
"position": 2,
"price": "$",
"rating": "4.7",
"reviews": 2301,
"title": "Domino's Pizza"
}
]
}
map_resultsにはGoogle Mapに表示される情報なども格納されています。
個人であれ、企業であれGoogleでの検索結果をリスト化して利用したいケースは多々あると思います。
実際CrowdWorks等のクラウドソーシングサービスでも「Google検索結果を取得するプログラム」を開発してほしいといった依頼を度々見かけます。
たった一回の検索結果であればSeleniumなどを用いてスクレイピングすることはそう難しくないけど、それであればわざわざプログラム化する必要はなく、実際には何千、何万件といったデータを取得したい場合が多いと思います。しかしGoogleはスクレイピング対策がかなり厳しく、少しでも機械的な挙動を検知するとreCAPTCHAが表示されたり、アクセス制限をくらったりとなかなかうまくいかない。
そんなこんなでどうしたらいいものかと調べていたところ、この悩みをたった数行で解決してくれる超優秀なAPIが見つかったので使い方を紹介しようと思います。
その超優秀なAPIとはScraipingBee
以下ではScrapingBeeを用いてGoogleの検索結果を取得する方法を解説していきます。
まずはScrapingBeeを利用するためにAPIキーが必要ですので、公式サイトから取得します。
リンクをクリックすると上のような画面が表示されると思いますので、Try ScrapingBee for Freeをクリックしてください。
その後、メールアドレスまたはGoogleアカウントまたはGithubアカウントで登録するかを選べますので、お好きな方法で登録してください。
登録が完了したら以下のダッシュボード画面が表示されると思います。(されない場合はもう一度トップページがTry ScrapingBee for Freeをクリックするとダッシュボードに飛びます)
右上にYour API Keyセクションがあるので、CopyをクリックしてAPIキーを保存しておいてください。
Pythonで取得したい方は以下のコードをコピペしてください
import requests
def send_request(keyword):
response = requests.get(
url="https://app.scrapingbee.com/api/v1/store/google",
params={
"api_key": "コピーしたAPIキーをペースト",
"search": keyword,
"country_code": 'jp',
"language": "ja"
},
)
print('Response HTTP Response Body: ', response.content.decode("unicode-escape"))
send_request('イタリアン 新宿')
send_request()関数に渡した引数が検索機ワードになります。上記コードの場合、
「イタリアン 新宿」で検索した結果がJson形式で取得できます。実際の検索結果とコードからの取得結果を照らし合わせてみます。
{
"meta_data": {
"url": "https://www.google.co.jp/search?q=%E3%82%A4%E3%82%BF%E3%83%AA%E3%82%A2%E3%83%B3%E3%80%80%E6%96%B0%E5%AE%BF&hl=ja&gl=jp&num=100&start=0",
"number_of_results": 18300000,
"location": "No location",
"number_of_organic_results": 97,
"number_of_ads": 0,
"number_of_page": 1,
"no_results_message": ""
},
"organic_results": [
{
"url": "https://tabelog.com/italian/tokyo/A1304/A130401/rank/",
"displayed_url": "https://tabelog.com › ... › 新宿 イタリアン",
"description": "新宿 イタリアン 予約人気ランキングTOP20. 新宿にあるイタリアン(イタリア料理)のお店のネット予約数ランキングTOP20を発表!(2023年1月2 ...",
"extra_info": "",
"position": 0,
"title": "新宿で人気のイタリアン ランキングTOP20 - 食べログ"
},
{
"url": "https://restaurant.ikyu.com/area/tokyo/002/0004/10002/",
"displayed_url": "https://restaurant.ikyu.com › area › tokyo",
"description": "【電話予約よりおトク】厳選レストラン予約サイト「一休.comレストラン」では、イタリアンが美味しい新宿の厳選レストランを31件掲載中。ランチ、ディナーはもちろん、 ...",
"extra_info": "",
"position": 1,
"title": "新宿のイタリアンが楽しめるおすすめレストラントップ20"
},
{
"url": "https://bimi.jorudan.co.jp/topics/34457.html",
"displayed_url": "https://bimi.jorudan.co.jp › topics",
"description": "2022/12/20 — 新宿の絶品イタリアンをご紹介。イタリア料理・激戦区として知られる新宿から、日本初上陸の話題店「ローズマリーズトウキョウ」、クチコミで人気 ...",
"extra_info": "2022/12/20 — ",
"position": 2,
"title": "新宿の絶品イタリアン! 「本当においしい」と大絶賛の超 ..."
},
{
"url": "https://www.hotpepper.jp/SA11/Y055/G006/g060/",
"displayed_url": "https://www.hotpepper.jp › ... › イタリアン・フレンチ",
"description": "新宿ではイタリアン、フレンチ、パスタ・ピザ、ビストロがおすすめです。ホットペッパーグルメなら、お得なクーポンはもちろん、こだわりメニューリゾット、バーニャカウダ ...",
"extra_info": "",
"position": 3,
"title": "新宿 | イタリアンのグルメ・クーポン情報"
},
{
"url": "https://howtravel-gourmet.com/kanto/tokyo/shinjuku/shinjuku-italian/",
"displayed_url": "https://howtravel-gourmet.com › 関東 › 東京 › 新宿",
"description": "新宿東口周辺の人気おすすめイタリアン8選(目次) · IL Bacaro · Vina Vin Vino · Trattoria PREGO PREGO · Trattoria QUINTO · TRATTORIA Briccola · Tavola da Rio · Market ...",
"extra_info": "",
"position": 4,
"title": "【食べログ高評価!】新宿の人気おすすめイタリアン15選 ..."
},
{
"url": "https://hitosara.com/ranking/tokyo/T002/GC0401/",
"displayed_url": "https://hitosara.com › ... › 東京都 イタリアンランキング",
"description": "【ROSEMARY'S TOKYO】(ローズマリーズ トウキョウ)は新宿にあるおいしいイタリアンのお店です。NYにあるレストランが日本に進出した店で、イタリア・トスカーナの料理が ...",
"extra_info": "",
"position": 5,
"title": "新宿・代々木のイタリアンおすすめグルメランキング トップ23"
},
{
"url": "https://aumo.jp/articles/35256",
"displayed_url": "https://aumo.jp › 関東 › 東京 › 新宿 › 新宿駅",
"description": "新宿には美味しいイタリアンのお店がたくさん!今回は新宿にある、おすすめのイタリアンレストランを出口別にご紹介。デートや女子会にぴったりなお店や個室でゆっくり ...",
"extra_info": "",
"position": 6,
"title": "新宿のおすすめイタリアン16選!デートや女子会に使えるお店 ..."
},
{
"url": "https://r.gnavi.co.jp/area/aream2115/italian/rs/",
"displayed_url": "https://r.gnavi.co.jp › ... › 新宿・代々木 イタリアン",
"description": "【ぐるなび】新宿のイタリアン グルメ・レストランをお探しなら日本最大級のレストラン公式情報サイト「ぐるなび」にお任せ。おすすめの新宿のイタリアン グルメな ...",
"extra_info": "",
"position": 7,
"title": "【美味しいお店が見つかる!】新宿のイタリアン 食事 ..."
},
{
"url": "https://retty.me/area/PRE13/ARE1/LCAT6/",
"displayed_url": "https://retty.me › イタリアン › 東京 イタリアン",
"description": "3 日前 — 【Rettyでお得にネット予約】実名口コミNo.1のグルメサイトRettyでは、【ここでしか見つからない】新宿 イタリアンのお店探しをサポートします!",
"extra_info": "3 日前 — ",
"position": 8,
"title": "新宿でイタリアンが美味しい人気店20選 - Retty"
},
{
"url": "https://rtrp.jp/locations/332/categories/115/",
"displayed_url": "https://rtrp.jp › エリア一覧 › 日本 › 関東地方 › 東京",
"description": "新宿のイタリアンを探すならRETRIPで。このページには「新宿 × イタリアン」に関するまとめ記事、スポットが掲載されています。「新宿」「イタリアン」に関する ...",
"extra_info": "",
"position": 9,
"title": "【2023最新】新宿の人気イタリアンランキングTOP30"
},
{
"url": "https://www.ozmall.co.jp/restaurant/tokyo/area/shinjuku/italian/",
"displayed_url": "https://www.ozmall.co.jp › ... › 東京都 › 新宿区",
"description": "編集部が実際に足を運んで厳選したグルメ・レストランがいつでもWEB予約可能!新宿でイタリアン(イタリア料理)のレストランを探すならオズモール。",
"extra_info": "",
"position": 10,
"title": "新宿|おすすめのイタリアン(イタリア料理) - OZmall"
},
{
"url": "https://www.instagram.com/explore/tags/%E6%96%B0%E5%AE%BF%E3%82%A4%E3%82%BF%E3%83%AA%E3%82%A2%E3%83%B3/?hl=ja",
"displayed_url": "https://www.instagram.com › explore › tags › 新宿イタリ...",
"description": "13.5k Posts - See Instagram photos and videos from '新宿イタリアン' hashtag.",
"extra_info": "",
"position": 11,
"title": "#新宿イタリアン hashtag on Instagram • Photos and Videos"
},
{
"url": "https://tokyo-calendar.jp/restaurants_list?q%5Barea_station_landmark_id%5D=1622&q%5Barea_station_landmark_id_name%5D=%E6%96%B0%E5%AE%BF%E3%83%BB%E4%BB%A3%E3%80%85%E6%9C%A8%E3%82%A8%E3%83%AA%E3%82%A2&q%5Bparent_genre_id%5D=16&q%5Bparent_genre_id_name%5D=%E3%82%A4%E3%82%BF%E3%83%AA%E3%82%A2%E3%83%B3",
"displayed_url": "https://tokyo-calendar.jp › restaurants_list › q[parent_g...",
"description": "新宿・代々木, イタリアンに関する東京カレンダー厳選おすすめレストランを掲載。レストランへのオンライン予約も簡単に。旬のレストランや大人の恋愛事情、最新の ...",
"extra_info": "",
"position": 12,
"title": "新宿・代々木でおすすめのイタリアン[東京カレンダー"
},
{
"url": "https://www.oreno.co.jp/restaurant/italian_kabukicho",
"displayed_url": "https://www.oreno.co.jp › ... › 俺のイタリアンバル 新宿",
"description": "俺のイタリアンバル 新宿の店舗情報です。予約・メニュー等。住所「東京都新宿区歌舞伎町1-17-5 1階」電話番号「03-3208-6530」アクセス「JR新宿東口から徒歩約4 ...",
"extra_info": "",
"position": 13,
"title": "俺のイタリアンバル 新宿 店舗情報 - 俺の株式会社"
},
{
"url": "https://cheese-square.com/shinjuku/",
"displayed_url": "https://cheese-square.com › shinjuku",
"description": "【公式】イタリアンとチーズ CHEESE SQUARE AVANTI 新宿店 のトップページです。肉&チーズのイタリアンバル!土日ランチ営業開始!ランチセット1280円~!",
"extra_info": "",
"position": 14,
"title": "【公式】イタリアンとチーズ CHEESE SQUARE AVANTI 新宿 ..."
},
{
"url": "https://carbonado.jp/",
"displayed_url": "https://carbonado.jp",
"description": "新宿イタリアン カルボナードのオフィシャルサイトです。",
"extra_info": "",
"position": 15,
"title": "新宿イタリアン カルボナード"
},
{
"url": "https://deli-holic.com/store/oreno_italian_kabukicho",
"displayed_url": "https://deli-holic.com › store › oreno_italian_kabukicho",
"description": "東京都 新宿区の俺のイタリアンバル新宿のテイクアウト・デリバリー・出前・配達の注文が出来ます。ネットで簡単に注文、決済が行えます。 高級イタリアンの味を圧倒的 ...",
"extra_info": "",
"position": 16,
"title": "俺のイタリアンバル新宿 | テイクアウトの注文 | DELI-HOLIC"
},
{
"url": "https://www.baitoru.com/kanto/jlist/2172shinjukueki/italianfood/",
"displayed_url": "https://www.baitoru.com › ... › 新宿駅 › フード・飲食",
"description": "新宿駅のイタリアンのバイト・アルバイト・パートの求人・募集情報一覧です。和食や中華、ラーメン屋、カレー、カフェ・コーヒー(珈琲)・喫茶店など、たくさんの ...",
"extra_info": "",
"position": 17,
"title": "新宿駅のイタリアンのバイト・アルバイト・パートの求人 ..."
},
{
"url": "https://job.inshokuten.com/kanto/work/railwayLineId-42/stationId-1294/condition-j/",
"displayed_url": "https://job.inshokuten.com › stationId-1294 › condition-j",
"description": "イタリアン 新宿駅の求人情報を20件掲載中。飲食専門の求人サイト「求人@飲食店ドットコム」では新着求人を毎日更新!お店のジャンル・職種・身に付くスキルなど ...",
"extra_info": "",
"position": 18,
"title": "イタリアン・新宿駅の求人一覧"
},
{
"url": "https://townwork.net/tokyo/ct_sa52101/kwd_0000000176/",
"displayed_url": "https://townwork.net › ct_sa52101 › kwd_0000000176",
"description": "新宿区・イタリアンのアルバイト・バイト・パートを探すなら【タウンワーク】。ご希望のエリア・職種・給与で探せるから、あなたにピッタリのアルバイト・バイトが ...",
"extra_info": "",
"position": 19,
"title": "新宿区・イタリアンのアルバイト・バイト求人情報 - 東京"
},
{
"url": "https://www.travelbook.co.jp/topic/1854",
"displayed_url": "https://www.travelbook.co.jp › ... › 東京 イタリアン",
"description": "WINEHALL GLAMOUR 新宿は、生地から手作りの本格ピッツァやモチモチの生パスタをはじめとする本格イタリアンを、リーズナブルに楽しむことができるダイニングバルです。",
"extra_info": "",
"position": 20,
"title": "【新宿】美味しいイタリアン厳選20選+編集部おすすめ"
},
{
"url": "https://paypaygourmet.yahoo.co.jp/place/g-Gph_xEKvnWo/",
"displayed_url": "https://paypaygourmet.yahoo.co.jp › g-Gph_xEKvnWo",
"description": "俺のイタリアンバル 新宿(東京都新宿区歌舞伎町/イタリア料理(イタリアン))の店舗詳細情報です。ネット予約OK。施設情報、人気メニュー、クチコミ、写真、地図など、 ...",
"extra_info": "",
"position": 21,
"title": "俺のイタリアンバル 新宿 - PayPayグルメ"
},
{
"url": "https://www.restaurants-park.jp/restaurant/?id=495",
"displayed_url": "https://www.restaurants-park.jp › restaurant",
"description": "美味しさと感動を与えてくれる北海道の食材をメインとしたイタリア料理を楽しんでいただきたい。 そんな想いから誕生した北海道イタリアン「ミアボッカ」。",
"extra_info": "",
"position": 22,
"title": "北海道イタリアン ミアボッカ - 新宿高島屋タイムズスクエア ..."
},
{
"url": "http://www.towafood-net.co.jp/dona/kinokuniya/tabid/159/Default.aspx",
"displayed_url": "http://www.towafood-net.co.jp › ... › 店舗案内",
"description": "イタリアンダイニング DoNA 新宿東口店. 自社工場直送の生パスタを自家製ソースで楽しめる気軽なイタリアン ...",
"extra_info": "",
"position": 23,
"title": "イタリアンダイニングDoNA 新宿東口店| パスタ&ピッツァ"
},
{
"url": "https://www.tanto-domani.com/",
"displayed_url": "https://www.tanto-domani.com",
"description": "西新宿のイタリアン「イタリア料理屋 Tanto Domani(タント ドマーニ)」。ランチやディナーは、プリフィックススタイルでご提供。",
"extra_info": "",
"position": 24,
"title": "西新宿で人気のイタリアン「タント ドマーニ」"
},
{
"url": "https://carrozza-hp.com/",
"displayed_url": "https://carrozza-hp.com",
"description": "カロッツァは新宿御苑前の裏道にひっそりと佇む一軒家のような落ち着いた空間のイタリアンです。季節ごとの旬の食材を丁寧に調理し、ディープな地方料理やそれぞれの ...",
"extra_info": "",
"position": 25,
"title": "東京新宿の炭火×イタリアンのお店カロッツァ CARROZZA"
},
{
"url": "https://anniversarys-mag.jp/40071",
"displayed_url": "https://anniversarys-mag.jp › 関東 › 東京都 › 新宿",
"description": "新宿の個室があるおすすめのイタリアンレストランをGoogleマップで一覧にしました。 ... 新宿はイタリア料理店も多く集まるイタリアン激戦区ですから、その中でデート ...",
"extra_info": "",
"position": 26,
"title": "【2022年版】新宿の個室があるイタリアン14選!カップルの ..."
},
{
"url": "http://casadelmare.stargateholdings.jp/shinjuku/",
"displayed_url": "http://casadelmare.stargateholdings.jp › shinjuku",
"description": "新宿歌舞伎町にあるカーサデルマーレ【Casa DELMARE】はシチリアの海を再現した雰囲気漂うイタリアンバルです。ご予約は03-6278-9637までお電話ください。",
"extra_info": "",
"position": 27,
"title": "カーサデルマーレ【Casa DELMARE】"
},
{
"url": "https://www.ginza-cruise.co.jp/venire/",
"displayed_url": "https://www.ginza-cruise.co.jp › venire",
"description": "新宿三丁目駅E4出口直結。都会の喧騒から離れて愉しむ至福のイタリアン.",
"extra_info": "",
"position": 28,
"title": "リストランテ ベニーレベニーレ - 新宿のイタリアンレストラン"
},
{
"url": "https://www.yuka-i.jp/",
"displayed_url": "https://www.yuka-i.jp",
"description": "カジュアルなのに本格的。グループやファミリーでも楽しめる愉快なイタリアンレストラン. ... YUKA伊 (ユカイ)(新宿タカシマヤ14階).",
"extra_info": "",
"position": 29,
"title": "YUKA伊 | カジュアルなのに本格的。グループやファミリー ..."
},
{
"url": "https://www.youtube.com/watch?v=de3hIcNWxGA",
"displayed_url": "https://www.youtube.com › watch",
"description": "",
"extra_info": "",
"position": 30,
"title": "【ピザ全て550円】おすすめの絶品イタリアン【新宿】"
},
{
"url": "https://www.ekiten.jp/st_higashishinjuku/italian_restaurant/",
"displayed_url": "https://www.ekiten.jp › italian_restaurant",
"description": "2022/12/15 — 東新宿駅周辺のおすすめイタリアン・イタリア料理店を445件掲載中。国内最大級の店舗の情報サイト「エキテン」では、店舗の口コミなどからあなたの ...",
"extra_info": "2022/12/15 — ",
"position": 31,
"title": "東新宿駅周辺のおすすめイタリアン・イタリア料理店 - エキテン"
},
{
"url": "https://boheme.jp/shinjuku-gyoen/",
"displayed_url": "https://boheme.jp › shinjuku-gyoen",
"description": "【新宿御苑駅徒歩5分】カフェ ラ・ボエム新宿御苑(Cafe La Boheme Shinjuku-Gyoen)の公式ページ。メニューや営業時間、貸切情報など、新宿御苑店の情報はこちらから。",
"extra_info": "",
"position": 32,
"title": "新宿御苑 Shinjuku-Gyoen | Cafe La Boheme - カフェ ラ・ボエム"
},
{
"url": "http://www.salvatore.jp/restaurant/shinjuku/",
"displayed_url": "http://www.salvatore.jp › restaurant › shinjuku",
"description": "2022/12/15 — 西新宿のオフィスビルに位置する、本格ピザ・イタリアンをカジュアルに楽しめるお店。イタリアでも数少ない窯職人を呼び寄せ、基礎から作り上げた ...",
"extra_info": "2022/12/15 — ",
"position": 33,
"title": "西新宿のピザ・イタリアン ピッツァ サルヴァトーレ クオモ ..."
},
{
"url": "https://vansan-ltd.jp/5%E6%9C%8822%E6%97%A5openitalian-kitchen-vansan%E6%96%B0%E5%AE%BF%E5%BA%97%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3/",
"displayed_url": "https://vansan-ltd.jp › 5月22日openitalian-kitchen-vans...",
"description": "本格イタリアンが気軽に楽しめるItalian Kitchen VANSAN(バンサン)は、 小皿料理のタパスを豊富にご用意。 少しずつたくさんのお料理を楽しめるイタリアンです。 テラス ...",
"extra_info": "",
"position": 34,
"title": "【5月22日OPEN!】Italian Kitchen VANSAN新宿店オープン"
},
{
"url": "https://precious.jp/articles/-/6870",
"displayed_url": "https://precious.jp › ... › 日本のプレステージ・レストラン",
"description": "2018/08/15 — 東京・新宿にあるおすすめイタリアンレストランまとめです。ランチやディナーが好評、個室が充実していて誕生日や記念日にもぴったりといった新宿の ...",
"extra_info": "2018/08/15 — ",
"position": 35,
"title": "新宿のイタリアンおすすめ厳選20選|ランチ・ディナーが好評"
},
{
"url": "https://www.vivo-jp.com/",
"displayed_url": "https://www.vivo-jp.com",
"description": "西新宿のイタリアンレストラン「ワイン食堂 Vivo-ヴィーボ-」のホームページです。",
"extra_info": "",
"position": 36,
"title": "西新宿イタリアン ワイン食堂Vivo-ヴィーボ-"
},
{
"url": "https://ottimo-seafoodgarden-shinjuku.com/",
"displayed_url": "https://ottimo-seafoodgarden-shinjuku.com",
"description": "最上級のシーフード素材を贅沢に使ったメニューが自慢のイタリアレストランです。芝生のルーフバルコニーは、昼間には緑と風が心地よく、夜には高層ビルの夜景が美しい ...",
"extra_info": "",
"position": 37,
"title": "【公式】オッティモ・シーフード・ガーデン 新宿店"
},
{
"url": "https://icotto.jp/presses/2925",
"displayed_url": "https://icotto.jp › 東京都 › 新宿三丁目",
"description": "2016/07/22 — 美味しいイタリアンとワインをカジュアルな雰囲気でいただけるお店です。チーズを使ったお料理に定評があり、女性のお客さんに特に人気があります!新宿三 ...",
"extra_info": "2016/07/22 — ",
"position": 38,
"title": "新宿三丁目でイタリアン 駅からすぐに行ける人気店10選"
},
{
"url": "https://www.clubjt.jp/map/spot/31451",
"displayed_url": "https://www.clubjt.jp › ... › 思い出横丁(新宿西口)",
"description": "イタリアンバル COCONEEL 新宿(レストラン/席で吸える/紙巻たばこ/加熱式たばこ)の喫煙所(たばこスポット)情報を掲載しています。指定したエリアだけでなく、 ...",
"extra_info": "",
"position": 39,
"title": "イタリアンバル COCONEEL 新宿|CLUB JT 喫煙所マップ"
},
{
"url": "https://villazza.jp/shinjuku/",
"displayed_url": "https://villazza.jp › shinjuku",
"description": "新宿駅南口から徒歩3分、ホテルサンルートプラザ新宿にあるイタリアンレストラン「VILLAZZA(ヴィラッツァ)」。レストランとカフェ&バールの2つのエリアで、シーンに ...",
"extra_info": "",
"position": 40,
"title": "新宿駅から徒歩3分|ステーキ&イタリアン“VILLAZZA ..."
},
{
"url": "https://z-no1.jp/business/",
"displayed_url": "https://z-no1.jp › business",
"description": "キャッスルマンション西新宿101 □電話番号 ... 住所東京都新宿区西新宿1-14-5 浅田ビル 3F □電話番号 ... 隠れ家のような店内で楽しむお箸で食べるイタリアン.",
"extra_info": "",
"position": 41,
"title": "店舗紹介 - 株式会社絶好調"
},
{
"url": "https://sunrouteplazashinjuku.jp/shinjuku-dining/villazza.html",
"displayed_url": "https://sunrouteplazashinjuku.jp › shinjuku-dining › vill...",
"description": "レストランエリアでは、白を基調としたスタイリッシュな空間で、自慢の石窯で焼き上げた特製グリル料理や本格イタリアン、ソムリエ厳選のイタリアワインをお楽しみ ...",
"extra_info": "",
"position": 42,
"title": "VILLAZZA|レストラン・バー - ホテルサンルートプラザ新宿"
},
{
"url": "https://www.favy.jp/topics/25621",
"displayed_url": "https://www.favy.jp › 東京都",
"description": "2020/02/07 — 【新宿】気軽に行きたいイタリアン13選!老舗の本格カルボナーラなど · プレゴ・プレゴ · 新宿イタリアンカルボナード · イタリアンバル CHEESE SQUARE ...",
"extra_info": "2020/02/07 — ",
"position": 43,
"title": "【新宿】気軽に行きたいイタリアン13選!老舗の本格 ... - favy"
},
{
"url": "https://minnanoshare.net/theme/200017791/",
"displayed_url": "https://minnanoshare.net › theme",
"description": "2022/12/05 — みんなのシェア〜グルメ編〜で「新宿 イタリアン」の美味しいお店を探しましょう。みんなのシェア〜グルメ編〜は、ネット上のみんなの口コミを徹底 ...",
"extra_info": "2022/12/05 — ",
"position": 44,
"title": "【2022年最新!】新宿のイタリアンで今年人気のおすすめ30店"
},
{
"url": "http://cosmologia.jp/",
"displayed_url": "http://cosmologia.jp",
"description": "2017年8月、東京都新宿区荒木町にオープン。オーナーシェフ曽布川晶裕の故郷・静岡県とイタリア産を中心とした、くずしイタリアンレストラン Cosmologia ...",
"extra_info": "",
"position": 45,
"title": "Cosmologia -コスモロジア- 公式サイト : 東京都新宿区 ..."
},
{
"url": "https://www.saizeriya.co.jp/",
"displayed_url": "https://www.saizeriya.co.jp",
"description": "イタリアンワイン&カフェレストラン サイゼリヤは、毎日の暮らしの豊かさを食を通して提案していきます。",
"extra_info": "",
"position": 46,
"title": "サイゼリヤトップページ|サイゼリヤ"
},
{
"url": "https://daily-shinjuku.tokyo/2021/10/26/da-luiji/",
"displayed_url": "https://daily-shinjuku.tokyo › ... › SHINJUKU EAST",
"description": "2021/10/26 — 『トラットリア ダ ルイジ 東新宿店』は、東新宿駅とほ1分の本格スパニッシュイタリアンのお店。店内の様子や感染対策、ランチメニューなどをご紹介し ...",
"extra_info": "2021/10/26 — ",
"position": 47,
"title": "【東新宿駅直結のイタリアン1,000円ランチ】『トラットリア ..."
},
{
"url": "https://www.mistore.jp/shopping/event/shinjuku_e/italia_10",
"displayed_url": "https://www.mistore.jp › event › shinjuku_e › italia_10",
"description": "2022年9月8日(木)から伊勢丹新宿店本館6階催物場では、年に一度の「イタリア展」がはじまります!旅気分でイタリアの1日を味わうをテーマに様々なイタリアの食を ...",
"extra_info": "",
"position": 48,
"title": "イタリア展 2022 | 三越伊勢丹オンラインストア【公式】"
},
{
"url": "https://okaimono.another-trip.com/restaurant/res1438/tag119/",
"displayed_url": "https://okaimono.another-trip.com › res1438 › tag119",
"description": "[新宿駅スグ]漁港直送素材を使った魚介イタリアンが大人気! 落ち着いた空間の中に圧巻の約1万匹の熱帯魚アクアリウムが自慢♪ 個室あり☆今だけの期間限定コースあり!",
"extra_info": "",
"position": 49,
"title": "アクアリウム&魚介レストラン ライムイタリアン 新宿三丁目 ..."
},
{
"url": "https://www.rosso-g.jp/%E6%96%BD%E5%B7%A5%E4%BA%8B%E4%BE%8B/%E6%96%B0%E5%AE%BF%EF%BD%B2%EF%BE%80%EF%BE%98%EF%BD%B1%EF%BE%9D%EF%BE%8A%EF%BE%9E%EF%BD%B0%EF%BE%99/",
"displayed_url": "https://www.rosso-g.jp › 施工事例 › 新宿イタリアンバール",
"description": "新宿イタリアンバール 店舗改装工事. トップに戻る パソコン版で表示 · 概要 | プライバシーポリシー | Cookie ポリシー | サイトマップ · ログアウト | 編集.",
"extra_info": "",
"position": 50,
"title": "新宿イタリアンバール 店舗改装工事 - 株式会社 ロッソ"
},
{
"url": "https://www.italiantomato.co.jp/store/it003/",
"displayed_url": "https://www.italiantomato.co.jp › store",
"description": "イタリアン・トマト CafeJr. 新宿靖国通り店 ; 東京都新宿区新宿3-15-12 · 03-5269-0336 · Docomo · あり · 全席禁煙 ※紙巻きたばこ、加熱式たばこ専用喫煙室あり.",
"extra_info": "",
"position": 51,
"title": "イタリアン・トマト CafeJr. 新宿靖国通り店"
},
{
"url": "https://letronc-m.com/4751",
"displayed_url": "https://letronc-m.com › 東京都 › 新宿 › グルメ",
"description": "2017/11/21 — 東京・新宿御苑前にある「ピッツェリア・バール・ロマーナ」は、おいしいイタリア料理が食べられるお店です。ピザやお肉のローストなど、魅力的な ...",
"extra_info": "2017/11/21 — ",
"position": 52,
"title": "オーガニック食材おいしさ満点イタリアン。新宿御苑 ..."
},
{
"url": "https://ouchigourmet.net/scat020/pref13/stat1130208/",
"displayed_url": "https://ouchigourmet.net › pref13 › stat1130208",
"description": "新宿駅にある人気店のイタリアンテイクアウト・お持ち帰り情報ならグルメサイト「テイクアウトサーチ」。独自のランキングや詳細情報をもとに、様々なジャンルの人気 ...",
"extra_info": "",
"position": 53,
"title": "新宿駅でおすすめのイタリアンテイクアウト・お持ち帰り情報"
},
{
"url": "https://www.tripadvisor.jp/Restaurant_Review-g14133667-d6049225-Reviews-Shinjuku_Italian_Carbonado-Kabukicho_Shinjuku_Tokyo_Tokyo_Prefecture_Kanto.html",
"displayed_url": "https://www.tripadvisor.jp › ... › 歌舞伎町 レストラン",
"description": "新宿イタリアン カルボナード(歌舞伎町)に行くならトリップアドバイザーで口コミ、地図や写真を事前にチェック!新宿イタリアン カルボナードは歌舞伎町で166位(1736件 ...",
"extra_info": "",
"position": 54,
"title": "新宿イタリアン カルボナード - 歌舞伎町 レストラン"
},
{
"url": "https://www.jalan.net/gourmet/cit_131040000/g2_3g060/",
"displayed_url": "https://www.jalan.net › ... › 新宿区",
"description": "新宿区のおすすめイタリアン・イタリア料理259ヶ所をセレクト!おすすめのカフェシェーキーズ Cafe Shakey's 外苑信濃町店やイタメシヤ La Pausa 新宿NSビル店などを ...",
"extra_info": "",
"position": 55,
"title": "新宿区のイタリアン・イタリア料理ランキング - じゃらんnet"
},
{
"url": "https://haraheri.net/article/487/shinjuku_italian_restaurant",
"displayed_url": "https://haraheri.net › ... › 日本 › 東京 › 新宿/代々木",
"description": "【目次】新宿のおすすめイタリアンレストラン10選!歌舞伎町から新宿三丁目、西新宿、南新宿までエリア別の人気店を厳選 · 1. 太陽の娘 FAVETTA(ファヴェッタ) · 2.",
"extra_info": "",
"position": 56,
"title": "新宿のおすすめイタリアンレストラン10選!歌舞伎町から新宿 ..."
},
{
"url": "https://nkg-foods.co.jp/ark-lounge/?p=14436",
"displayed_url": "https://nkg-foods.co.jp › HOME › Blog › お客様の声",
"description": "2022/11/19 — my_751様 新宿完全個室イタリアンarkloungeにご来店頂き誠にありがとうございます・・・ ちーずとろっとろ(@ ̄ρ ̄@) 【Ark Lounge 】新宿グルメ",
"extra_info": "2022/11/19 — ",
"position": 57,
"title": "my_751様 新宿完全個室イタリアンarkloungeにご来店頂き ..."
},
{
"url": "https://www.navitime.co.jp/poi?spot=01125-J001098806&from=view.around.name",
"displayed_url": "https://www.navitime.co.jp › poi",
"description": "神楽坂イタリアンのスポット情報です。神楽坂イタリアンの住所、電話番号、営業時間、地図などの情報を見ることができます。神楽坂イタリアンへの行き方・アクセス・ ...",
"extra_info": "",
"position": 58,
"title": "「神楽坂イタリアン」(新宿区-ランチ - NAVITIME"
},
{
"url": "https://www.kihachi.jp/",
"displayed_url": "https://www.kihachi.jp",
"description": "キハチ イタリアン 伊勢丹立川店. キハチ カフェ 日比谷シャンテ. キハチ カフェ アトレ浦和. キハチ カフェ 東急百貨店たまプラーザ店. キハチ カフェ 福岡三越.",
"extra_info": "",
"position": 59,
"title": "KIHACHI: キハチ"
},
{
"url": "https://tokyo-shokusai.co.jp/tag/%EF%BC%83%E3%82%A4%E3%82%BF%E3%83%AA%E3%82%A2%E3%83%B3%EF%BC%83%E6%96%B0%E5%AE%BF%EF%BC%83%E6%AD%8C%E8%88%9E%E4%BC%8E%E7%94%BA%EF%BC%83%E3%83%86%E3%82%A4%E3%82%AF%E3%82%A2%E3%82%A6%E3%83%88%EF%BC%83/",
"displayed_url": "https://tokyo-shokusai.co.jp › tag › #イタリアン#新宿...",
"description": "QUARTOクアルト 池袋 COLOSSEOコロッセオ 中目黒 AZZURRIアズーリ 神楽坂 ROMANOロマーノ 五反田 QUARTOクアルト 西新宿 QUINTOクイント 新宿 VIVACEヴィヴァーチェ ...",
"extra_info": "",
"position": 60,
"title": "メルカート強化中! - 東京食彩株式会社"
},
{
"url": "https://ameblo.jp/happily-ever-after444/entry-12722869694.html",
"displayed_url": "https://ameblo.jp › entry-12722869694",
"description": "2022/01/23 — 新宿歌舞伎町辺りで一度は行ってみて欲しいお店です。 オシャレで、落ち着いてて、本当に隠れ家的知る人ぞ知る感じのお店ですが ...",
"extra_info": "2022/01/23 — ",
"position": 61,
"title": "新宿歌舞伎町一丁目 イタリアン davinci(ダヴィンチ)"
},
{
"url": "https://books.google.co.jp/books?id=xzqVWPRMnwUC&pg=PA172&lpg=PA172&dq=%E3%82%A4%E3%82%BF%E3%83%AA%E3%82%A2%E3%83%B3%E3%80%80%E6%96%B0%E5%AE%BF&source=bl&ots=tsQ_l927_d&sig=ACfU3U24HdMo-gzu-81Ybln8Y9vAJOzefg&hl=ja&sa=X&ved=2ahUKEwjanajAvK_8AhVCz2EKHd5mB9MQ6AF6BQjlAhAD",
"displayed_url": "https://books.google.co.jp › books",
"description": "",
"extra_info": "",
"position": 62,
"title": "Yahoo!JAPAN絶妙な検索の秘伝書: とっておきの秘技"
},
{
"url": "https://place.line.me/businesses/57756163",
"displayed_url": "https://place.line.me › ... › nico chica",
"description": "2022/10/06 — nico chica/ニコチカ(新宿/新宿三丁目駅/イタリアン)のグルメ情報はLINE PLACEでチェック!実際食べた人のレシートデータで人気メニュー、口コミ、 ...",
"extra_info": "2022/10/06 — ",
"position": 63,
"title": "nico chica/ニコチカ(新宿/新宿三丁目駅 ... - LINE PLACE"
},
{
"url": "https://www.ubereats.com/jp/store/%E8%82%89%E3%81%A8%E9%87%8E%E8%8F%9C%26%E3%83%8F%E3%82%B9%E3%82%BF-%E3%82%A4%E3%82%BF%E3%83%AA%E3%82%A2%E3%83%B3-%E3%82%AF%E3%82%A2%E3%83%AB%E3%83%88%E8%A5%BF%E6%96%B0%E5%AE%BF-quarto-nishi-shinjyuku/tqjfcKq8TjGygdg922U-sw",
"displayed_url": "https://www.ubereats.com › ... › 新宿区 › 新宿西口",
"description": "Uber アカウントで、新宿区の肉と野菜&パスタ イタリアン クアルト西新宿 QUARTO NISHI-SHINJYUKUに料理の配達を注文できます。メニューや人気商品の閲覧、注文状況の ...",
"extra_info": "",
"position": 64,
"title": "肉と野菜&パスタ イタリアン クアルト西新宿 QUARTO NISHI ..."
},
{
"url": "https://www.newoman.jp/shinjuku/",
"displayed_url": "https://www.newoman.jp › shinjuku",
"description": "新宿駅直結の複合施設、ニュウマン公式ウェブサイト。ファッション、エキナカ、レストラン、カフェ、ビューティにくわえて、クリニック、保育園、イベントホールなど ...",
"extra_info": "",
"position": 65,
"title": "NEWoMan新宿"
},
{
"url": "https://www.kura-jp.com/",
"displayed_url": "https://www.kura-jp.com",
"description": "KURAは、生パスタ、こだわりアラカルト、お酒をリーズナブルに提供するイタリアンレストランです。オンラインショップも開設しました。2017年12月にリニューアルし、 ...",
"extra_info": "",
"position": 66,
"title": "KURA|みんなでワイワイ、イタリアン"
},
{
"url": "https://www.keionet.com/info/shinjuku/",
"displayed_url": "https://www.keionet.com › info › shinjuku",
"description": "京王百貨店新宿店の店舗情報、イベント・催事情報、食品・ファッション・コスメ・グルメ情報や、お得なセール情報等をお届けします。",
"extra_info": "",
"position": 67,
"title": "京王百貨店 新宿店"
},
{
"url": "https://www.yomenya-goemon.com/",
"displayed_url": "https://www.yomenya-goemon.com",
"description": "本場イタリアの食材を使用したイタリア料理ではない日本生まれの日本のスパゲッティーをお召し上がりいただけます。 ... 洋麺屋五右衛門 西新宿店が2月26日オープン.",
"extra_info": "",
"position": 68,
"title": "洋麺屋五右衛門"
},
{
"url": "https://maps.olivenooka.jp/",
"displayed_url": "https://maps.olivenooka.jp",
"description": "オリーブの丘ではテイクアウトメニューを販売しています。 お電話で事前予約をしていただくと、店頭でのお受け取りがスムーズになります。 WEB予約サイトはこちら.",
"extra_info": "",
"position": 69,
"title": "店舗情報 | イタリア食堂 オリーブの丘"
},
{
"url": "https://twitter.com/and_italiano",
"displayed_url": "https://twitter.com › and_italiano",
"description": "新宿駅徒歩5分/歌舞伎町にある牡蠣/炭火焼/イタリアンが自慢のお店 【営業時間】火-土17:00~翌朝4:00日曜日~22:00※月曜定休. 新宿区歌舞伎町1-12-2 ...",
"extra_info": "",
"position": 70,
"title": "牡蠣と炭火焼&イタリアーノ (@and_italiano) / Twitter"
},
{
"url": "https://venchi.co.jp/",
"displayed_url": "https://venchi.co.jp",
"description": "イタリア・トリノ発。140年以上愛される老舗チョコレート・ジェラート専門店Venchi(ヴェンキ)の日本公式サイト。オンラインストアではイタリア伝統のレシピから新 ...",
"extra_info": "",
"position": 71,
"title": "ヴェンキ|Venchi【公式】イタリア発のチョコジェラテリア"
},
{
"url": "https://www.facebook.com/TokyoShokusai/",
"displayed_url": "https://www.facebook.com › TokyoShokusai",
"description": "西新宿イタリアンコスパNO.1/ 皆さんこんにちは! 今回ご紹介する品はスタンダードコース(5500円) のメインに登場する「カルネミスト」です! 内容豚肩肉のグリル ",
"extra_info": "",
"position": 72,
"title": "トラットリア クアルト 西新宿 Trattoria Quarto - Facebook"
},
{
"url": "https://www.timeout.jp/tokyo/ja/restaurant/gantan-restaurant",
"displayed_url": "https://www.timeout.jp › restaurant › gantan-restaurant",
"description": "フードのコンセプトは「スパニッシュイタリアンに、アメリカンダイナーのエッセンスを ... レストラン; 中華料理; 新宿 ... 関連記事『新宿でしかできない101のこと』.",
"extra_info": "",
"position": 73,
"title": "元日から営業しているレストラン - タイムアウト東京"
},
{
"url": "https://www.robuchon.jp/",
"displayed_url": "https://www.robuchon.jp",
"description": "ジョエル・ロブション氏が築き上げたモダンフレンチの集大成シャトーレストラン ジョエル・ロブション.",
"extra_info": "",
"position": 74,
"title": "Joel Robuchon ジョエル・ロブション"
},
{
"url": "https://www.miuken.net/entry/2022/05/12/000401",
"displayed_url": "https://www.miuken.net › ①グルメ",
"description": "2022/05/12 — イタリアンなのに意外!! しかし、このパリパリいぶりがっことモッタリポテトが合うわ!! しっかりとベーコンも入っていて、味わいがしっかりです。",
"extra_info": "2022/05/12 — ",
"position": 75,
"title": "新宿区西新宿の「Italianbar ATTACHMENT」で幸せな ..."
},
{
"url": "https://www.tiktok.com/@yaokiya_78/video/7109390184810155266?lang=ja-JP",
"displayed_url": "https://www.tiktok.com › video",
"description": "いいねの数:3.9Kナナハチグルメ (@yaokiya_78)のTikTok (ティックトック) 動画:「#君の名は#新宿グルメ#新宿ランチ#新宿イタリアン#新宿#東京グルメ#新宿居酒屋」。",
"extra_info": "",
"position": 76,
"title": "君の名は#新宿グルメ#新宿ランチ#新宿イタリアン ... - TikTok"
},
{
"url": "https://www.sizzler.jp/",
"displayed_url": "https://www.sizzler.jp",
"description": "新宿三井ビル店 SHINJUKU MITSUI BUILDING ; 押上店 OSHIAGE ; 東京ドームホテル店 TOKYO DOME ; アクアシティお台場店 AQUA CITY ODAIBA ; 桜新町店 SAKURA SHINMACHI ...",
"extra_info": "",
"position": 77,
"title": "シズラー: sizzler"
},
{
"url": "https://www.jfcard.co.jp/shopinfo/use.php",
"displayed_url": "https://www.jfcard.co.jp › shopinfo › use",
"description": "イタリアン・フレンチ; アジア・エスニック料理・カレー; 中華料理・ラーメン; バイキング(ビュッフェ); 居酒屋・バー; 喫茶・カフェ; 宅配・お弁当; 百貨店・商業施設",
"extra_info": "",
"position": 78,
"title": "使えるお店 - 全国共通お食事券ジェフグルメカード"
},
{
"url": "https://www.conranshop.jp/",
"displayed_url": "https://www.conranshop.jp",
"description": "テレンス・コンランが世界中から厳選した家具やインテリアアイテムを扱うホームファニシングショップです。",
"extra_info": "",
"position": 79,
"title": "THE CONRAN SHOP (ザ・コンランショップ)"
},
{
"url": "https://claire-tokyo.co.jp/",
"displayed_url": "https://claire-tokyo.co.jp",
"description": "新宿・歌舞伎町に位置するレストランクレアの公式HPです。雑踏の中のオアシスで、旬の素材を生かした絶品イタリアンと厳選ワインをご堪能ください。",
"extra_info": "",
"position": 80,
"title": "レストランクレア|新宿・歌舞伎町のイタリアンレストラン"
},
{
"url": "https://www.skylark.co.jp/jonathan/menu/",
"displayed_url": "https://www.skylark.co.jp › ジョナサンTOP › メニュー",
"description": "イタリアンバイキング · くし葉. 串揚げ・串天 ブッフェ. 株式会社トマトアンドアソシエイツ. トマト&オニオン. ハンバーグレストラン · じゅうじゅうカルビ.",
"extra_info": "",
"position": 81,
"title": "メニュー | ジョナサン - すかいらーくグループ"
},
{
"url": "https://plus.pokepara.jp/kanto/shop16897/",
"displayed_url": "https://plus.pokepara.jp › kanto › shop16897",
"description": "【東京都】新宿|イタリアン ビタースイーツ・ビュッフェ ルミネエスト新宿店 BITTERSWEETS BUFFET 今口コミを書けば10ポイントボーナス! · 近くの人気店.",
"extra_info": "",
"position": 82,
"title": "ビタースイーツ・ビュッフェ ルミネエスト新宿店 ..."
},
{
"url": "https://il-vischio.com/",
"displayed_url": "https://il-vischio.com",
"description": "参宮橋駅のすぐとなりにある本場イタリアン料理。 心に届くイタリアンをワインとともに憩う時間に。Il Vischio (イル ヴィスキオ)",
"extra_info": "",
"position": 83,
"title": "Il vischio イル ヴィスキオ: イタリアン料理 参宮橋・代々木"
},
{
"url": "https://play.wowma.jp/menugroup/detail/401?spe_id=pXcftXbnadXalli02",
"displayed_url": "https://play.wowma.jp › menugroup › detail",
"description": "イタリアン スペイン料理 西洋料理 洋食 ... 東京駅八重洲南口イタリアン&スペイン 京橋ZION ... ミゲルフアニ 新宿タカシマヤ タイムズスクエア店.",
"extra_info": "",
"position": 84,
"title": "レストラン半額「新春セール」今ならさらに600円OFF!"
},
{
"url": "https://prtimes.jp/main/html/rd/p/000002527.000011710.html",
"displayed_url": "https://prtimes.jp › ぴあ株式会社のプレスリリース",
"description": "6 日前 — [KANPAI TO MEET]入場無料 2023年1月13日(金)~15日(日) @新宿. ... のみ)の名物「牛ご飯」、カジュアルイタリアンの名店「リ・カーリカ」の大人気 ...",
"extra_info": "6 日前 — ",
"position": 85,
"title": "“予約2年待ち”“行列の絶えない”人気店のお酒に合う絶品 ..."
},
{
"url": "https://www.activitv.com/entry/gurunai_221229_sinjyo/",
"displayed_url": "https://www.activitv.com › TV › ぐるぐるナインティナイン",
"description": "7 日前 — 設定金額4万円 王道イタリアンゴチ 早稲田駅「イル・テアトロ(IL TEATRO)」 食べログ ... 住所, 新宿区天神町77 都住創ラスティックビル1F地図.",
"extra_info": "7 日前 — ",
"position": 86,
"title": "【ぐるナイ 新庄剛志・村上信五】王道イタリアンゴチ 文京区 ..."
},
{
"url": "https://www.creatta.tokyo/",
"displayed_url": "https://www.creatta.tokyo",
"description": "東京・大手町に佇むカジュアルイタリアン。ひとりでしっとりBar利用、開放感のあるテーブル席、緑と水辺のサマーテラス。フレッシュでレアなお料理やクオリティの高い ...",
"extra_info": "",
"position": 87,
"title": "トラットリア クレアッタ(TRATTORIA CREATTA)【公式 ..."
},
{
"url": "https://www.furla.com/jp/ja/",
"displayed_url": "https://www.furla.com › ...",
"description": "フルラは、1927年にイタリア ボローニャで創設以来、クラフトマンシップの伝統を受け継ぎながら革新的なデザインを提案し続けています。ぜひ、最新のウィメンズ・ ...",
"extra_info": "",
"position": 88,
"title": "FURLA – フルラ公式オンラインストア"
},
{
"url": "https://mi-journey.jp/foodie/20667/",
"displayed_url": "https://mi-journey.jp › foodie",
"description": "2016/03/01 — 小さじ1/2; サフラン…10本; 米…1合(180ml); レモン、イタリアンパセリ… ... 2016年3月2日(水)~7日(月)最終日午後6時終了 伊勢丹新宿店本館6 ...",
"extra_info": "2016/03/01 — ",
"position": 89,
"title": "お家で簡単! フライパンで本格パエリアレシピ ... - FOODIE"
},
{
"url": "https://www.uniqlo.com/jp/ja/contents/collaboration/marni/22fw/",
"displayed_url": "https://www.uniqlo.com › contents › collaboration › ma...",
"description": "MARNIは、1994年にイタリアで誕生したラグジュアリーブランドです。形式に囚われない自由な発想と型破りで巧妙なMARNIのデザインは、研ぎ澄まされたグラフィック、実験 ...",
"extra_info": "",
"position": 90,
"title": "UNIQLO and MARNI 2022年冬コレクション | ユニクロ"
},
{
"url": "https://eiga.com/theater/13/",
"displayed_url": "https://eiga.com › 映画館検索",
"description": "新宿、渋谷、池袋などのエリア別映画館一覧と上映時間を掲載しています。観たい映画、行きたい映画館が ... イタリアンダイニング DONA ドナ 中野坂上店. 飲み放題.",
"extra_info": "",
"position": 91,
"title": "東京都の映画館 - 映画.com"
},
{
"url": "https://ysroad.co.jp/shinjuku-crossbikekan/2023/01/04/102541",
"displayed_url": "https://ysroad.co.jp › 2023/01/04",
"description": "1 日前 — Y's Road 新宿クロスバイク館、日本唯一の「クロスバイク専門店」!!お客様のサイクルスタイル ... イタリアンオリーブです。光沢のミリタリーグリーン ...",
"extra_info": "1 日前 — ",
"position": 92,
"title": "【MASI】クラシックなルックスに太めタイヤな街乗りにお ..."
},
{
"url": "http://release.traicy.com/posts/20230104380202/",
"displayed_url": "http://release.traicy.com › posts",
"description": "1 日前 — 「KANPAI TO MEET」入場無料 2023年1月13日(金)~15日(日) @新宿 ... のみ)の名物「牛ご飯」、カジュアルイタリアンの名店「リ・カーリカ」の大人気 ...",
"extra_info": "1 日前 — ",
"position": 93,
"title": "“予約2年待ち”“行列の絶えない”人気 ... - TRAICY(トライシー) -"
},
{
"url": "https://www.jiji.com/jc/article?k=000002527.000011710&g=prt",
"displayed_url": "https://www.jiji.com › PR TIMES",
"description": "1 日前 — 「KANPAI TO MEET」入場無料 2023年1月13日(金)~15日(日) @新宿 ... のみ)の名物「牛ご飯」、カジュアルイタリアンの名店「リ・カーリカ」の大人気 ...",
"extra_info": "1 日前 — ",
"position": 94,
"title": "“予約2年待ち”“行列の絶えない”人気店のお酒に合う ... - 時事通信"
},
{
"url": "https://angeolinarossi.crn5.org.br/ypom/wcuu-1918.htm",
"displayed_url": "https://angeolinarossi.crn5.org.br › ypom › wcuu-1918",
"description": "新宿オフィスデザインの株式会社アステック. オフィス設計から施工までワンストップ ... [店舗]イタリアンレストラン イルティグリオ. [オフィス]エントランス事例.",
"extra_info": "",
"position": 95,
"title": "セリーヌ トリオンフ ピアス - Angeolina Rossi"
},
{
"url": "https://pets-kojima.com/",
"displayed_url": "https://pets-kojima.com",
"description": "... アイリッシュ・セター, 秋田犬, アメリカン・コッカー・スパニエル, イタリアン・グレーハウンド ... 指定しない, <東京23区>, 六本木店, 西新宿店, GRAND亀戸店 ...",
"extra_info": "",
"position": 96,
"title": "ペットショップのコジマ"
}
],
"local_results": [
{
"title": "カルボナード 新宿店",
"review": null,
"position": 0,
"review_count": 0
},
{
"title": "トラットリア クイント",
"review": null,
"position": 1,
"review_count": 0
},
{
"title": "Italianbar ATTACHMENT〜アタッチメント〜 新宿西口店",
"review": null,
"position": 2,
"review_count": 0
}
],
"top_ads": "More ads are displayed if you are using nb_results=10 in your API call.",
"bottom_ads": "More ads are displayed if you are using nb_results=10 in your API call.",
"related_queries": [
{
"text": "イタリアン 新宿 安い",
"position": 0
},
{
"text": "新宿/イタリアン 隠れ家",
"position": 1
},
{
"text": "イタリアン 新宿 ランチ",
"position": 2
},
{
"text": "新宿 イタリアン おしゃれ",
"position": 3
},
{
"text": "新宿/イタリアンランチ 土日",
"position": 4
},
{
"text": "新宿 イタリアン 高級",
"position": 5
},
{
"text": "新宿イタリアン ディナー 安い",
"position": 6
},
{
"text": "イタリアン 新宿 個室",
"position": 7
}
],
"questions": []
}
これはすごくないですか!?表示結果のタイトルやURL、順位まで欲しい情報が全て入っていますね。
ScrapingBeeのすごいのが自動で大量のプロキシを変更してくれるので、アクセス制限が厳しいサイトでも制限にかなりかかりづらいという点です。Google検索結果も通常何度も繰り返しているとボット扱いされてしまいますが、私は今のところScrapingBeeAPIでひっかかったことはありません。
本格利用しようと思ったら有料サブスクリプションが必要になりますが、そこまで高いものでもないので、かなりおすすめのAPIです。
Google検索結果を取得する以外にもScraipingBeeでしかできない活用方法が多々ありますので、随時紹介していきたいと思います。