Home > IT > Script: Tự động cập nhật giá USD, giá vàng từ trang chủ của VCB và SJC

Script: Tự động cập nhật giá USD, giá vàng từ trang chủ của VCB và SJC

June 3, 2008

Chỉ với vài ba command trên Linux, chúng ta có thể viết một đoạn script nhỏ để cập nhật giá vàng, đô la, … từ một trang web nào đó.

Về mặt kỹ thuật thì không có gì là cao siêu. Ý tưởng như sau:

– Phân tích HTML source

– Dùng awk, sed, ..để trích xuất dữ liệu mình cần trong cái URL đó.

Bây giờ mình vào trang http://www.vcb.com.vn xem nhé, giá USD trên Vietcombank như thế này:

View source, ta thấy format của nó như sau:

<table class=“tbl-exch” cellspacing=“1” border=“0” id=“ctl00_Content_HomeSideBar_RatesBox_ExchangeRates_ExrateView”>
<tr>
<th scope=“col”>M&#227; NT</th><th scope=“col”>Mua</th><th scope=“col”>Nhượng</th><th scope=“col”>Bán</th>
</tr><tr class=“odd”>
<td class=“code”>AUD</td><td>16,231.18</td><td>16,329.15</td><td>16,910.62</td>
</tr><tr class=“even”>
<td class=“code”>EUR</td><td>26,509.17</td><td>26,588.94</td><td>27,535.75</td>
</tr><tr class=“odd”>
<td class=“code”>GBP</td><td>33,506.26</td><td>33,742.46</td><td>35,013.95</td>
</tr><tr class=“even”>
<td class=“code”>JPY</td><td>160.38</td><td>162.00</td><td>168.44</td>
</tr><tr class=“odd”>
<td class=“code”>USD</td><td>16,253.00</td><td>16,255.00</td><td>16,255.00</td>
</tr>
</table>

Đơn giản nhỉ: Ta sẽ dùng awk với field seperator là tag <td> hoặc là </td>.

Giá USD  sẽ được được lấy ra như sau:

wget -q -O – http://www.vcb.com.vn |grep ‘USD<\/td>’ |awk ‘BEGIN {FS=”[<td>]+[</td>]+”;} {print $3″ “$4” “$5}’

Output:

16,253.00 16,255.00 16,255.00

Còn giá vàng nó như thế này:

Source:

<tr>
<td width=“33%” bgcolor=#ffffcc align=“center” height=“19”><font size=1 face=“arial”>SJC10c</font></td>
<td width=“33%” bgcolor=“#FFFFCC” height=“19” align=“center”><font size=1 face=“arial”>1,825,000</font></td>
<td width=“34%” bgcolor=“#FFFFCC” height=“19” align=“center”><font size=1 face=“arial”>1,835,000</font></td>
</tr>

Ta thấy rằng giá mua vào và bán ra là 2 dòng nằm ngay sau dòng có chữ SJC10c, vậy mình sẽ dùng sed để trích 2 dòng này, sau đó awk để lấy giá vàng.
Câu lệnh sẽ như sau:

wget -q -O – http://www.sjc.com.vn |sed -n -e ‘/SJC10c/ {n;p;n;p}’ |awk ‘BEGIN {FS=”[><]+”;} {print $4}’

Output:

1,825,000
1,835,000

Sử dụng crontab để script này chạy theo schedule của mình, lưu dữ liệu vào file để record lại giá vàng, giá đô,… Hoặc có thể update lại ngay trong trang web của mình :)!

Ta cũng có thể sử dụng gnplot để vẽ thành biểu đồ như kitco.com vậy. Bạn có thể xem bài: Dùng gnuplot để vẽ biểu đồ hoạt động của CPU nhé

%d bloggers like this: