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

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

新規登録して質問してみよう
ただいま回答率
85.48%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Ruby

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

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Q&A

1回答

487閲覧

nokogiri スクレイピング  長いURLもしくはカンマのURLから取得したい

laboumhaein

総合スコア16

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Ruby

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

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

0グッド

0クリップ

投稿2020/04/11 12:05

https://batspi.com/index.php?%E3%82%AB%E3%83%BC%E3%83%89%E6%A4%9C%E7%B4%A2&wpara=,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,1,,1,07#FIND

上記のようなURLから取得したい場合、どのように変換したら良いですか?

日本語を変換するとURLが長くなってしまいエラーがでてしまいます。

ruby

1 2require 'bundler/setup' 3require 'nokogiri' 4require 'open-uri' 5 6# Fetch and parse HTML document 7doc = Nokogiri::HTML 8(open('https%3A%2F%2Fbatspi.com%2Findex.php%3F%25E3%2582%25AB%25E3%2583%25BC%25E3%2583%2589%25E6%25A4%259C%25E7%25B4%25A2%26wpara%3DBS22-042%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C1%2C%2C1%2C%2C1%2C%23FIND')) 9doc.css('#body > table > tbody > tr > td:nth-child(2) > table').each do |link| 10 sleep(1) 11 product_name = link.text 12 array = product_name 13 p array 14end

上記のコードはカンマを変換したものなのですが、URLが長すぎてエラーがでてしまうコードになります。

簡単にいうと上のURLからCSSセレクタで要素取得を行いたいです。

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

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

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

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

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

CHERRY

2020/04/11 12:07

エラーメッセージは何が出ているのでしょうか?
laboumhaein

2020/04/11 14:06

File name too long @ rb_sysopen - https%3A%2F%2Fbatspi.com%2Findex.php%3F%25E3%2582%25AB%25E3%2583%25BC%25E3%2583%2589%25E6%25A4%259C%25E7%25B4%25A2%26wpara%3DBS22-042%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C1%2C%2C1%2C%2C1%2C%23FIND (Errno::ENAMETOOLONG) が発生します(URLが長すぎるよってことだと思います)
CHERRY

2020/04/11 22:17

回答がついている通りで、https://ドメイン名/ の部分までエンコードされているので、ローカルのファイルと判断されていますね。
guest

回答1

0

openの引数がURLじゃないので、その名前のファイルをオープンしようとしてファイル名長OSの上限を越えている(?)ので、エラーになっています。

URLをオープンしたいときは、URLを与えましょう。
なんか、URLをURLエンコードしたものになってしまっています。

投稿2020/04/11 17:26

otn

総合スコア84499

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問