2015年2月24日 星期二

用Python爬的第一個網頁

利用Python爬最基本的網頁其實只用兩個步驟
  • 取得網頁內容
  • 解析他

而且從頭到尾只需要用到兩個類庫
(連結為API)

http://www.taiwanlottery.com.tw/news/DrawNumber.aspx 該網頁為例
其實就是取得樂透彩中獎號碼


其實整個實作的概念很簡單也基本,首先觀察一下案例網站的原始碼,找到我們要取出的內容,而我們要取出的內容就是那些樂透彩名稱、期號、中獎號碼,稍微觀察一下你會發現這些我們需要的內容都被<li>這個標籤給包圍,那麼現在我們要做的就是取得這標籤裡的內容物


開始來寫Code了


首先匯入urllib2,SGMLParser這兩個類庫
import urllib2
from sgmllib import SGMLParser


建立一個類來繼承SGMLParser
class Lottery(SGMLParser):
def __init__(self):
SGMLParser.__init__(self)
self.is_li = ""
self.name = []
def start_li(self, attrs):
self.is_li = 1
def end_li(self):
self.is_li = ""
def handle_data(self, text):
if self.is_li == 1:
self.name.append(text)

你會發現裡面的start_li、end_li、is_li的”li“就是我們要取得的標籤,也可以依照案例的不同而修改成其他的標籤,像是start_td、start_div等等
而name就是標籤裡的內容了


接著就是開始實作了,以下代碼為獲取整個網站內容
content = urllib2.urlopen('http://www.taiwanlottery.com.tw/news/DrawNumber.aspx').read()


開始解析內容
lottery = Lottery()
liottery.feed(content)
for i in liottery.name:
   i = i.replace(" ","")
   if '\n' not in i:
       print i


第一次執行會比較慢,只要沒馬上出現錯誤的結果都是好的
最終印出的結果如下

104
2
24
日獎號一覽表


大樂透


期別
104000021




本期中獎號碼
依大小順序排列:
28
39
41
46
48
09
39
28
03
48
41
49樂合彩


期別
104000021


本期中獎號碼
依大小順序排列:
28
39
41
46
48
39
28
03
48
41
4星彩


期別
104000047


本期中獎號碼
6
2
7
3星彩


期別
104000047


本期中獎號碼
2
3


今彩539


期別
104000047


本期中獎號碼
依大小順序排列:
12
14
23
27


14
23
12
11
39樂合彩


期別
104000047


本期中獎號碼
依大小順序排列:
12
14
23
27
14
23
12
11

References:
[Python] 超級基本的網頁抓取
http://rightthewaygeek.blogspot.tw/2013/09/python.html
Python写爬虫——抓取网页并解析HTML
http://www.lovelucy.info/python-crawl-pages.html



2015年2月23日 星期一

Ubuntu建造JSP開發環境



JSP的開發環境需要有以下三項


  • JDK
  • Eclipse JEE
  • Tomcat



Step1
安裝JDK

Step2
下載Eclipse JEE
下載完後解壓縮到你想放置的地方

Step3
下載Tomcat
選版本>Download>Core>tar.gz
解壓縮並將其放在你想放的目錄下

Step4
Eclipse設定Server環境
開啟Eclipse
Windows>Preference>Server>Runtime Environments
(因為先前已經設定好所以裡面才會有東西)
Screenshot from 2015-02-23 20:05:57.png

Step5
Add>選擇Tomcat版本>Next>設定Name>設定Tomcat路徑>設定JRE>Finish
Screenshot from 2015-02-23 20:28:16.png
Screenshot from 2015-02-23 20:30:24.png

Step6
建立JSP專案
File>New>Dynamic Web Project>Next>設定ProjectName>Finish
Screenshot from 2015-02-23 20:41:51.png

在你的專案裡找到WebContent資料夾,右鍵>New>JSP File>Finish
Screenshot from 2015-02-23 20:46:01.png

Step7
測試專案
選擇專案右鍵>Run As>Run on Server>finish
Screenshot from 2015-02-23 20:52:16.png
若出現網頁就代表成功了,如果出現的網頁顯示404也沒關係,因為你根本還沒寫內容上去

接著,好好享受JSP的開發吧!



2015年2月15日 星期日

Android:Eclipse Project轉AndroidStudio Project

Step1
要將eclipse專案轉成AndroidStudio的專案首先就要先有一個eclipse專案(廢話)
以HelloWorld為例


Step2
首先是要產生gradle檔
File>>Export

選擇Generate Gradle build files>>Next

Step3
選擇要轉的專案>>Next>>Finish


Step4
Eclipse部份完成,接著開啟AndroidStudio
選擇Import Non-Android Studio project


Step5

選擇專案後按下OK

Step6
Next>>Finish


Step7
接著可能會出現下圖提示,請毫不猶豫點下去就對了


Step8
大功告成!


2015年2月14日 星期六

Ubuntu安裝&設定Java環境

/**以下操作建議在root環境下執行**/

Step1
到Java官網去下載JDK(得確定系統版本是x86或x64)


Sep2
確認Ubuntu是否有自動幫安裝好Java
到終端機輸入
java -version
如果沒顯示任何版本的Java了話那是最好的(畢竟都還沒安裝啊)
但如果有出現OpenJDK那麼就必須要把它移除掉


Sep3
移除OpenJDK
這裡移除OpenJDK是為了避免未來開發Java時遇到不同版本之間所造成的衝突,當然你也可以繼續使用OpenJDK作為Java的主要來源,如果你堅持的話
這裡可以看出OpenJDK和OracleJDK的比較
回歸正題,再終端機輸入
sudo apt-get purge openjdk-\*
如此就會移除OpenJDK了
再來是要創建一個目錄給Java使用
sudo mkdir -p /usr/local/java


Sep4
將下載來的JDK解壓縮到剛剛創建的目錄
首先在終端機移動到剛下載的地方
cd /home/your_username/Downloads
將壓縮檔複製到/usr/local/java,請自行更改JDK的檔名
sudo cp -r jdk-8u25-linux-x64.tar.gz /usr/local/java/
移動到 /usr/local/java/
cd  /usr/local/java/
解壓縮,請自行更改JDK的檔名
sudo tar xvzf jdk-8u25-linux-x64.tar.gz
接著查看檔案是否存在
ls -a
出現jdk1.8.0_25資料夾就OK了


Sep5
設置Java的環境變數
用文字編輯器開啟環境變數設定檔
vim /etc/profile
如果沒有vim可使用內建的gedit
sudo gedit /etc/profile
或者安裝一個vim編輯器
sudo apt-get install vim
總之不管用什麼編輯器開啟,請在檔案的最後頭加上
JAVA_HOME=/usr/local/java/jdk1.8.0_25
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export PATH
儲存並退出


Sep6
告訴Ubuntu Java的位置
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.8.0_25/bin/java" 1 
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk1.8.0_25/bin/javac" 1 
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.8.0_25/bin/javaws" 1


Sep7
告訴Ubuntu Oracle Java 是系統默認的"Java"
sudo update-alternatives --set java /usr/local/java/jdk1.8.0_25/bin/java
sudo update-alternatives --set javac /usr/local/java/jdk1.8.0_25/bin/javac
sudo update-alternatives --set javaws /usr/local/java/jdk1.8.0_25/bin/javaws
Sep8
大功告成
輸入
java -version
有出現Java版本和Java(TM) SE Runtime Environment字樣就OK啦
javac -version
出現Java版本,代表OK


Restart&Enjoy it!

References:
How to Install Oracle Java JDK on Ubuntu Linux
http://www.wikihow.com/Install-Oracle-Java-JDK-on-Ubuntu-Linux
談論 OpenJDK 與 Sun JDK