# Python 應用專題 整合(高三自然選修) ###### tags:`110科技應用專題 30118吳云禎` ## Python 應用專題01 - [x] 01.folium畫地圖 - [x] 02.Google 奇境衛星圖 - [x] 03.geocoder 找 gps 座標 - [x] 04.Google 翻譯 - [x] 05.文字轉語音~讓電腦說話 - [x] 06.語言學習機 ### 01.folium畫地圖 * 程式碼 ```python= # 安裝套件 !pip install -q folium # 載入需要的模組 import folium # 給定城市名稱 city = "阮叨" # 我家的 gps 座標 city_gps = [23.217254,120.096102] # 用 folium 畫地圖,並放到變數m裡面去。 m =folium.Map(location=city_gps,zoom_start=17) # 在地圖上的location的座標加上一個 Marker。 folium.Marker(location=city_gps, popup=city).add_to(m) # 顯示出地圖 m ``` * 結果 ![我家地圖](https://i.imgur.com/47ORnoa.png) * 程式碼連結 [我家的地圖](https://colab.research.google.com/drive/11IJfCJY4FGL7iwllB-GDxeQ0dFe7fCb3?usp=sharing) ### 02.找出google的奇景 * 程式碼 ```python= # 安裝套件 !pip install -q folium attr = "default" tiles='http://mt2.google.cn/vt/lyrs=s&hl=zh-TW&gl=cn&x={x}&y={y}&z={z}' # 載入需要的模組 import folium # 給定城市名稱 city = "阿塔卡馬巨人畫像" # 我家的 gps 座標 city_gps = [-19.949156, -69.633842] # 用 folium 畫地圖,並放到變數m裡面去。 m = folium.Map( location=[-19.949156, -69.633842],zoom_start=35, tiles=tiles,attr=attr,) # 在地圖上的location的座標加上一個 Marker。 folium.Marker(location=city_gps, popup=city).add_to(m) # 顯示出地圖 m ``` * 結果 ![阿塔卡馬巨人畫像](https://i.imgur.com/QfAMTMl.png) * 程式碼連結 [google奇景](https://colab.research.google.com/drive/11IJfCJY4FGL7iwllB-GDxeQ0dFe7fCb3?usp=sharing) ### 03.輸入地址找出GPS座標並畫出地圖 * 程式碼 ```python= # 給定地址 print("請輸入地址:",end=" ") city = input() # 使用geocoder取得特定住址的GPS座標 city_gps = geocoder.osm(city).latlng 8 # 用 folium 畫地圖,並放到變數m裡面去。 m =folium.Map(location=city_gps,zoom_start=16) # 在地圖上的location的座標加上一個 Marker。 folium.Marker(location=city_gps, popup=city).add_to(m) # 顯示出地圖 print("經緯度座標:{0}".format(city_gps)) m ``` * 結果 ![03.輸入地址找出GPS座標並畫出地圖](https://i.imgur.com/Ipj3tzO.png) * 程式碼連結 [03.輸入地址找出GPS座標並畫出地圖](https://colab.research.google.com/drive/1jdYZFx_JMC2dBdjAjDGIrZLdcXsKv-4r?usp=sharing) ### 04.引用google做多國語言翻譯器 ![引用google做多國語言翻譯器](https://i.imgur.com/ncISXma.png) ```python= # 外部安裝 googletrans 模組 !pip install googletrans==4.0.0-rc1 #目前最新可行版 # 載入需要的模組 from googletrans import Translator # 查看文字翻譯可用語言 import googletrans googletrans.LANGCODES # 測試一下中翻英 print("請輸入要翻譯的字詞:",end=" ") text=input() translator = Translator() result = translator.translate(text,dest='en').text a=translator.translate(text,dest='zh-tw').text b=translator.translate(text,dest='ja').text c=translator.translate(text,dest='ko').text d=translator.translate(text,dest='de').text v=translator.translate(text,dest='vi').text print("翻譯結果(英文):{0}".format(result)) print("翻譯結果(中文):{0}".format(a)) print("翻譯結果(日文):{0}".format(b)) print("翻譯結果(韓文):{0}".format(c)) print("翻譯結果(德文):{0}".format(d)) print("翻譯結果(越文):{0}".format(v)) ``` [04.引用google做多國語言翻譯器](https://colab.research.google.com/drive/1jY86LEZgetkriLt7e7d4poVl4q3kf29w?usp=sharing) ### 05.文字轉語音 ![05.文字轉語音](https://i.imgur.com/HL9mIS8.png) ### 06.語言學習機 [06.語言學習機](https://colab.research.google.com/drive/10fQo-JL8zCBEzTIUUjpR8TKeHeJdq6vP?usp=sharing) ![06.語言學習機](https://i.imgur.com/itklPSM.png) ```python= print("輸入選擇翻譯語言(1.中→英 2.英→中):",end=" ") text=int(input()) print("請輸入要翻譯的字詞:",end=" ") a=input() translator = Translator() if(text==1): a=translator.translate(a,dest='en').text sound_file=a+".mp3" speak(a,'en') Audio(sound_file,autoplay=True) print("翻譯結果:{0}".format(a)) else: if(text==2): a = translator.translate(a,dest='zh-tw').text sound_file=a+".mp3" speak(a,'zh-tw') Audio(sound_file,autoplay=True) print("翻譯結果:{0}".format(a)) ``` ## Python 應用專題02~網路爬蟲A - [x] 01 讀取北中網頁網站 - [x] 02 解析基本網頁 - [x] 03 解析學校BMSH網頁 - [x] 04 解析新聞網站~中時新聞網 - [x] 05 解析新聞網站~Yahoo新聞 - [ ] 06 綜合練習~ETtoday旅遊雲 ### 01.讀取北中網頁資料 [讀取北中網頁資料](https://colab.research.google.com/drive/16fxOFJ7AGzLJtXhgRp4A_5wwnUq4oPv_?usp=sharing) ```python= import requests url= 'https://www.bmsh.tn.edu.tw' html = requests.get(url) html.encoding="utf-8" # print(html.text) htmllist=html.text.splitlines() # print(htmllist) n=0 print("請輸入須查詢次數之字串:",end=" ") s=str(input()) for row in htmllist: if s in row: n=n+1 print("找到{}次!".format(n)) ``` ![](https://i.imgur.com/wfF1o4c.png) ### 02.解析基本網頁 [02.解析基本網頁](https://colab.research.google.com/drive/1nIqAe3jxebUk8K4yrplAPDptRQq2FrTO?usp=sharing) ![02.解析基本網頁](https://i.imgur.com/s0rv5Fy.png) ```python= from requests.api import request import requests from bs4 import BeautifulSoup url= 'http://www.bmsh.tn.edu.tw' html = requests.get(url) html.encoding="utf-8" html_doc=requests.get(url) # print(html_doc) soup=BeautifulSoup(html_doc.text,'html.parser') # 直接印內容 # print(soup) # 有編排含內縮的內容 # print(soup.prettify()) # 網頁標題 HTML 標題 title_tag = soup.title print(title_tag) # 所有的超連結 a_tags = soup.find_all('a') for tag in a_tags: # 輸出超連結的文字 print(tag.string) for tag in a_tags: #輸出超連結網址 print(tag.get('href')) ``` ### 03.解析學校BMSH網頁 [03.解析學校BMSH網頁](https://colab.research.google.com/drive/12IC3mhhIKH3BQpevN2VIVreg_Nbms1Nc?usp=sharing) ![03.解析學校BMSH網頁](https://i.imgur.com/VUGxhzB.png) ```python= import requests from bs4 import BeautifulSoup # 下載 北中網頁首頁內容 url = 'http://www.bmsh.tn.edu.tw/' r = requests.get(url) # 確認是否成功 if r.status_code ==requests.codes.ok: # 解析 soup = BeautifulSoup(r.text,'html.parser') a_tag=soup.find_all("a")#, class_='title') for tag in a_tag: # 輸出 print("標題:{}\n -> 網址:{}".format(tag.string,tag.get('href'))) ``` ### 04.解析新聞網站~中時新聞網 [04.解析新聞網站~中時新聞網](https://colab.research.google.com/drive/1XlnClXUlg-CWYA0dfERa2IjjMD_A2Wex?usp=sharing) ![04.解析新聞網站~中時新聞網](https://i.imgur.com/H1wc0Gf.png) ```python= from requests.api import request import requests from bs4 import BeautifulSoup url= 'https://www.chinatimes.com/?chdtv' html = requests.get(url) html.encoding="utf-8" html_doc=requests.get(url) soup=BeautifulSoup(html_doc.text,'html.parser') print(soup.prettify()) from requests.api import request import requests from bs4 import BeautifulSoup url= 'https://www.chinatimes.com/?chdtv' r = requests.get(url) if r.status_code == requests.codes.ok: soup = BeautifulSoup(r.text,'html.parser') titles = soup.find_all("h4",class_="title") #print(titles) for title in titles: print(title.select_one("a").getText()) print(title.select_one("a").get('href')) ``` ### 05.解析新聞網站~Yahoo新聞 [05.解析新聞網站~Yahoo新聞](https://colab.research.google.com/drive/1gbV1TpRIbFR3Wmd5ND3fyiGwLkQA8Z7u?usp=sharing) ![05.解析新聞網站~Yahoo新聞](https://i.imgur.com/jdZZSo1.png) ```python= import requests from bs4 import BeautifulSoup r = requests.get('https://tw.yahoo.com/') if r.status_code == requests.codes.ok: soup = BeautifulSoup(r.text,'html.parser') #以CSS的class抓出各類頭條新聞 stories = soup.find_all("div",class_="container") #利用BS4擷取資料格式為bs4.element.ResultSet,可以轉成list print(type(stories)) list1=stories[0:1] print(list1[0].text) for s in stories: print("標題;"+s.text) for i in range(1,11,1): print(i,".",list1[0].text.split(" ")[i]) ``` ### 06.綜合練習~ETtoday旅遊雲