2008-09-16 140 views
3

我想刮一個html表並將其數據保存在數據庫中。你發現哪些策略/解決方案有助於解決這個計劃。將HTML表保存到數據庫

我非常喜歡Java和PHP,但真的是任何語言的解決方案都會有所幫助。

編輯:欲瞭解更多詳情,UTA(鹽湖公交系統)在其網站上提供巴士時刻表。每個時間表都出現在一個表格中,該表格的標題中包含工作站,行中的起始時間也是這樣。我想通過時間表並將表格中的信息保存在一個表格中,然後我可以查詢。

這裏的starting point的時間表

+0

你的鏈接斷開:( – 5arx 2011-01-31 13:11:32

回答

1

我試圖屏幕抓取之前,但我發現它是非常脆,尤其是與動態生成的代碼。 我發現了一個第三方的DOM解析器,並使用它來使用正則表達式匹配模式來導航源代碼,以便找到我需要的數據。

我建議試着找出網站的所有者是否有發佈的API(通常是Web服務)從他們的系統中檢索數據。如果沒有,那麼祝你好運。

+0

不幸的是,網站上沒有API,否則這將是理想的。 – 2008-09-16 15:12:17

2

我發現腳本語言通常更適合做這樣的任務。我個人比較喜歡Python,但PHP也可以。在Java中切分,切分和解析字符串只是太多工作。

+0

笑,在Java中幾乎所有的東西實在是太多了工作。幾年 – 2010-12-16 12:33:57

1

pianohacker忽視HTML::TableExtract模塊,這是專門爲這種事情設計的。您仍然需要LWP來檢索表格。使用python :

1

如果你想要的是一個形式的CSV表,那麼你可以使用這個

例如假設你想從一些網站,如湊在CSV形式的外匯報價:fxoanda

然後......

from BeautifulSoup import BeautifulSoup 
import urllib,string,csv,sys,os 
from string import replace 

date_s = '&date1=01/01/08' 
date_f = '&date=11/10/08' 
fx_url = 'http://www.oanda.com/convert/fxhistory?date_fmt=us' 
fx_url_end = '&lang=en&margin_fixed=0&format=CSV&redirected=1' 
cur1,cur2 = 'USD','AUD' 
fx_url = fx_url + date_f + date_s + '&exch=' + cur1 +'&exch2=' + cur1 
fx_url = fx_url +'&expr=' + cur2 + '&expr2=' + cur2 + fx_url_end 
data = urllib.urlopen(fx_url).read() 
soup = BeautifulSoup(data) 
data = str(soup.findAll('pre', limit=1)) 
data = replace(data,'[<pre>','') 
data = replace(data,'</pre>]','') 
file_location = '/Users/location_edit_this' 
file_name = file_location + 'usd_aus.csv' 
file = open(file_name,"w") 
file.write(data) 
file.close() 

,一旦你以這種形式有它,你可以將數據轉換成任何你喜歡的形式。

1

如果在SO上開始了一個垃圾風暴,我建議如果表格的格式永遠不會改變,那麼您可以放棄使用Regularexpressions來解析和捕獲所需的內容。

+0

兩半並沒有一直沒有5hitstorm王牌。 – 5arx 2013-07-17 09:34:24