|
View:
New views
6 Messages
—
Rating Filter:
Alert me
|
|
|
[ruby-list:46441] Hpricot#search の使い方そえじまです。
Hpricot#search の使い方を教えていただけないでしょうか? doc = Hpricot(open("http://hoge.example.com")) として、ページを取得した後、ページ内に複数の <span> タグがある中で <span id="abc_999">huga</span> のhugaをidで狙い撃ちして取得するにはどのように記述するのがよいのでしょうか? #id ではなく、class だと span.class で取得できるのは分かったのですが・・・ どなたかご教示いただけると幸いです。 よろしくお願い致します。 |
|
|
|
|
|
[ruby-list:46444] Re: Hpricot#search の使い方okkez です。
2009年10月9日6:20 T.Soejima <clev@...>: > るびきちさま、夜中に関わらずありがとうございます。 > > るびきちさまのサンプルは問題なく動作したのですが > 私の目的のサイトからはnilになってしまいます。 > > ********************************* > require 'rubygems' > require 'open-uri' > require 'hpricot' > > doc = Hpricot(open("http://finance.yahoo.com/q?s=EURJPY=X")) > p doc.search("span#yfs_l10_eurjpy=x") #=> #<Hpricot::Elements[]> > ********************************** > > という感じでオブジェクトが空になってしまいます。 > idが間違ってるのかと思い、何回もページのソースを確認したりしたの > ですが、どうも間違いが見当たらなくて困惑しております。 > > この2行のコードの中に何か間違いはあるでしょうか? > 恐縮ですがご教示いただけると幸いです。 > おそらくコードは間違ってませんが、html が間違ってます。 http://www.w3.org/TR/REC-html40/types.html#type-name によると id, name に使用できるのは /\A[a-zA-Z][a-zA-Z0-9\-_:.]*/ です。 "=" や "^" は id には使えません。 nokogiri でも軽く試して見ましたが、search メソッド呼び出し時に id に "=" が 入っていると Nokogiri::CSS::SyntaxError になりました。 id を使わない方法で検索条件を指定すると問題なく動きました。 -- okkez okkez000@... |
|
|
[ruby-list:46445] Re: Hpricot#search の使い方さくです。
= は id には使えない文字(yahooのHTMLの文法違反)なので、解析に失敗しているような。 試しに _ に置換してからHpricotで処理したら、拾えました。 doc / 'span#yfs_l10_eurjpy_x' => #<Hpricot::Elements[{elem <span id="yfs_l10_eurjpy_x"> "131.04" </span>}, {elem <span id="yfs_l10_eurjpy_x"> "131.04" </span>}]> 2009年10月9日6:20 T.Soejima <clev@...>: > doc = Hpricot(open("http://finance.yahoo.com/q?s=EURJPY=X")) > p doc.search("span#yfs_l10_eurjpy=x") #=> #<Hpricot::Elements[]> -- OZAWA Sakuro "The future will be better tomorrow." --Dan Quayle |
|
|
[ruby-list:46446] Re: Hpricot#search の使い方Mt.Trailです
| おそらくコードは間違ってませんが、html が間違ってます。 | http://www.w3.org/TR/REC-html40/types.html#type-name によると | id, name に使用できるのは /\A[a-zA-Z][a-zA-Z0-9\-_:.]*/ です。 | "=" や "^" は id には使えません。 | | nokogiri でも軽く試して見ましたが、search メソッド呼び出し時に id に "=" が | 入っていると Nokogiri::CSS::SyntaxError になりました。 | id を使わない方法で検索条件を指定すると問題なく動きました。 XPath形式だとHpricotでもNokogiriでも取れるようです。 p doc.search("//span[@id='yfs_l10_eurjpy=x']") #<Hpricot::Elements[{elem <span id="yfs_l10_eurjpy=x"> "131.03" </span>}, {elem <span id="yfs_l10_eurjpy=x"> "131.03" </span>}]> |
|
|
[ruby-list:46447] Re: Hpricot#search の使い方そえじまです。
okkezさま、さくさま。 お忙しいところ、原因のご教示ありがとうございました。m(__)m そんな落とし穴があるとは、全く想像していませんでした。 徹夜で悩んでたので、大変助かりました。 Mt.Trail さま XPath形式というものの使い方を教えていただき、ありがとうございます。 全くもって勉強不足を痛感しております。m(__)m 当初は仕方ないので文字列に変換してゴリっとするしかないのかと思って 諦めていたところでしたので、大変助かりました。 るびきちさま始め、深夜早朝にご教示いただいた皆様に感謝いたします。 > | おそらくコードは間違ってませんが、html が間違ってます。 > | http://www.w3.org/TR/REC-html40/types.html#type-name によると > | id, name に使用できるのは /\A[a-zA-Z][a-zA-Z0-9\-_:.]*/ です。 > | "=" や "^" は id には使えません。 > | > | nokogiri でも軽く試して見ましたが、search メソッド呼び出し時に id に "=" が > | 入っていると Nokogiri::CSS::SyntaxError になりました。 > | id を使わない方法で検索条件を指定すると問題なく動きました。 > > XPath形式だとHpricotでもNokogiriでも取れるようです。 > > p doc.search("//span[@id='yfs_l10_eurjpy=x']") > > #<Hpricot::Elements[{elem <span id="yfs_l10_eurjpy=x"> "131.03" </span>}, > {elem <span id="yfs_l10_eurjpy=x"> "131.03" </span>}]> > > > > |
| Free embeddable forum powered by Nabble | Forum Help |