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セレクタで要素取得を行いたいです。
エラーメッセージは何が出ているのでしょうか?
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が長すぎるよってことだと思います)
回答がついている通りで、https://ドメイン名/ の部分までエンコードされているので、ローカルのファイルと判断されていますね。