2020年12月16日 星期三

python程控與物聯網

 壹、物聯網應用--智慧農業

一、認識智慧農業影片

109年大學社會實踐線上博覽體會

二、無人機的應用之一

農業大躍進「無人機噴灑農藥」有效解決缺工問題

二、線上晶片版micropython

三、物聯網MQTT協定與MQTTBOX實作

認識MQTT(subscribe, topic ,publish)

1、chrome 線上應用程式商店新增MQTTBOX

2、設定MQTTBOX

(1)name:自訂
(2) host:broker.hivemq.com
(3 )protocol:mqtt/tcp
(4 )save
(5 )conneted

(6) subscribe和Topic to publish請輸入 cshs

(7)payload:輸入您的班級與座號
(8)再按publish送出

貳、網路爬蟲

一、認識python網路爬蟲

什麼是網路爬蟲

https://youtu.be/BdRjutf8K0c

二、HTML一種標記語言而非程式語言

HTML語言介紹:

https://www.fooish.com/html/

w3school網站

https://www.w3schools.com/html/tryit.asp?filename=tryhtml_basic

練習1:學習HTML 

https://www.w3schools.com/html/tryit.asp?filename=tryhtml_default

練習2:學習CSS

https://www.w3schools.com/html/tryit.asp?filename=tryhtml_css_internal

練習3:學習Java Script  

https://www.w3schools.com/html/tryit.asp?filename=tryhtml_script

練習4:學習get 

https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_form_method

練習5:學習post   

https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_form_method_post

練習6:網路爬文

http://cheng-min-i-taiwan.blogspot.com/2018/10/python_6.html


三、download及安裝電腦版python3.9.4,並安裝python套件

pip3 install requests

pip3 install beautifulsoup4

四、搜尋:

南投市公所-古早南投堡

檢視原始碼
f12/element修改

五、作業:

作業1:運用requests.get() 讀取網頁原始碼

import requests

r=requests.get('https://www.ntc.gov.tw/1601/oldnantou')

print(r.text)

作業2:找出中文編碼

import requests
r=requests.get('https://www.ntc.gov.tw/1601/oldnantou')
print("encoding: %s" % r.encoding)
print("content: \n%s" % r.text[0:200])

作業3:設定中文編碼
import requests
r=requests.get('https://www.ntc.gov.tw/1601/oldnantou')
r.encoding='big5'
print("encoding: %s" % r.encoding)
print("content: \n%s" % r.text[0:200])

作業4:從bs4套件取出 BeautifulSoup
import requests
from bs4 import BeautifulSoup
r=requests.get('http://www.ntc.gov.tw/content/index.asp?m=1&m1=4&m2=15')
r.encoding='big5'
soup = BeautifulSoup(r.text, 'html.parser')
print(soup)

作業5:取出標題
import requests
from bs4 import BeautifulSoup
r=requests.get('https://www.ntc.gov.tw/1601/oldnantou')
r.encoding='UTF-8'
soup = BeautifulSoup(r.text, 'html.parser')
print(soup.find('title'))

作業6:僅取出標題不含標籤
import requests
from bs4 import BeautifulSoup
r=requests.get('http://www.ntc.gov.tw/content/index.asp?m=1&m1=4&m2=15')
r.encoding='UTF-8'
soup = BeautifulSoup(r.text, 'html.parser')
print(soup.find('title').text)

作業7:取出第一段文字
import requests
from bs4 import BeautifulSoup
r=requests.get('https://www.ntc.gov.tw/1601/oldnantou')
r.encoding='UTF-8'
soup = BeautifulSoup(r.text, 'html.parser')
print(soup.find('p').text)

作業8:找出所有段落文字
import requests
from bs4 import BeautifulSoup
r=requests.get('https://www.ntc.gov.tw/1601/oldnantou')
r.encoding='UTF-8'
soup = BeautifulSoup(r.text, 'html.parser')
all_p = soup.find_all('p')
for p in all_p:
    print(p.text)

 作業9:找出所有超鏈結
import requests
from bs4 import BeautifulSoup
r=requests.get('https://www.ntc.gov.tw/1601/oldnantou')
r.encoding='UTF-8'
soup = BeautifulSoup(r.text, 'html.parser')
all_a = soup.find_all('a')
for a in all_a:
    print(a['href'])

作業10:找出所有圖片
import requests
from bs4 import BeautifulSoup
r=requests.get('https://www.ntc.gov.tw/1601/oldnantou')
r.encoding='UTF-8'
soup = BeautifulSoup(r.text, 'html.parser')
all_img = soup.find_all('img')
for img in all_img:
    print(img['src'])

作業11:用爬蟲資料找出來圖片網址

六、政府資料開放平台(提供json格式,提供合法擷取資料),
可避免若用網路爬蟲頻繁的擷取別人網站資料,易造成癱瘓對方網站。
json是描述資料結構的方式,鼓勵可用python合法擷取json所提供的資料。
一、資料開放平台https://data.gov.tw/
三、農委會資料開放平台 https://data.coa.gov.tw/(最多瀏覽,農產品交易行情/資料介接)
四、作業練習:請練習可改json蘋果的資料。用python合法擷取json所提供的資料程式參考如下:

import requests
import json
r = requests.get('https://data.coa.gov.tw/Service/OpenData/FromM/FarmTransData.aspx')
text = json.loads(r.text)
for row in text:
    if '百香果' in row['作物名稱']:
        print ('交易日期:'+row['交易日期'])
        print ('作物名稱:'+row['作物名稱'])
        print ('市場名稱:'+row['市場名稱'])
        print ('平均價:'+str(row['平均價']))
        print ('交易量:'+str(row['交易量']))