質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

XPath(XML Path)

XML Path Language (XPath; XMLパス言語)は、マークアップ言語 XML に準拠した文書の特定の部分を指定する言語構文の事をいいます。XPathはXMLとは別の構文を使用します。XMLドキュメントの抽象、論理ストラクチャ上で動作します。

Q&A

2回答

18671閲覧

rubyでsyntax error, unexpected end-of-input…というエラーが発生する

shigahi

総合スコア21

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

XPath(XML Path)

XML Path Language (XPath; XMLパス言語)は、マークアップ言語 XML に準拠した文書の特定の部分を指定する言語構文の事をいいます。XPathはXMLとは別の構文を使用します。XMLドキュメントの抽象、論理ストラクチャ上で動作します。

1グッド

1クリップ

投稿2016/11/13 05:38

###前提・実現したいこと
rubyでnokogiriを使ってウェブスクレイピングしようとしています。
一通りプログラムは組めたのですが、以下のようなエラーが発生してしまいます。

###発生している問題・エラーメッセージ

18: syntax error, unexpected end-of-input, expecting keyword_end

###該当のソースコード

ruby

1#!/usr/bin/ruby 2require 'mechanize' 3agent = Mechanize.new 4agent.user_agent_alias = 'Windows Mozilla' 5 6url = 'http://www.watashi-move.jp/pc/login.php' 7page = agent.get(url) 8mypage = page.form_with(id: 'form1') do |form| 9form.loginid = '*' 10form.password = '*' 11end.submit 12 13url = 'https://www.watashi-move.jp/wl/mydata/sphygmomanometer.php?targetDate=2016/07/01' 14page = agent.get(url) 15doc = page.root 16doc.xpath('//tr[@class="day13"]/td[@class="pressureMin"]').text 17puts doc.xpath('//tr[@class="day13"]/td[@class="pressureMin"]').text 18end

###試したこと
ネットなどで調べて-wオプションを実行してみたら
8⚠️assigned but unused variable -mypage
mechanize/cookie will be deprecated. please migrate to the http-cookie APIs.
mechanize/cookie_jar will be deprecated.please migrate to the http-cookie APIs.
と出力されました。
調べてみたのですが、よく理解できませんでしたので、
よろしくお願い致します。
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

すいません。先の質問へのわたしの回答のコピペミスですね。
ただ、

syntax error, unexpected keyword_end, expecting end-of-input

ではないですか?これだとendが余分だと言うことです。最終行のendを削って下さい。

投稿2016/11/13 05:57

otn

総合スコア84487

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shigahi

2016/11/13 23:09

回答ありがとうございます。 最終行のendを削ってみたのですが、 何も出力されませんでした。
otn

2016/11/13 23:27

page = agent.get(url) の後で、 puts page.body するとページのHTMLが出力されますので、期待通りの物かどうか確認してください。
shigahi

2016/11/14 02:16

回答ありがとうございます。 puts page.body を実行したら、ちゃんとログインページの bodyのhtmlが出力されました!
otn

2016/11/14 08:50

ログインページじゃなくて、データ取得ページの方です。
shigahi

2016/11/15 01:51

データ取得ページの方で実行してみたら 同じくログインページの bodyのhtmlが出力されました。
otn

2016/11/16 07:29 編集

ログインできていないと言うことですね。 ログインのsubmitの後で、 puts agent.page.body してみると、そのページにエラーメッセージが出ているかも。 いきなり複数ステップの処理を中間結果も確かめず実行したのが間違いの元です。 一歩ずつ進めてください。
shigahi

2016/11/16 06:07

ご指摘ありがとうございます。 やはりログイン部分のmypage = page.form_with(id: 'form1') do |form| の部分でエラーが出ました。 少し試行錯誤してやってみます。 もし分からなかったらまた質問し直します。 ご丁寧にありがとうございました。
guest

0

最後の行の end が余計なようです。
exit 0 で良さそうです。

投稿2016/11/13 05:55

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shigahi

2016/11/13 23:10

回答ありがとうございます。 endをexit 0にしてみたのですが 何も出力されませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問