0

次のような HTML を解析しようとしています。

<p class="row">
            <span class="itemdate"> Jul 22</span>
            <span class="itemsep"> - </span> 
            <a href="http://newyork.craigslist.org/brk/abo/3102470187.html">$2000 / 3br - Three bedroom apartment/new renovtion</a>
            <span class="itemsep"> - </span>
            <span class="itempn"><font size="-1"> (Bushwick-L Train-Close to Williamsburg)</font></span>
            <span class="itempx"> <span class="p"> pic</span></span>
            <span class="itemcg" title="abo"> <small class="gc"><a href="/abo/">apts by owner</a></small></span>
        </p>

この呼び出しを実行すると:

page.xpath("//p[contains(@class, 'row')]/a").first

次のような結果が得られます。

#<Nokogiri::XML::Element:0x3feea2631444 name="a" 
attributes=[#<Nokogiri::XML::Attr:0x3feea2631390 name="href"
value="http://newyork.craigslist.org/brk/abo/3102470187.html">] 
children=[#<Nokogiri::XML::Text:0x3feea2630ad0 "$2000 / 3br - Three bedroom">]>

したがって、xpath ドキュメントを見ると、次のようにして URL を返すことができるはずです。

page.xpath("//p[contains(@class, 'row')]/a@href").first 

しかし、私はこのエラーが発生します:

Nokogiri::XML::XPath::SyntaxError Exception: Invalid expression: 
//p[contains(@class, 'row')]/a@href

Nokogiri オブジェクトから URL を取得する方法は知っていますが、xpath 検索で URL の配列が返されるようにしたいと考えています。

4

1 に答える 1

2

スラッシュがありません。必要.../a/@hrefです。

于 2012-07-22T18:10:01.653 に答える