同じ情報について〜10のWebサイトを掻き集めており、現在はそれぞれ独自のスクリプトを用意しています。これらのスクリプトはすべて同じベースを持ち(利用可能なページを繰り返し、情報をスクラップして保存します)、属性は異なります。Rubyのスクレイプコードをリファクタリングする(属性が異なる)
例として、これらは、私は2つのページからauthor
要素を抽出しています方法の例です:
page.at('b[itemprop="author"]').children.text.strip
page.at('.author-username').text.strip
私の目標は、メインロジックは、クラスにによって処理されるので、これをリファクタリングすることですが、私ソースに応じて上記抽出器をどのように渡すかを調べるのに問題があります。私はpass CSS selectors as argumentsができることを認識していますが、各抽出のためのいくつかの追加ロジックがあります。
これを処理する別の方法(前のリンクで概説したように)があるかもしれませんが、これは〜10個のソースですぐに手を出せなくなります。
このコードをリファクタリングする最良の方法は何ですか?
回答ありがとうございました。これらの文字列( '['children'、 'text'、 'strip']')を通して提供されるメソッド呼び出しをどうやって行うのか詳しく教えてください。 例として、 'attribute_1.children.text.strip'をどのように実行すればよいですか? – Manonthemoon
ああ、私はそれを理解し、それぞれのメソッドを呼び出すために 'page.send()'を使用しています。 –
Manonthemoon
実際、これらのメソッドのリストは、文字列ではなくシンボルである必要があります。どちらも同じように動作するはずですが、シンボルはよりメモリ効率が良いです。 –