1

私のHTML構造は

<div class="line">
    <h2>Header</h2>
    <h3>Mailing Address</h3>
    2349 Glorem ipsun lorem ipsum  CA 95833<br>
    <br>    

    Phone: 111-111-2111&nbsp;&nbsp;&nbsp;&nbsp;Fax: 111-511-1111<br>
    <a onfocus="blur()" target="_blank&quot;" href="">some text</a><br>
    <a onfocus="blur()" target="_blank" href="">some address</a><br>
    <div><p></p></div>      

    <h3>Contact(s)</h3>
</div>

HTMLページにはいくつかの<div class=line></div>要素が含まれています。divごとに、電話とファックスを他のデータと一緒に配列で抽出する必要があります。使ってみました

doc.css("div#ctl00_cphContent_divBrowseByMember").each do |div|
  div.css("div.line").each do |line|
    line.xpath('//text()[preceding-sibling::br and following-sibling::a]').text.strip
  end
end

何も返さず、タイムアウトエラーを返します。私がしようと line.xpath('//text()[preceding-sibling::br and following-sibling::a]')[0].text.strip すると、他のすべてのdivに対して同じ電話とファックスが返されます。私を助ける他の解決策を提案してください。

4

1 に答える 1

3

簡単な方法:

phone, fax = line.text.scan /\d{3}-\d{3}-\d{4}/
于 2012-07-14T10:39:47.757 に答える