2013-03-08 121 views
0

我有一個在該國每個DOT#(部門)的列表。我想找出每家公司的保險生效日期。如果你去http://li-public.fmcsa.dot.gov - >「繼續」 - >然後從下拉列表中選擇「運營商搜索」,然後點擊「去」它會帶你到一個搜索表單(這是唯一的方法來到這個屏幕)。需要從網站中提取數據...網絡查詢?宏?

從那裏,你可以輸入一個DOT#X(使用61222作爲例子),它會帶你到另一個屏幕。點擊「以HTML查看報告」,然後在底部看到「Active/Pending Insurance」。我想從該頁面提取「生效日期」,並將其粘貼在我已知的DOT#X旁邊的電子表格中。

在我列表中的數千個DOT#中,並非所有人都會在本網站上提交文件,如果這樣做會有所影響。

這可以通過宏或Excel Web查詢完成嗎?我知道我可能聽起來像一個總新手,但我會很感激我得到的任何幫助。

謝謝

+0

我真的很感激你的意見。不幸的是,我不喜歡這種東西。我想我需要研究要麼學習這種付錢給其他人去做的事情。任何想到如果我僱用程序員可能會運行什麼? – Patrick 2013-03-09 01:38:54

+0

我曾經寫過在你描述過的情況下從網站上提取數據的vba宏。這並不複雜,但準備工作需要一點時間。然而,我的解決方案的最大缺點是:爲了安全起見,需要花費時間到達最終站點。每次點擊10秒,這意味着約。在你的情況下60秒;頁面代碼必須穩定,因爲宏讀取HTML代碼,動作涉及代碼的某個部分。如果網絡管理員更改了任何內容,那麼在更改宏之前可能會失敗並返回數據。 – 2013-03-09 19:48:59

+0

PS:另請參閱[http://stackoverflow.com/questions/1765573/how-to-parse-a-rendered-web-page-containing-javascript](http://stackoverflow.com/questions/1765573/how -to-解析-一個渲染-網頁含的JavaScript);它與這個問題有關... – user2150162 2013-03-10 05:34:36

回答

1

你能做到嗎?坦率地說,即使你可以在處理電子表格的時候鎖定電子表格。最後,你將如何處理一個錯誤?

我不會在面向客戶端的應用程序中這樣做。這聽起來更像是在服務器端應用程序中可以做的事情,它可以處理並在更受控制的環境中收集信息。然後,您的Excel電子表格可以查詢該應用程序,並一舉獲取信息。錯誤處理要簡單得多,而且你不會坐在那裏盯着Excel,爲什麼它可以在數千個網站上運行。它不是爲了優雅地做而設計的。

你在寫什麼我寫的Web服務?那這取決於你的喜好。我,我會把它寫在Ruby on Rails上,因爲它可以輕鬆處理任務的抓取方面,並且可以輕鬆地報告數據。但它真的會回落到任何你最舒服的編碼。

0

你絕對可以做到這一點;但Excel並不是解析的最佳工具(儘管我已經完成了它!人們說這是不可能的 - 它可以使用異步Windows API調用完成;祝你好運......)

你必須要問的第一個問題是網站是否動態。它在飛行中產生結果嗎?另一個問題是:他們的URL慣例是否一致? (換句話說:您可以將結果加入書籤並在不同的會話中回覆給他們,而不必做任何事情,甚至可能登錄到網站......

如果網站是靜態的或者有一致的URL查詢機制(我們用HTML表示:Web查詢是一個「GET」而不是一個表單「POST」......),您可以使用一個很好的面向解析器的語言,如使用訪問網頁的庫的Python;谷歌的例子應該比比皆是。在得到所有調試後,它可以可靠地工作(也可以測試它在無法訪問站點時智能地報告情況;暫時中斷您的網絡連接......),從可以shell的Excel宏Python腳本。訣竅在於,Excel中的香草炮擊並不會阻止您的炮彈命令,而是異步運行。因此,再次使用Google,您可以找到一個可從Excel執行的Windows API調用,以同步地將您的檢索任務外殼化(如果您在完成之前未阻止它,則後續的宏代碼期望解析結果將在其中找不到任何內容! )您的Python解析代碼可以生成一個製表符分隔的文本文件,您的宏可以輕鬆加載。

查看這個設計的觀點?模塊化的。如果解析中存在錯誤,則只需查看CSV即可輕鬆確定。你正在利用專業化:你正在使用一種專爲解析而設計的編程語言(Python,無論什麼......); VBA並不是真正的解析語言。

如果它不是靜態的網頁,但動態的需要獨特的條目呢?然後,除了使用來自Excel宏的bizarro Windows API調用,您可以使用Greasemonkey或C#製作動態解析腳本。 Greasemonkey是Firefox的插件,可讓您使用Javascript編寫腳本網站交互。這很直觀。如果採取了這種方法,則可以在Firefox瀏覽器中爲該頁面提供預定義的Greasemonkey腳本。同樣,Greasemonkey可以生成數據的文本文件,並且很容易在稍後進行調試。我聽到的另一個選擇是C#;我從來沒有嘗試過,因爲它是微軟的具體,但我看到許多商店這樣做。還有一個名爲HTMLunit的Java解析包,但是當我嘗試在網頁上模擬Javascript事件時發現它破裂了。你可以看到的其他HTML解析器是Jerry和Cobra;還有這種叫做Selenium的新產品。我發現Greasemonkey是最可靠的,因爲它使用真正的瀏覽器來操作;而除了Selenium之外,這些其他產品會對瀏覽器進行虛擬複製,而不幸的是,這樣做往往不能實現。有些人甚至懶得複製可能在網頁上的Javascript(這通常可以是網站頁面呈現的肉和土豆!)

玩得開心。這是游泳池的深處,但它會讓你保持忙碌,有工作。

+0

回答上面的@ user2146958:這裏有人可以告訴你怎麼做:[http://www.wyzant.com/Tutors/immersive.excel](http://www .wyzant.com /輔導員/ immersive.excel)。我寧願私下給你發消息,但我在董事會看不到這樣做,而且聽起來就像你陷入了困境。 – user2150162 2013-03-10 05:09:09