1
我有這個樣表數據採集數據......使用引入nokogiri從交替行
<table class="main">
<tr class="main">
<td align="left">3/4/05</td>
<td>123-334</td>
<td></td>
<td></td>
<td></td>
<td align="right">$2.00</td>
</tr>
<tr style="background-color:#FFFFD7">
<td colspan="2">Company Name</td>
<td colspan="4">Owner Name</td>
</tr>
.....
This goes on like this with every other <tr> holding
information that I need together.
......
</table>
我寫了這個代碼,但它只是抓住了第一個不是所有的人......
data_table = Nokogiri::HTML(page_body, 'UTF-8')
FasterCSV.open('data.csv', 'a') do |csv|
table = data_table.xpath('//table[@class="main"]')
rows = table.xpath('tr')
rows.collect do |row|
date = row.at_xpath('tr[@class="main"]/td[1]/text()')
id = row.at_xpath('tr[@class="main"]/td[2]/text()')
amount = row.at_xpath('tr[@class="main"]/td[3]/text()')
company = row.at_xpath('tr[@style="background-color:#FFFFD7"]/td[1]/text()')
name = row.at_xpath('tr[@style="background-color:#FFFFD7"]/td[2]/text()')
csv << [date, id, amount, company, name]
end
end
關於如何在CSV文件中將這兩個<tr>
合併爲一行的任何想法?並從整個表中獲取所有數據?
這是工作,但我忘了補充一點,我有標題的第一行,我認爲是搞砸了數據......我怎麼跳過第一個
您可以在'rows'變量上使用drop(1)來刪除第一行。因此,將'rows.each_slice(2)'改爲'rows.drop(1).each_slice(2)'。 –
完美!謝謝!! – user1563849
相關問題