一次遍歷網頁抓取資料經歷
阿新 • • 發佈:2019-02-13
起因:杭電ACM的試題列表不能按照指定條件顯示。
例如:
- 按試題被AC次數倒排序。
- 對未被我解決的試題,按被AC次數倒排序。
任務分解:
- 獲取網頁html資料到程式記憶體。使用URL類可輕鬆完成此任務。
- 將html轉換成document。使用Cobra包可輕鬆完成此任務。
- 定位獲取指定內容。使用XPath類可輕鬆完成此任務。
- 進一步提取資料,並生成插入SQL語句。使用正則表示式可輕鬆完成此任務。
- 執行SQL語句。
- 使用SQL語句進行分析。
輔助工具:
- Firefox的XPath Checker外掛,可以檢查你的XPath表示式是否正確。
- Firefox的Firebug外掛,可以在控制檯使用JavaScript來確定該如何讀取定位到的內容。
一些問題:
- 為什麼不使用DocumentBuilder類直接解析html?
我面對的網頁的格式並不標準,它的很多標籤屬性值並沒有使用引號引起來。
- 為什麼不使用Jsoup包來解析html?
它生成的Document並沒有實現介面:org.w3c.dom.Document,從而不能使用XPath來定位。
- 為什麼使用XPath來定位?
邏輯清晰,結構緊湊。
- 為什麼使用XPath Checker找不到匹配項?
瀏覽器為table標籤產生了子標籤tbody,tr標籤在tbody內。
關鍵步驟:
- 編寫XPath
- 生成插入SQL語句