透過shell抓取html資料
最近看一些網站的時候,發現有些資料很有意思,想把資料擷取出來,但是想把資料抽取出來很是困難。因為如下的小方框的數字都是上下兩行排列,想要把資料抽取到一行是很難實現的。
斯達 2:3 斯特羅姆 23:57 歐 亞 析 0-1
今天嘗試了一下,可以使用shell指令碼來達到目的。
比如我們使用wget來抽取網頁的資料,然後在這個基礎上進行資料的篩查。
[ora11g@rac1 a]$ wget
[1] 28401
[ora11g@rac1 a]$ --2014-08-24 04:27:59--
Resolving ... 58.83.226.133
Connecting to ... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1815957 (1.7M) [text/html]
Saving to: 鈥渉unhe?appType=livescore鈥
100%[=============================================================================================================================>] 1,815,957 530K/s in 3.3s
2014-08-24 04:28:03 (530 KB/s) - 鈥渉unhe?appType=livescore鈥saved [1815957/1815957]
[1]+ Done wget
在分析了網站的標籤之後,我寫了如下的shell指令碼,能夠抽取出對應的資料來。
grep "<a class=\"homewin btn\" op=\"w\"><span class=\"num\">" *|awk -F\<span '{print $2}'|awk -F\> '{print $2}'|awk -F\< '{print $1}' > win.lst
grep "<a class=\"draw btn\" op=\"d\"><span class=\"num\">" *|awk -F\<span '{print $2}'|awk -F\> '{print $2}'|awk -F\< '{print $1}' >tie.lst
grep "<a class=\"awaywin btn\" op=\"l\"><span class=\"num\">" *|awk -F\<span '{print $2}'|awk -F\> '{print $2}'|awk -F\< '{print $1}' > lose.lst
grep "<a class=\"homewin btn\" op=\"hdw\"><span class=\"num\">" *|awk -F\<span '{print $2}'|awk -F\> '{print $2}'|awk -F\< '{print $1}' > rwin.lst
grep "<a class=\"draw btn\" op=\"hdd\"><span class=\"num\">" *|awk -F\<span '{print $2}'|awk -F\> '{print $2}'|awk -F\< '{print $1}' >rtie.lst
grep "<a class=\"awaywin btn\" op=\"hdl\"><span class=\"num\">" *|awk -F\<span '{print $2}'|awk -F\> '{print $2}'|awk -F\< '{print $1}' >rlose.lst
cnt=`cat win.lst|wc -l`
for i in {1..$cnt}
do
tmp_win=`sed -n ''$i'p' win.lst`
tmp_tie=`sed -n ''$i'p' tie.lst`
tmp_lose=`sed -n ''$i'p' lose.lst`
tmp_rwin=`sed -n ''$i'p' rwin.lst`
tmp_rtie=`sed -n ''$i'p' rtie.lst`
tmp_rlose=`sed -n ''$i'p' rlose.lst`
echo $tmp_win $tmp_tie $tmp_lose $tmp_rwin $tmp_rtie $tmp_rlose
done
抽取出資料之後,展現類似下面的形式,達到了我們預期的目標。
2.98 3.05 2.17 1.53 3.70 4.90
1.81 3.45 3.55 3.45 3.60 1.78
2.60 3.55 2.19 1.51 4.10 4.50
1.38 3.85 7.25 2.33 3.25 2.55
2.30 2.82 3.00 5.40 3.85 1.46
1.34 4.25 7.00 2.15 3.45 2.68
1.29 4.75 7.20 1.93 3.75 2.92
2.25 3.70 2.45 4.60 4.15 1.49
4.05 3.70 1.65 1.96 3.60 2.95
3.65 3.50 1.77 1.81 3.70 3.26
2.95 3.33 2.06 1.58 3.83 4.25
1.35 4.50 6.20 2.12 3.50 2.70
1.68 3.85 3.72 3.02 3.65 1.91
4.95 3.80 1.52 2.18 3.35 2.70
1.54 3.45 5.40 2.80 3.30 2.13
2.39 3.00 2.70 5.65 3.95 1.43
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30633755/viewspace-2127771/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 通過shell抓取html資料HTML
- 透過shell指令碼抓取awr報告中的問題sql指令碼SQL
- 海量資料遷移之透過shell估算資料量
- 透過shell指令碼得到資料字典的資訊指令碼
- Linux透過Shell命令向埠傳送資料Linux
- 透過shell指令碼生成查詢表資料的sql指令碼SQL
- 透過shell得到資料庫中許可權的指令碼資料庫指令碼
- 透過shell指令碼生成資料統計資訊的報表指令碼
- java抓取HTML頁面的資料(淘寶頁面),JavaHTML
- 使用shell抽取html資料之二HTML
- 透過shell解析dump生成parfile
- 透過shell指令碼分析足彩指令碼
- 透過shell指令碼檢視資料庫表空間使用情況指令碼資料庫
- 透過top命令抓取cpu高消耗的sqlSQL
- 過濾搜尋引擎的抓取資料
- 使用 ssmtp 於 shell 透過 Gmail 寄信SSMAI
- 透過shell定製ash指令碼指令碼
- 透過等待看資料庫資料庫
- 透過shell指令碼檢視鎖資訊指令碼
- 透過shell指令碼監控oracle session指令碼OracleSession
- 測了一下 透過 DBCA 透過模板 複製資料庫(資料庫架構及資料)資料庫架構
- 透過shell指令碼檢視procedure的資訊指令碼
- 透過shell指令碼檢視package的資訊指令碼Package
- 如何透過SQLyog分析MySQL資料庫MySql資料庫
- 透過spark將資料儲存到elasticsearchSparkElasticsearch
- MySQL 透過 binlog 恢復資料MySql
- 透過API介面實現資料探勘?API
- 透過Log Miner做Oracle資料同步Oracle
- 透過socket訪問資料庫(轉)資料庫
- .net下功能強大的HTML解析庫HtmlAgilityPack,資料抓取必備HTML
- 使用Scrapy抓取資料
- 通過shell指令碼抓取awr報告中的問題sql指令碼SQL
- 【資料庫資料恢復】透過資料頁恢復Sql Server資料庫資料的過程資料庫資料恢復SQLServer
- 透過shell和sql結合查詢效能sqlSQL
- Shell指令碼 | 抓取log檔案指令碼
- 透過 ETL 匯出 Hive 中的資料Hive
- 【Mysql】如何透過binlog恢復資料MySql
- 透過cx_Oracle模組獲取資料Oracle