0

郵便番号のカウンシル税帯を取得する簡単な例として、Nokogiriを使用しています(http://www.voa.gov.uk/cti/InitS.asp?lcn=0)

これが私が現在持っているコードです:

 a = Mechanize.new{ |agent|  agent.user_agent_alias = 'Mac Safari'}
 a.get('http://www.voa.gov.uk/cti/InitS.asp?lcn=0') do |page|
      form = page.form_with(:id => "frmInitSForm")
      form.txtPostCode = "NN15 6UA"
      page = a.submit form

      page.search("tr").each do |tr|
        textF = tr.text.strip
        textF.gsub!(/[\n]+/, "\n")
        puts textF

      end

    end
  end

現時点では、これは内部のすべてのテキストを印刷しますtr

次に、次のdoようなもの が必要です

tdFirst = tr.children("td:first").text
tdSecond = tr.children("td:nth-child(2)").text

firstsecondtdを取得するにはどうすればよいですか?

4

3 に答える 3

2

あなたの内側のブロックで、試してみてください

tdFirst, tdSecond = tr.xpath('td')[0,2].map {|td| td.inner_text.strip}
puts "%s; %s" % [tdFirst, tdSecond]
于 2012-05-09T16:00:52.337 に答える
2

nokogiriを使用する場合、すでに取得している場合はtr、を使用できます

tds  = tr.xpath('td')
first = tds[0].text
second = tds[1].text
于 2012-05-09T15:55:24.467 に答える
2

すべてのTDをフェッチしてからそれを整理するよりも、次のようにXPathを使用できます。

td1, td2 = tr.xpath('td[1 or 2]').map(&:text).map(&:strip)

またはCSS:

td1, td2 = tr.css('td:nth-child(1),td:nth-child(2)').map(&:text).map(&:strip)
于 2012-05-11T18:24:20.263 に答える