1

うまくいけば、これは十分に簡単です。YQL を使用して、ワード プレス ブログのさまざまな記事から「ヘッダー」画像を取得しようとしています。各記事には、わずかに異なるクラス名 (ID なし) を持つ異なる「ヘッダー」画像があります。必要なすべての画像は、1 つの基本 CSS クラス「alignright」を共有します。以下のようなクエリを実行すると、何も返されません。

select * from html where url="urlofblog.com/" and xpath="//img[@class='alignright']"

ただし、クラスが特定の画像に正確に一致するようにクエリを変更すると、

select * from html where url="urlofblog.com/" and xpath="//img[@class='alignright size-full wp-image-3051']"

問題の画像を取得します。YQL は "img[@class=" を複数の入力ではなく 1 つの大きな文字列として認識しているようです。問題は、1 つの大きな文字列として表示したときに、これらの画像クラスがどれも一致しないことです。状況を修正するために私が試みたのは次のとおりです。

  1. YQL の「like」パラメータを調べました。(うまくいったものを見つけるのは運が悪い)
  2. xpath を使用してより良い方法を見つけようとしました (今日まで使用したことがありません)。その検索が私をここに導きました。これまでのところ、私はまだそれを機能させることができません。
  3. img[matches(@class, '\balignright\b')] を使用してみましたが、YQL がサポートしているとは思いません。

その基本CSSクラスで画像を取得する方法があるかどうかは誰にもわかりませんか? ブログで何かを変更するアクセス権がありません (ID の挿入など)。

4

2 に答える 2

1

次のような XPath 文字列関数を使用できますstarts-with

//img[starts-with(@class, 'alignright')]
于 2012-07-17T23:04:18.467 に答える
1

ここでは、XPath の contains() 文字列関数を使用するとよいでしょう。必要に応じてアイテムにクラスを追加する Wordpress サイトから画像を取得しようとしているようです。img の class 属性に CSS クラスがあるというだけで、CSS クラスで始まるかどうかは気にしないでください。

//img[contains(@class,'alignright')]
于 2012-07-18T18:19:33.700 に答える