2

ユーザーがxpathプロセスを使用して特定のページに含まれるすべての画像をスクレイピングできるようにする画像スクレイピングツールを実行しようとしています。スクレイピングされた画像を見つけて、altタグを持っているものと持っていないものを見つけ、結果を2つの個別のjsonオブジェクトとして返します

つまり{alted:["<img ......>","<img ......>"],nonAlted:["<img ......>","<img .. ....>"]}

ページをスクレイピングしてすべての画像を取得し、それらを代替カテゴリと非代替カテゴリに分けることはできますが、応答オブジェクトに入れることはできません!

私の問題をさらに明確にするために、いくつかのコードを追加する方がよいと思うので、YQL テーブルの実行ブロックで次のコードを使用します。

query = "select * from html where url='http://www.example.com/page-path' and xpath='//li'";
var result = y.query(query);

y.log(result.results..img.(@alt));

var querieselement = <urls/>; 
querieselement.query = result.results..img.(@alt);

response.object = querieselement;

私の質問は、処理された画像のリストを含むように応答オブジェクトを設定する方法です。クエリを実行した後、ログにはリストが表示されていますが、結果にはデータが表示されないことに注意してください。誰かが私に原因を指摘してくれることを願っていますその問題の。


PSタイトルで「リソースの使用」について言及した理由は、画像カテゴリごとに個別の呼び出しを実行できることを認識しているためです。これは、同じページを2回スクレイピングすることを意味しますが、これは非効率的だと思います。


PS私はまた、誰かがこれらの2行の意味を理解するのを手伝ってくれるとうれしいです.

querieselement = <urls/>;
querieselement.query = result.results..img.(@alt);

なぜ「<urls/>」と「queryelement.query」なのか、変更するとコードが壊れるため、重要な仕事をしているように見えますが、何をすべきかわかりません。

ありがとう。

4

1 に答える 1