質問: Array.new() a.search('.//h2').each do |h2| arr.push(h2.text) end csv << arr.to_csv end File.open('export2.csv', 'w') do |io| io.write csv end ``` プログラムはここまで書いてみたんですが、何かしらのエラーが出てしまい xpathの取得の部分と、csvの部分の書き方があまり分かりません。 また、本カテゴリーの部分のクローリングを実現したいと考えています。 解決策をご教授いただけますと幸いです。 どうぞ宜しくお願いいたします
回答: > > プログラムはここまで書いてみたんですが、何かしらのエラーが出てしまい > > > エラーやバグを解決するまでがプログラミングなので、 まずエラー文をじっくり読んで、内容をしっかり把握しましょう。 とくに、クローラー開発はエラー処理がメインです。ネット越しに相手がいて、 相手がサイトやページをいじると即エラーですから、エラーが多い分野です。 Nokogiriがあるからコードは短いですが、エラー対応が大変なんです。 サイトの数だけエラーがあるし、運用期間中ずっとエラー対応が必要なので、 エラー文を読むのも面倒、といった感じでは長い目で見て続きません。 エラーが100回とか出るたびに質問してるとかえって大変になります。 しかも、サイト側にはクローラーはじつは目障りです。 客でもないのに負荷を増やすから。だから意図的に弾く場合があります。 サイト側の規約(Amazon側はAPIを推奨してるはず)や 図書館事件もあるので、トラブルを避けるためには慎重さが必要です。 なので、自力解決して欲しいのですが、でもまあヒントとしましては、 エラー文をエスパーすると、まずSSLのエラーで突っかかってそうです。 で、何とかそれを解決しても、次はたぶん503エラーになる。 こうしたエラーの原因の推測は難しいですが、クローラー運用に大事な能力です。 Rubyによるクローラー開発技法 学習の入口として、Rubyでクローラー開発するなら定番の良書があります。 Ruby、Nokogiri、Amazon、にも触れていますので、お勧めの本です。