小提示, Google中有一個按鈕是美化排版,選擇了就更容易閱讀
import requests as req
url="https://data.weather.gov.hk/weatherAPI/opendata/weather.php"
data="fnd"
lang="tc"
response = req.get(f"{url}?dataType={data}&lang={lang}")
n=eval(response.text)
print(type(n))
for i in range(9):
print(n["weatherForecast"][i]["forecastDate"] + " : " + n["weatherForecast"][i] ["forecastWeather"]) #Dict>list>dict 中的內容
執行結果:
<class 'dict'>
20230923 : 部分時間有陽光,局部地區有驟雨。日間酷熱。
20230924 : 短暫時間有陽光,有幾陣驟雨。
20230925 : 部分時間有陽光。
20230926 : 部分時間有陽光,局部地區有驟雨。
20230927 : 短暫時間有陽光,有幾陣驟雨。
20230928 : 大致多雲,有幾陣驟雨。日間短暫時間有陽光。
20230929 : 大致多雲,有幾陣驟雨。日間短暫時間有陽光。
20230930 : 大致多雲,有幾陣驟雨。日間短暫時間有陽光。
20231001 : 大致多雲,有幾陣驟雨。日間短暫時間有陽光。
這樣便取得天氣預報,並應用在你個人的項目。
答案:
import requests as req
url="https://data.weather.gov.hk/weatherAPI/opendata/weather.php"
data="warningInfo"
lang="tc"
response = req.get(f"{url}?dataType={data}&lang={lang}")
n=eval(response.text)
print(type(n))
for i in (n["details"][0]["contents"]):
print(i)
執行結果:
>><class 'dict'>
香港天文台在上午6時45分發出酷熱天氣警告。
天文台預料今日本港天氣酷熱,市民應慎防中暑。
長者、孕婦、嬰兒及小童、慢性病如心臟病或高血壓患者,以及過胖人士均較易中暑,應及時觀察是否出現中暑徵兆。
在炎熱天氣下或高溫環境中工作的人士,請參照勞工處的預防工作時中暑指引,採取所需的防暑措施。
在戶外活動的人士,應多補充水分和不要過度勞累。於感覺不適時,應儘快到陰涼的地方休息。戶外活動宜安排在早上或下午較後的時間進行。
在室內活動時,亦應適時補充水分。如室內沒有空調設備,應儘量打開窗戶及以風扇保持空氣流通,亦可使用可供避暑的公共設施。
避免長時間在陽光下曝曬,以免受太陽紫外線曬傷。應穿上淺色和通爽衣服以及配戴濶邊帽子和能阻隔紫外線的太陽眼鏡。
多塗防曬系數為15或以上的廣譜防曬液。在陽光下停留超過兩小時後,以及在游泳、流汗或以毛巾抹身後,再次塗上防曬液。
請關注長者或慢性病患者的健康狀況。如認識他們,請間中致電或探訪他們,並留意他們住所的通風及空氣調節設備是否運作正常。
較易中暑人士應儘量避免戶外活動,遠離高溫環境,到陰涼、通風或有空氣調節的地方。
如果你答對了,那麼你便掌握字典及字串的選擇。
部份網站基於安全理由或減少應用程式查詢伺服器的次數,會封鎖來自requests的請求,但我們可以更改程式嗎來避開他的檢查。下面是例子:
import requests as req
url = "https://pixelford.com/blog/"
response=req.get(url)
print(response.status_code)
print(response.content)
執行結果:
>>403
>>b'403 - Forbidden | Access to this page is forbidden.\n'
403 Forbidden 是HTTP協定中的一個HTTP狀態碼(Status Code)。403狀態碼意為伺服器成功解析請求但是客戶端沒有訪問該資源的權限。
狀態碼 | 回應 |
---|---|
200 | 成功回應。 |
404 | 找不到想要找的訊息。 |
400 | 主要有兩種,第一種是錯誤的請求(例如錯誤網址),另一種是不存在的網站。 |
500 | 他們的伺服器發生錯誤,導致無法存取。 |
301 | 伺服器資源已轉自另外一個網域。 |
還有更多狀態碼可以上google 自行查詢。
從上面的例子可見部份網站會封鎖我們,不讓我們取得內容所以我們需要更改程式碼。
import requests as req
headers = {
'User-Agent': 'Mozilla/5.0'
}
url = "https://pixelford.com/blog/"
response=req.get(url,headers=headers)
print(response.status_code)
執行結果:
>>200
在Python中,webbrowser模組提供了用於顯示和控制網頁瀏覽器的高級介面。它允許您在使用者的預設 Web 瀏覽器中開啟網頁、URL 或檔案。
例子:
import webbrowser
url = "https://www2.pyc.edu.hk/pycnet/index.php"
browser = webbrowser.get("windows-default")
browser.open(url)
執行結果:
從瀏覽器中打開網站
這天就先介介紹requests的進階,如無意外的話明天我將會介紹Json檔案讀取,如果覺得我的文章對你有幫助或有更好的建議,可以追蹤我,可以按讚和不妨在留言區提出,明天再見吧。bye
reference:
https://developer.mozilla.org/zh-TW/docs/Web/HTTP/Status