2018年10月6日 星期六

Python從網路爬文到Word存檔

從網路可以取得許多資料,接下來若能把這些資料轉成Word檔,那就更完美了,記得要先安裝pip3 install python-docx。

import requests
from bs4 import BeautifulSoup
from docx import Document
from docx.shared import Inches

url = "http://www.nkut.edu.tw" 
re = requests.get(url) 
re.encoding='utf8'

soup = BeautifulSoup(re.text, 'html.parser')
html_inforamtion = soup.find('p')
print(html_inforamtion)

document = Document()
document.add_heading('南開科技大學', 0)
p = document.add_paragraph(html_inforamtion)
document.save('nkut.docx')

以下是print(html_inforamtion)的結果

Word的存檔路徑

查看輸出的Word檔

Python網路爬文

在這數位時代中,網路、網站、網頁已成為日常生活中不可以缺的元素,我們生活起居經常要上網查資料,假如我們能寫一支程式來過濾網路上的資訊,這一定是很棒的一件事。本篇文章就是要用Python網路爬蟲來收集資料。

想要從網頁中取得資料就要安裝requests套件

想要解構並擷取網頁資訊就要安裝beautifulsoup4套件

import requests
r = requests.get('http://www.google.com')
print (r.text)

執行結果:

如何讀取南開科技大學的網頁內容
import requests

url = "http://www.nkut.edu.tw" 
re = requests.get(url) 
re.encoding='utf8'
print(re.text)


判斷回傳的代碼
import requests
r = requests.get('http://www.nkut.edu.tw')
print(r.status_code)
if r.status_code == requests.codes.ok:
  print("OK")

執行結果


我們來嘗試網路爬文找出南開科技大學首頁上重要資訊內容
import requests
from bs4 import BeautifulSoup

url = "http://www.nkut.edu.tw" 

re = requests.get(url) 

re.encoding='utf8'

soup = BeautifulSoup(re.text, 'html.parser')
print(soup)

print("列印出第一頁的文字")
print(soup.find('p'))   

print("\n\n列印出id是counter的文字")
print(soup.find(id='counter')) 

print("\n\n列印出全部的文字")
print(soup.find_all('p')) 

print("\n\n列印出的文字")
print(soup.find('h1')) 


2018年10月4日 星期四

Python迴圈的美

本篇我們要學習Python迴圈的概念,我們就先以畫圓來說明,以下三行程式,分別表示匯入畫圖套件,第二行是指建立畫圖物件c,最後再畫圓。

import turtle

c = turtle.Turtle()

c.circle(100)



import turtle

c = turtle.Turtle()

c.circle(100)

c.left(10)

c.circle(100)

c.left(10)


上圖迴圈的寫法

import turtle
c = turtle.Turtle()
i = 0
while i < 2:
    c.circle(100)
    c.left(10)
    i += 1

因為圓有360度,每次都向左10度,只要連續轉36次,就會變得很好看

import turtle
c = turtle.Turtle()
i = 0
while i < 36:
    c.circle(100)
    c.left(10)

import turtle
c=turtle.Turtle()
for i in range(36):
    c.circle(100)
    c.left(10)
    i += 1

用遞迴的想法來設計
import turtle
c=turtle.Turtle()
def circle_recursion(i):

    if(i>0):
        c.circle(100)
        c.left(10)
        circle_recursion(i-1)
    return

circle_recursion(36)

接下來來看看IF
import turtle
c = turtle.Turtle()
i = 0
while i < 36:
    i += 1
    if i% 2 == 0:
        c.circle(100)
    c.left(10)
    
不妨把輸入程式觀察其形為

2018年9月30日 星期日

打好Python程式基礎


Python有一個很好用的套件-Turtle(海龜),初學者可以參考下面文件來學習。

第一個turtle程式:http://drweb.nksh.tp.edu.tw/student/lesson/A01/

1.畫一條線

import turtle

john = turtle.Turtle()

john.forward(100)


2. 更改線的顏色
import turtle

john = turtle.Turtle()
john.color("red")
john.forward(100)


3. 往上畫線
import turtle

john = turtle.Turtle()
john.color("red")
john.forward(100)
john.left(90)
john.forward(50)

4.畫長方形
import turtle

john = turtle.Turtle()
john.color("red")
john.forward(100)
john.left(90)
john.forward(50)
john.left(90)
john.forward(100)
john.left(90)
john.forward(50)


5. 畫正方形
import turtle

john = turtle.Turtle()
for i in [0,1,2,3]:
    john.forward(50)
    john.left(90)

另一種寫法
import turtle

john = turtle.Turtle()
for i in range(4):
    john.forward(50)
    john.left(90)

用函式來表示
import turtle

def drawRect():
    john = turtle.Turtle()
    for i in range(4):
        john.forward(50)
        john.left(90)

drawRect()

6.畫星星
import turtle 

star = turtle.Turtle()

for i in range(5):
    star.forward(50)
    star.right(144)
    
turtle.done()




進階練習

import turtle

def draw_diamond(some_turtle):
    some_turtle.left(30)
    some_turtle.forward(50)
    some_turtle.right(60)
    some_turtle.forward(50)
    some_turtle.right(120)
    some_turtle.forward(50)
    some_turtle.right(60)
    some_turtle.forward(50)
    some_turtle.right(150)

def draw_art():        
    # Instantiate a Screen object, window. Then customize window.
    window = turtle.Screen()
    window.bgcolor("white")     # set background color

    # Instantiate a Turtle object, brad. Then customize brad.
    brad = turtle.Turtle()
    brad.shape("turtle")      # see Turtle doc
    brad.color("blue")      # see Turtle doc
    brad.speed(0)             # 1 (slowest) to 10 (fastest). 0 means no animation.

    # Draw a circle with 36 diamonds. We rotate each diamond by 10 degrees at a time.
    for i in range (0, 36):      
        draw_diamond(brad)
        brad.right(10)

    # Draw a between middle of circle and the floor
    brad.right(90)
    brad.forward(200)
    
    # How to exit?
    window.exitonclick()      # click on the window to exit


# Invoke the procedure!
draw_art()

8. Turtle star
from turtle import *
color('red', 'yellow')
begin_fill()
while True:
    forward(200)
    left(170)
    if abs(pos()) < 1:
        break
end_fill()
done()

2018年9月16日 星期日

初遇Python,很好玩又受歡迎的程式語言


Python是2018年最受歡迎的程式語言,Python的優缺點可以參考:https://www.goinglearn.com.tw/programming-languages/144-python-優點與缺點,其優點是簡單易學,是最棒的初學者語言。雖然是簡單易學但又完整工法,同時支援程序導向、物件導向、和函式導向。最棒的是Python應用廣泛,有許多好用的函式庫可以支援。

我們來看看hacker.io上的python專案,Python專案: https://www.hackster.io/projects/tags/python
我們可以看到有114個專案。


我們試著用elderly關鍵字來搜尋,也有發現有51個專案,針對使用科技來進行老人照顧。

接下來我們再設定Python語言條件,就發現到只剩下8個老人照顧的專案。




2018年9月8日 星期六

當您老了,誰來做伴

每個人都會老,老了誰來做伴呢? 或許機器人會是一個選項,我們先來聽聽中國內地獨立音樂人趙照的詮釋,當您老了。



日本石黑浩發明逼真機器人



或許您會說,機器人長的太醜,沒有溫度,但這些似乎都克服了,不但長的跟人很像,而且體溫跟人差不多。


在台灣也有許多人一直在鑽研照顧機器人,兩年前中天新聞就有報導。

2018年8月20日 星期一

啟動智慧照顧落實智慧養老

台灣已進入高齡社會,意謂著100個人就至少有14位超過65歲,面對高齡人口愈來愈多,再加上少子化,要如何因應來解決這兩個現象所帶來問題,正考驗著生活在台灣的您和我。善用科技或許是解決這個問題的其中一種方法,台灣有全世界最好的資通訊產業,行動服務也非常的普及,本篇文章將帶大家來看一下,台灣目前在智慧照顧上的發展現況。

首先先來看看受恩智慧照顧大樓如何善用智慧生活科技來實現在地老化,運用資通訊技術讓更多長輩或照顧者知道日照中心舉辦辦能促進長輩身心健康的多樣的活動,另外還有臨時住宿、居家服務等,在受恩的照顧服務員必須時常接受資訊教育,善用科技,使得這些照顧服務員能迅速地熟悉並記錄各項工作,才能提供個別化服務,此外也為了讓長輩有好的居家作息,受恩把居家設備透過物聯網串連起來,經由大數據分析提供智慧化照護服務,並能主動提供長輩有興趣的活動資訊。


醫院也導入物聯網發展智慧醫療,運用智慧照護病房,加速看診和住院的流程,電子白板、智慧行動護理車、用藥比對病患條碼。


運用智慧照顧枕來監測長輩身體狀況,運用非接觸性光纖生理監控技術,可以得知淺眠或熟睡,呼吸暫停時可以發出警訊,透過頭部動作還能發出命令。


日照中心運用人臉辦識系統,當長輩離開時,可以通知醫護人員,另外結合物聯網技術,當窗戶被打開時,也能通知,可以預防意外的發生。


智慧機器人輪椅貼心照顧長輩,有的可以用站姿也可以用坐姿,另外也有用雙滑側機構來操控,操控器上裝有心電圖感知器,可即時監控長輩的心律。也有結合機器人和輪椅為長輩提供更好的選擇,可平移原地旋轉、遠距居家照顧等功能


智慧手錶關心長輩


陪伴是照顧長輩最重要的工作,陪伴機器人就是在這個需求下被設計出來。


國外機器人研發


華碩機器人