このCSSセレクターを使用したいと思いますが、画像の幅と高さを正確に指定するのではなく、幅、 /または高さ。私はRubyでNokogiriの宝石を使用していますが、これを行う方法はありますか?例えば、幅> 200等...Nokogiri CSSセレクターの画像幅と高さの範囲を指定してください
答えて
私はself.bodyがすべてに約あるかはよく分からないが、あなたがそうのような幅でのimgのを選択することができます。
doc.css('img').select{|img| img[:width].to_i > 200}
または
doc.css('img').select{|img| (200..300).include? img[:width].to_i}
については
img = doc.css("img[@width = '#{width}'][@height = '#{height}']").collect{|e| e.attributes["src"].value}
私はあなたの厳密解を与えるcan't、私はあなたがXPathを使って、鋸山でこれを行うことができるはずだと思います。
function libraryは、最小/最大機能を提供します。
doc.xpath('//img[@width > 200]/@src').map {|a| a.value }
または
doc.xpath('//img[@height >= 50 and @height <= 300 and @width >= 50 and @width <= 300]/@src').map {|a| a.value }
既に提供されているソリューションには、 cssを使用してRubyで結果をフィルタリングするか、xpath関数を使用して関心のあるノードをフィルタリングするxpathを使用します。
Nokogiriには別の手法があります。 custom css pseudo classesを選択して使用することができます。たとえば、height_greater_than
疑似クラスを定義し、img:height_greater_than(200)
のようなセレクタを使用できます。
これは、実装したい擬似(css)クラスのメソッドで(Ruby)クラスを定義することで行います。それぞれのメソッドは、最初の引数としてNodeSet
を受け取り、次にcssから渡す引数を取ります。
class CustomPsuedoSelectors
def height_greater_than(nodes, height)
nodes.find_all {|n| n['height'].to_i > height}
end
end
次はcss
への呼び出しの引数として、このクラスのインスタンスを渡します。これは、単一のクエリのためにこれをやって価値がないかもしれません
nodes = doc.css 'img:height_greater_than(200)', CustomPsuedoSelectors.new
が、あなたのような選択を行っている場合これはたくさんあり、xpathを使用するよりもCSS構文を好む場合は、このようなカスタムクラスを作成する価値があります。
最後に、cssはアンダースコアではなくハイフンを使用する傾向があるため、メソッドのエイリアスを作成することができます。 height_greater_than
の定義の後にalias :"height-greater-than" height_greater_than
を追加します。その後、より自然なimg:height-greater-than(200)
をCSSセレクターとして使用することができます。 (define_method
も使用できます)。
- 1. PHPファイルによって呼び出される画像の幅と高さを指定してください
- 2. パンダDatetimeIndexの時間範囲を指定してください
- 3. 画像を固定の高さと幅で囲みます
- 4. css固定幅の画像と高さの自動調整
- 5. 範囲に基づいてCSSの色を設定してください
- 6. C++でASCIIの小文字の範囲を指定してください
- 7. 画像の高さを固定して入力してください
- 8. エラー:許容範囲内の日付を指定してください
- 9. Androidカメラの画像の高さと幅が正しくない
- 10. CSS(カスケーディングスタイルシート)でASP.NETの画像の高さをpx /%に指定
- 11. 画像のハイパーリンクを指定した幅と高さの新しいウィンドウに開く
- 12. cssを使って同じ高さと幅の画像を設定するには?背景画像なし
- 13. サイドバーコンポーネントの幅(フレックス)を指定してください
- 14. UIImageの高さを幅と同じに設定してください。
- 15. HtmlAgility.HtmlNodeCollectionの画像の高さと幅c#
- 16. GridViewの画像の幅と高さ
- 17. ズーム後の画像の高さと幅
- 18. ペーパークリップgemが画像の幅と高さのレールを設定していない
- 19. Excelチャートを画像としてコピーして他のシートの範囲に貼り付けてください
- 20. アプリエンジンで指定した高さと幅に画像をトリミングする方法 - python?
- 21. Android:ボタンの幅と同じ高さに設定してください(テーブルレイアウト内)
- 22. CSSの画像の高さ
- 23. 高さ/幅が設定されていない画像の高さ/幅を取得する
- 24. CSS:ください画像パディング...
- 25. をクリックしてください<th>をクリックしてください:<th>を100%の幅と高さに設定してください
- 26. 画像のCSS高さプロパティ
- 27. 固定幅とスケーラブルな高さのCSS
- 28. QtとopenCVを使用して画像の色範囲を指定します
- 29. ランダムな高さと幅の間に画像を描く
- 30. 画像の幅と高さがaltと一致しない
画像の幅/高さ属性がない場合はどうなりますか?それでも幅と高さを計算できますか? – Bongs
@Bongsいいえ、その場合は、画像をダウンロードして寸法を決定する必要があります。 – pguardiario