{"id":4002,"date":"2024-12-15T22:38:27","date_gmt":"2024-12-15T13:38:27","guid":{"rendered":"https:\/\/secondlife.lol\/?p=4002"},"modified":"2024-12-15T22:40:11","modified_gmt":"2024-12-15T13:40:11","slug":"best-months-to-visit-jeju-island","status":"publish","type":"post","link":"https:\/\/secondlife.lol\/zh\/best-months-to-visit-jeju-island\/","title":{"rendered":"\u53bb\u6d4e\u5dde\u5c9b\u65c5\u884c\u7684\u6700\u4f73\u6708\u4efd\uff1a\u6570\u636e\u5e2e\u60a8\u627e\u51fa\u7b54\u6848\uff01(\u7279\u5199 Python)"},"content":{"rendered":"<p class=\"wp-block-paragraph\">\u563f\uff0c\u70ed\u7231\u65c5\u884c\u7684\u670b\u53cb\u4eec\uff01\u60a8\u662f\u5426\u6b63\u5728\u8ba1\u5212\u53bb\u6d4e\u5dde\u5c9b\u65c5\u884c\uff1f\u554a\uff0c\u6fc0\u52a8\u7684\u5fc3\u60c5\uff0c\u6211\u592a\u4e86\u89e3\u4e86\uff0c\u4f46\u968f\u540e\u60a8\u5c31\u4f1a\u5f00\u59cb\u8003\u8651 <strong>\u60f3\u77e5\u9053\u54ea\u4e2a\u6708\u4efd\u53bb\u6d4e\u5dde\u5c9b\u6700\u5408\u9002\uff1f<\/strong> \u5982\u679c\u60a8\u62c5\u5fc3\u574f\u5929\u6c14\u4f1a\u6bc1\u6389\u60a8\u7684\u65c5\u884c\uff0c\u90a3\u5c31\u542c\u597d\u4e86\uff01\u4eca\u5929\uff0c\u6211\u4eec\u6765\u770b\u770b\u6570\u636e\u5982\u4f55\u5e2e\u52a9\u60a8\u4e86\u89e3\u5929\u6c14\u60c5\u51b5\u3002 <strong>\u6d4e\u5dde\u5c9b\u6700\u4f73\u65c5\u6e38\u65f6\u95f4<\/strong>\u8ba9\u6211\u4eec\u4e00\u8d77\u6765\u770b\u770b\u5427\u3002<\/p>\n\n\n<style>.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap{padding-top:var(--global-kb-spacing-sm, 1.5rem);padding-right:var(--global-kb-spacing-sm, 1.5rem);padding-bottom:var(--global-kb-spacing-sm, 1.5rem);padding-left:var(--global-kb-spacing-sm, 1.5rem);border-top:3px solid var(--global-palette2, #2B6CB0);border-right:3px solid var(--global-palette2, #2B6CB0);border-bottom:3px solid var(--global-palette2, #2B6CB0);border-left:3px solid var(--global-palette2, #2B6CB0);border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title-wrap{padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title-wrap{color:var(--global-palette2, #2B6CB0);}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title{color:var(--global-palette2, #2B6CB0);font-size:28px;font-weight:regular;font-style:normal;}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap .kb-table-of-content-list{color:var(--global-palette1, #3182CE);line-height:2em;font-weight:regular;font-style:normal;margin-top:var(--global-kb-spacing-sm, 1.5rem);margin-right:0px;margin-bottom:0px;margin-left:0px;}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap .kb-table-of-content-list .kb-table-of-contents__entry:hover{color:var(--global-palette6, #718096);}@media all and (max-width: 1024px){.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap{border-top:3px solid var(--global-palette2, #2B6CB0);border-right:3px solid var(--global-palette2, #2B6CB0);border-bottom:3px solid var(--global-palette2, #2B6CB0);border-left:3px solid var(--global-palette2, #2B6CB0);}}@media all and (max-width: 1024px){.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title{font-size:28px;}}@media all and (max-width: 767px){.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap{border-top:3px solid var(--global-palette2, #2B6CB0);border-right:3px solid var(--global-palette2, #2B6CB0);border-bottom:3px solid var(--global-palette2, #2B6CB0);border-left:3px solid var(--global-palette2, #2B6CB0);}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title{font-size:28px;}}<\/style>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n<style>.kb-image4002_c946b7-29 .kb-image-has-overlay:after{opacity:0.3;border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;}.kb-image4002_c946b7-29 img.kb-img, .kb-image4002_c946b7-29 .kb-img img{border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}<\/style>\n<div class=\"wp-block-kadence-image kb-image4002_c946b7-29\"><figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"1024\" height=\"575\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/12\/image-1-11.jpg\" alt=\"\uc81c\uc8fc\ub3c4 \uc5ec\ud589\ud558\uae30 \uc88b\uc740 \ub2ec \ud3ec\uc2a4\ud2b8 \uadf8\ub9bc1\" class=\"kb-img wp-image-4004\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/12\/image-1-11.jpg 1024w, https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/12\/image-1-11-300x168.jpg 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/12\/image-1-11-600x337.jpg 600w, https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/12\/image-1-11-768x431.jpg 768w, https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/12\/image-1-11-18x10.jpg 18w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption>(\u4f8b\u56fe\u6765\u81ea\u300a\u6d4e\u5dde\u5c9b\u6700\u4f73\u65c5\u6e38\u6708\u4efd\u300b\u4e00\u6587\uff0c\u6765\u6e90\uff1a\u6d4e\u5dde\u5c9b\u65c5\u6e38\u5c40\uff1a <a href=\"https:\/\/www.flickr.com\/photos\/piljun\/14213202495\" target=\"_blank\" rel=\"noopener\">pieliny<\/a> )<\/figcaption><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u6d4e\u5dde\u5c9b\u7684\u6700\u4f73\u65c5\u6e38\u6708\u4efd\u662f\u4ec0\u4e48\u65f6\u5019\uff1f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u627e\u5230\u53bb\u6d4e\u5dde\u5c9b\u65c5\u6e38\u7684\u6700\u4f73\u6708\u4efd\u975e\u5e38\u91cd\u8981\uff0c\u56e0\u4e3a\u5929\u6c14\u53ef\u4ee5\u51b3\u5b9a\u60a8\u7684\u65c5\u884c\u6210\u8d25\uff01\u56e0\u6b64\uff0c\u6211\u5206\u6790\u4e86\u6d4e\u5dde\u5c9b\u8fc7\u53bb\u4e00\u5e74\u7684\u5929\u6c14\u6570\u636e\uff0c\u5305\u62ec\u6c14\u6e29\u3001\u98ce\u901f\u548c\u4e91\u91cf\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e00\u822c\u8ba4\u4e3a\uff0c\u6700\u9002\u5408\u65c5\u884c\u7684\u5929\u6c14\u6761\u4ef6\u5982\u4e0b\u3002\u8ba9\u6211\u4eec\u5206\u6790\u6570\u636e\uff0c\u627e\u51fa\u7b26\u5408\u4ee5\u4e0b\u6761\u4ef6\u7684\u6708\u4efd\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5e73\u5747\u6c14\u6e29\u5728 20\u00b0C \u81f3 28\u00b0C \u4e4b\u95f4\u3002<\/li>\n\n\n\n<li>\u6700\u5927\u98ce\u901f\u5c0f\u4e8e 15 \u516c\u91cc\/\u5c0f\u65f6\u3002<\/li>\n\n\n\n<li>\u5e73\u5747\u4e91\u91cf\u4f4e\u4e8e 501 TP3T\u3002<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u6570\u636e\u663e\u793a\u6d4e\u5dde\u5c9b\u6700\u4f73\u65c5\u6e38\u65f6\u95f4<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u73b0\u5728\uff0c\u8ba9\u6211\u4eec\u4f7f\u7528<a href=\"http:\/\/python.org\" data-type=\"link\" data-id=\"python.org\" target=\"_blank\" rel=\"noopener\"> Python<\/a>\u4e3a\u4e86\u627e\u5230\u53bb\u6d4e\u5dde\u5c9b\u65c5\u884c\u7684\u6700\u4f73\u6708\u4efd\uff0c\u6211\u7f16\u5199\u4e86\u4ee5\u4e0b\u4ee3\u7801\u3002 \u4f5c\u4e3a\u53c2\u8003\uff0c\u6211\u4f7f\u7528\u4e86 WeatherAPI.com API \u6765\u83b7\u53d6\u6570\u636e\u3002 \u6ce8\u518c\u540e\uff0c\u60a8\u53ef\u4ee5\u5728\u63a7\u5236\u9762\u677f\u4e2d\u627e\u5230 API Key\u3002 <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u5bfc\u5165\u8bf7\u6c42\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom datetime import datetime, timedelta\nfrom time import sleep\n\n# WeatherAPI.com API \u5bc6\u94a5\uff08\u7528\u60a8\u7684\u5b9e\u9645\u5bc6\u94a5\u66ff\u6362\uff09\napi_key = 'YOUR_API_KEY'\n\n# \u7528\u4e8e\u5b58\u50a8\u5929\u6c14\u6570\u636e\u7684\u5217\u8868\nfull_weather_data = []\n\n# \u6536\u96c6\u53bb\u5e74\u7684\u6570\u636e\nend_date = datetime.now()\nstart_date = end_date - timedelta(days=365)\n\n# \u5728\u65e5\u671f\u8303\u56f4\u5185\u8fed\u4ee3\nfor date in pd.date_range(start=start_date, end=end_date)\uff1a\n    url = f \"http:\/\/api.weatherapi.com\/v1\/history.json?key={api_key}&amp;q=Jeju&amp;dt={date.strftime('%Y-%m-%d')}\"\n    \n    try\uff1a\n        response = requests.get(url)\n        if response.status_code == 200\uff1a\n            data = response.json()\n            forecast_day = data['\u9884\u6d4b']['\u9884\u6d4b\u65e5'][0]['\u65e5']\n            \n            # \u6dfb\u52a0\u5929\u6c14\u6570\u636e\n            full_weather_data.append({\n                date': date.strftime('%Y-%m-%d')\u3001\n                \u6e29\u5ea6forecast_day['avgtemp_c']\u3001\n                \u98ce\u901fforecast_day['maxwind_kph']\u3001\n                \u4e91\u91cf\u9884\u6d4b\u65e5['avghumidity']\u3002\n            })\n            \n            print(f \"Data for {date.strftime('%Y-%m-%d')} successfully added\")\n        else\uff1a\n            print(f \"Failed to fetch data for {date.strftime('%Y-%m-%d')}.\u72b6\u6001\u4ee3\u7801\uff1a{response.status_code}\")\n    \n    except Exception as e\uff1a\n        print(f \"Error occurred while requesting data for {date.strftime('%Y-%m-%d')}\uff1a{e}\")\n    \n    # \u7b49\u5f85\u65f6\u95f4\uff0c\u4ee5\u8003\u8651 API \u8bf7\u6c42\u9650\u5236\n    \u7761\u7720\uff081\uff09\n\n# \u521b\u5efa\u6570\u636e\u5e27\ndf = pd.DataFrame(full_weather_data)\ndf['date'] = pd.to_datetime(df['date'])\n\n# \u5b9a\u4e49\u826f\u597d\u5929\u6c14\u6761\u4ef6\ndf['good_weather'] = (df['temp'].between(20, 28) &amp; (df['wind_sax'].between(20, 28))\n                      (df['wind_speed'] &lt; 15) &amp;\n                      (df[&#039;cloud_cover&#039;]  0] \u6700\u4f73\u6708\u4efd\n\n# \u6e29\u5ea6\u56fe\nplt.subplot(3, 1, 1)\nplt.plot(monthly_data['date'], monthly_data['temp'], marker='o')\nplt.title('Monthly Average Temperature')\nplt.ylabel('Temperature (\u00b0C)')\nplt.axhline(y=20, color='r', linestyle='--', label='\u4e0b\u9650\uff0820\u00b0C\uff09')\nplt.axhline(y=28, color='r', linestyle='--', label='\u4e0a\u9650\uff0828\u00b0C\uff09')\nfor idx, row in best_months.iterrows()\uff1a\n    plt.annotate(row['date'].strftime('%b'), (row['date'], row['temp'])\u3001\n                 textcoords=\"offset points\", xytext=(0,10), ha='center'\u3001\n                 fontsize=10, color='green')\n\n# \u98ce\u901f\u56fe\nplt.subplot(3, 1, 2)\nplt.plot(monthly_data['date'], monthly_data['wind_speed'], marker='o', color='green')\nplt.title('Monthly Average Wind Speed')\nplt.ylabel('Wind Speed (km\/h)')\nplt.axhline(y=15, color='r', linestyle='--', label='\u98ce\u901f\u9608\u503c\uff0815 \u516c\u91cc\/\u5c0f\u65f6\uff09')\nfor idx, row in best_months.iterrows()\uff1a\n    plt.annotate(row['date'].strftime('%b'), (row['date'], row['wind_speed'])\u3001\n                 textcoords=\"offset points\", xytext=(0,10), ha='center'\u3001\n                 fontsize=10, color='green')\n\n# \u4e91\u5c42\u8986\u76d6\u56fe\nplt.subplot(3, 1, 3)\nplt.plot(monthly_data['date'], monthly_data['cloud_cover'], marker='o', color='blue')\nplt.title('Monthly Average Cloud Cover')\nplt.ylabel('Cloud Cover (%)')\nplt.axhline(y=50, color='r', linestyle='--', label='\u4e91\u91cf\u9608\u503c\uff0850%\uff09')\nfor idx, row in best_months.iterrows()\uff1a\n    plt.annotate(row['date'].strftime('%b'), (row['date'], row['cloud_cover'])\u3001\n                 textcoords=\"offset points\", xytext=(0,10), ha='center'\u3001\n                 fontsize=10, color='green')\n\nplt.tight_layout()\n\n# \u5e26\u56fe\u4f8b\u548c\u663e\u793a\u7684\u6700\u7ec8\u7ed8\u56fe\nplt.legend(loc='upper right')\nplt.show()\n\n# \u6253\u5370\u6700\u9002\u5408\u65c5\u884c\u7684\u6708\u4efd\nprint(\"Best Months for travel:\")\nprint(best_months[['date', 'good_weather']]])\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u4ee3\u7801\u8bc4\u6ce8<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u8be5\u4ee3\u7801\u4f7f\u7528 WeatherAPI.com \u6536\u96c6\u548c\u5206\u6790\u6d4e\u5dde\u5c9b\u4e00\u5e74\u7684\u5929\u6c14\u6570\u636e\uff0c\u4ee5\u627e\u51fa\u6700\u4f73\u65c5\u884c\u6708\u4efd\u3002\u4e3b\u8981\u529f\u80fd\u5982\u4e0b<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1. \u901a\u8fc7\u5e94\u7528\u7a0b\u5e8f\u63a5\u53e3\u6536\u96c6\u6570\u636e<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4ece WeatherAPI.com \u7f51\u7ad9\u83b7\u53d6\u6d4e\u5dde\u5c9b\u8fc7\u53bb\u4e00\u5e74\u7684\u9010\u65e5\u5929\u6c14\u6570\u636e\u3002<\/li>\n\n\n\n<li>\u6536\u96c6\u6bcf\u4e2a\u65e5\u671f\u7684\u5e73\u5747\u6c14\u6e29\u3001\u6700\u5927\u98ce\u901f\u548c\u5e73\u5747\u6e7f\u5ea6\u3002<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2. \u6570\u636e\u5904\u7406<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5c06\u6536\u96c6\u5230\u7684\u6570\u636e\u8f6c\u6362\u4e3a pandas DataFrame\u3002<\/li>\n\n\n\n<li>\u5b9a\u4e49 \"\u597d\u5929\u6c14 \"\u6761\u4ef6\uff0c\u5e76\u5bf9\u6bcf\u4e2a\u65e5\u671f\u8fdb\u884c\u8bc4\u4f30\uff08\u6e29\u5ea6 20-28\u00b0C\uff0c\u98ce\u901f\u5c0f\u4e8e 15 \u516c\u91cc\/\u5c0f\u65f6\uff0c\u4e91\u91cf\u5c0f\u4e8e 501 TP3T\uff09\u3002<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>3. \u5206\u6790\u6570\u636e<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8ba1\u7b97\u6708\u5e73\u5747\u6c14\u6e29\u3001\u98ce\u901f\u548c\u4e91\u91cf\u3002<\/li>\n\n\n\n<li>\u6309\u6708\u6c47\u603b\u7b26\u5408 \"\u597d\u5929\u6c14 \"\u6761\u4ef6\u7684\u5929\u6570\u3002<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>4. \u53ef\u89c6\u5316<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4f7f\u7528 matplotlib \u7ed8\u5236\u6708\u5e73\u5747\u6c14\u6e29\u3001\u98ce\u901f\u548c\u4e91\u91cf\u56fe\u3002<\/li>\n\n\n\n<li>\u5728\u6bcf\u4e2a\u56fe\u8868\u4e2d\u6dfb\u52a0\u57fa\u7ebf\uff0c\u4ee5\u76f4\u89c2\u663e\u793a \"\u597d\u5929\u6c14 \"\u6761\u4ef6\u3002<\/li>\n\n\n\n<li>\u5728\u56fe\u8868\u4e0a\u6807\u51fa\u6700\u4f73\u65c5\u884c\u6708\u4efd\u3002<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>5. \u6253\u5370\u7ed3\u679c<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8f93\u51fa\u6700\u9002\u5408\u65c5\u884c\u7684\u6708\u4efd\u4ee5\u53ca\u6bcf\u4e2a\u6708\u4efd\u7684 \"\u597d\u5929\u6c14 \"\u5929\u6570\u3002\u5728\u4e0b\u9762\u7684\u8f93\u51fa\u4e2d\uff0c\u60a8\u53ef\u4ee5\u770b\u5230\u4e00\u6708\u3001\u5341\u4e00\u6708\/\u5341\u4e8c\u6708\u3001\u4e8c\u6708\u548c\u4e09\u6708\u7684\u597d\u5929\u6c14\u5929\u6570\u4f9d\u6b21\u6700\u591a\u3002<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"211\" height=\"141\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/12\/image-1-12.jpg\" alt=\"\" class=\"wp-image-4010\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/12\/image-1-12.jpg 211w, https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/12\/image-1-12-18x12.jpg 18w\" sizes=\"(max-width: 211px) 100vw, 211px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n<style>.kb-image4002_8d329f-23 .kb-image-has-overlay:after{opacity:0.3;border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;}.kb-image4002_8d329f-23 img.kb-img, .kb-image4002_8d329f-23 .kb-img img{border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}<\/style>\n<div class=\"wp-block-kadence-image kb-image4002_8d329f-23\"><figure class=\"aligncenter size-medium_large\"><img decoding=\"async\" width=\"768\" height=\"526\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/12\/\uc81c\uc8fc\ub3c4-\uc5ec\ud589\ud558\uae30-\uc88b\uc740-\ub2ec-\uadf8\ub9bc-768x526.webp\" alt=\"\uc81c\uc8fc\ub3c4 \uc5ec\ud589\ud558\uae30 \uc88b\uc740 \ub2ec \uadf8\ub9bc2\" class=\"kb-img wp-image-4009\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/12\/\uc81c\uc8fc\ub3c4-\uc5ec\ud589\ud558\uae30-\uc88b\uc740-\ub2ec-\uadf8\ub9bc-768x526.webp 768w, https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/12\/\uc81c\uc8fc\ub3c4-\uc5ec\ud589\ud558\uae30-\uc88b\uc740-\ub2ec-\uadf8\ub9bc-300x205.webp 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/12\/\uc81c\uc8fc\ub3c4-\uc5ec\ud589\ud558\uae30-\uc88b\uc740-\ub2ec-\uadf8\ub9bc-600x411.webp 600w, https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/12\/\uc81c\uc8fc\ub3c4-\uc5ec\ud589\ud558\uae30-\uc88b\uc740-\ub2ec-\uadf8\ub9bc-18x12.webp 18w, https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/12\/\uc81c\uc8fc\ub3c4-\uc5ec\ud589\ud558\uae30-\uc88b\uc740-\ub2ec-\uadf8\ub9bc.webp 1500w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/><figcaption>(\u67e5\u770b\u6d4e\u5dde\u5c9b\u6700\u4f73\u65c5\u6e38\u6708\u4efd\uff09<\/figcaption><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u524d\u5f80\u6d4e\u5dde\u5c9b\u7684\u6700\u4f73\u6708\u4efd\u7ed3\u679c<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u73b0\u5728\uff0c\u662f\u65f6\u5019\u770b\u770b\u7ed3\u679c\u4e86\uff01\u4ece\u56fe\u4e2d\u53ef\u4ee5\u770b\u51fa\uff0c\u6700\u9002\u5408\u524d\u5f80\u6d4e\u5dde\u5c9b\u65c5\u6e38\u7684\u6708\u4efd\u975e\u5e38\u7a81\u51fa\u3002 \u987a\u4fbf\u8bf4\u4e00\u4e0b\uff0c\u6bcf\u4e2a\u6708\u4efd\u7684\u5e73\u5747\u6c14\u6e29\u4f3c\u4e4e\u4e0e\u6211\u4eec\u7684\u60c5\u51b5\u6709\u4e9b\u4e0d\u540c\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. \u5404\u6708\u5e73\u5747\u6c14\u6e29\uff08\u7b2c\u4e00\u5f20\u56fe\uff09<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u9002\u5408\u65c5\u884c\u7684\u6e29\u5ea6\u8303\u56f4\uff1a20\u00b0C \u81f3 28\u00b0C\uff08\u7528\u7ea2\u8272\u865a\u7ebf\u6807\u51fa\uff09<\/li>\n\n\n\n<li>\u7ed3\u679c\n<ul class=\"wp-block-list\">\n<li>2024 <strong>\u4e00\u6708\u4efd<\/strong>, <strong>\u4e8c\u6708<\/strong>, <strong>\u4e09\u6708\u4efd<\/strong>, <strong>\u5341\u4e00\u6708<\/strong>, <strong>\u5341\u4e8c\u6708<\/strong>\u5728\u6b64\u8303\u56f4\u5185\u3002<\/li>\n\n\n\n<li><s>\u7279\u522b\u662f <strong>\u5341\u4e8c\u6708<\/strong>\u548c <strong>\u4e00\u6708\u4efd<\/strong>\u662f 24\u00b0C \u5de6\u53f3\u7684\u8212\u9002\u6e29\u5ea6\u3002<\/s><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2. \u5404\u6708\u5e73\u5747\u98ce\u901f\uff08\u7b2c\u4e8c\u5f20\u56fe\uff09<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u884c\u9a76\u98ce\u901f\u9608\u503c\uff1a\u5c0f\u4e8e 15 \u516c\u91cc\/\u5c0f\u65f6\uff08\u7ea2\u8272\u865a\u7ebf\u8868\u793a\uff09<\/li>\n\n\n\n<li>\u7ed3\u679c\n<ul class=\"wp-block-list\">\n<li>\u5728\u98ce\u901f\u5c0f\u4e8e\u6216\u7b49\u4e8e 15 \u516c\u91cc\/\u5c0f\u65f6\u7684\u6708\u4efd\u91cc <strong>2023 \u5e74 12 \u6708<\/strong>, <strong>2024 \u5e74 1 \u6708<\/strong>, <strong>\u4e8c\u6708<\/strong>, <strong>\u5341\u4e00\u6708<\/strong>, <strong>\u5341\u4e8c\u6708<\/strong>\u662f<\/li>\n\n\n\n<li>\u7279\u522b\u662f <strong>\u5341\u4e00\u6708<\/strong>\u548c <strong>\u5341\u4e8c\u6708<\/strong>\u98ce\u901f\u6700\u4f4e\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3. \u6bcf\u6708\u5e73\u5747\u4e91\u91cf\uff08\u7b2c\u4e09\u5e45\u56fe\uff09<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u65c5\u884c\u7684\u4e91\u91cf\u9608\u503c\uff1a\u5c0f\u4e8e 501 TP3T\uff08\u7ea2\u8272\u865a\u7ebf\u8868\u793a\uff09<\/li>\n\n\n\n<li>\u7ed3\u679c\n<ul class=\"wp-block-list\">\n<li>\u5728\u4e91\u91cf\u5c11\u4e8e 501 TP3T \u7684\u6708\u4efd\u91cc <strong>2023 \u5e74 12 \u6708<\/strong>, <strong>2024 \u5e74 1 \u6708<\/strong>, <strong>\u4e8c\u6708<\/strong>, <strong>\u4e09\u6708\u4efd<\/strong>, <strong>\u5341\u4e00\u6708<\/strong>, <strong>\u5341\u4e8c\u6708<\/strong>\u662f<\/li>\n\n\n\n<li><strong>\u4e00\u6708\u4efd<\/strong>, <strong>\u4e8c\u6708<\/strong>, <strong>\u4e09\u6708\u4efd<\/strong>\u5929\u6c14\u683c\u5916\u6674\u6717\uff0c\u4e91\u91cf\u6781\u5c11\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u603b\u7ed3<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u867d\u7136\u8fd8\u6709\u5176\u4ed6\u56e0\u7d20\u9700\u8981\u8003\u8651\uff0c\u5982\u4e2a\u4eba\u559c\u597d\u548c\u7279\u6b8a\u4e8b\u4ef6\uff0c\u4f46\u8fd9\u4e9b\u6570\u636e\u5e94\u8be5\u53ef\u4ee5\u5e2e\u52a9\u60a8\u8ba1\u5212\u884c\u7a0b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u60a8\u6b63\u8ba1\u5212\u524d\u5f80\u6d4e\u5dde\u5c9b\u65c5\u884c\uff0c\u8bf7\u53c2\u8003\u8fd9\u4e9b\u5efa\u8bae\uff0c\u5145\u5206\u5229\u7528\u60a8\u7684\u65f6\u95f4\uff01\u5e0c\u671b\u60a8\u5728\u6d4e\u5dde\u5c9b\u5ea6\u8fc7\u6109\u5feb\u7684\u65c5\u7a0b\uff0c\u6211\u4eec\u5c06\u4e3a\u60a8\u63d0\u4f9b\u66f4\u591a\u65c5\u884c\u5efa\u8bae\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6709\u5173\u4f7f\u7528\u5e94\u7528\u7a0b\u5e8f\u63a5\u53e3\u5206\u6790\u548c\u53ef\u89c6\u5316\u6570\u636e\u7684\u53e6\u4e00\u4e2a\u4f8b\u5b50\uff0c\u8bf7\u67e5\u770b <a href=\"https:\/\/secondlife.lol\/zh\/30-day-bitcoin-usd-chart-python-cryptocompare-api\/\" data-type=\"post\" data-id=\"3557\">\u4f7f\u7528 Python \u548c CryptoCompare API \u5206\u6790 30 \u5929\u6bd4\u7279\u5e01\u7f8e\u5143\u56fe\u8868<\/a>\u4e86\u89e3\u66f4\u591a\u4fe1\u606f\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"># \u4ee3\u7801\u8bf4\u660e<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>\u5bfc\u5165\u8bf7\u6c42\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom datetime import datetime, timedelta\nfrom time import sleep<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5bfc\u5165\u6240\u9700\u7684\u5e93\uff1arequests \u7528\u4e8e API \u8bf7\u6c42\uff0cpandas \u7528\u4e8e\u6570\u636e\u5904\u7406\uff0cmatplotlib \u7528\u4e8e\u53ef\u89c6\u5316\uff0cdatetime \u7528\u4e8e\u65e5\u671f\u5904\u7406\uff0ctime \u7528\u4e8e API \u8bf7\u6c42\u4e4b\u95f4\u7684\u5ef6\u8fdf\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>api_key = 'YOUR_API_KEY'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bbe\u7f6e\u7531 WeatherAPI.com \u53d1\u5e03\u7684 API \u5bc6\u94a5\u3002\u5728\u5b9e\u9645\u4f7f\u7528\u65f6\uff0c\u60a8\u9700\u8981\u7528\u81ea\u5df1\u7684 API \u5bc6\u94a5\u6765\u66ff\u6362\u5b83\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>full_weather_data = []<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u521d\u59cb\u5316\u4e00\u4e2a\u7a7a\u5217\u8868\uff0c\u7528\u4e8e\u5b58\u50a8\u6c14\u8c61\u6570\u636e\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>end_date = datetime.now()\nstart_date = end_date - timedelta(days=365)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bbe\u7f6e\u6570\u636e\u6536\u96c6\u671f\u3002\u8fd9\u5305\u62ec\u4ece\u5f53\u524d\u65e5\u671f\u5230\u4e00\u5e74\u524d\u7684\u65f6\u95f4\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>for date in pd.date_range(start=start_date, end=end_date)\uff1a<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u8bbe\u5b9a\u65f6\u95f4\u5185\u6309\u65e5\u671f\u91cd\u590d\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    url = f \"http:\/\/api.weatherapi.com\/v1\/history.json?key={api_key}&amp;q=Jeju&amp;dt={date.strftime('%Y-%m-%d')}\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e3a\u6bcf\u4e2a\u65e5\u671f\u521b\u5efa\u4e00\u4e2a API \u8bf7\u6c42 URL\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    try\uff1a\n        response = requests.get(url)\n        if response.status_code == 200\uff1a<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5411 API \u53d1\u9001\u8bf7\u6c42\u5e76\u9a8c\u8bc1\u54cd\u5e94\u662f\u5426\u6210\u529f\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>            data = response.json()\n            forecast_day = data['forecast']['forecastday'][0]['day']<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5c06\u54cd\u5e94\u6570\u636e\u89e3\u6790\u4e3a JSON \u683c\u5f0f\uff0c\u5e76\u63d0\u53d6\u6240\u9700\u7684\u6bcf\u65e5\u9884\u62a5\u6570\u636e\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>            full_weather_data.append({\n                date': date.strftime('%Y-%m-%d')\u3001\n                \u6e29\u5ea6forecast_day['avgtemp_c']\u3001\n                \u98ce\u901fforecast_day['maxwind_kph']\u3001\n                \u4e91\u91cf\u9884\u6d4b\u65e5['avghumidity']\u3002\n            })<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5c06\u63d0\u53d6\u7684\u6570\u636e\u4ee5\u5b57\u5178\u5f62\u5f0f\u6dfb\u52a0\u5230 full_weather_data \u5217\u8868\u4e2d\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>            print(f\"{date.strftime('%Y-%m-%d')} \u7684\u6570\u636e\u5df2\u6210\u529f\u6dfb\u52a0\")\n        else\uff1a\n            print(f \"Failed to fetch data for {date.strftime('%Y-%m-%d')}.\u72b6\u6001\u4ee3\u7801\uff1a{response.status_code}\")\n\n    except Exception as e\uff1a\n        print(f \"Error occurred while requesting data for {date.strftime('%Y-%m-%d')}\uff1a{e}\")<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8f93\u51fa\u6570\u636e\u6dfb\u52a0\u6210\u529f\u4e0e\u5426\uff0c\u5982\u679c\u5931\u8d25\u5219\u8f93\u51fa\u9519\u8bef\u4fe1\u606f\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    sleep(1)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6bcf\u6b21\u8bf7\u6c42\u4e4b\u95f4\u7b49\u5f85 1 \u79d2\uff0c\u4ee5\u8003\u8651 API \u8bf7\u6c42\u9650\u5236\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>df = pd.DataFrame(full_weather_data)\ndf['date'] = pd.to_datetime(df['date'])<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5c06\u6536\u96c6\u5230\u7684\u6570\u636e\u8f6c\u6362\u4e3a pandas DataFrame\uff0c\u5e76\u5c06\u65e5\u671f\u5217\u8f6c\u6362\u4e3a\u65e5\u671f\u65f6\u95f4\u683c\u5f0f\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>df['good_weather'] = (df['temp'].between(20, 28) &amp; (df['wind_peed'] &lt; 15)\n                      (df[&#039;wind_speed&#039;] &lt; 15) &amp;\n                      (df[&#039;cloud_cover&#039;] &lt; 50))<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b9a\u4e49 \"\u597d\u5929\u6c14 \"\u6761\u4ef6\uff0c\u5e76\u5bf9\u6bcf\u4e2a\u65e5\u671f\u8fdb\u884c\u8bc4\u4f30\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>monthly_data = df.groupby(df['date'].dt.to_period('M')).agg({\n    \u6e29\u5ea6\"\uff1a\"\u5e73\u5747\u503c\n    wind_speed': 'mean'\u3001\n    cloud_cover': 'mean'\u3001\n    \u597d\u5929\u6c14\"\uff1a\"\u603b\u548c\n}).reset_index()\n\nmonthly_data['date'] = monthly_data['date'].dt.to_timestamp()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8ba1\u7b97\u6708\u5e73\u5747\u6570\u636e\uff0c\u5e76\u7edf\u8ba1\u6ee1\u8db3 \"\u5929\u6c14\u826f\u597d \"\u6761\u4ef6\u7684\u5929\u6570\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>plt.figure(figsize=(15, 12))<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bbe\u7f6e\u6574\u4e2a\u56fe\u5f62\u7684\u5927\u5c0f\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>best_months = monthly_data[monthly_data['good_weather']]>0]\u3002<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u9009\u62e9\u81f3\u5c11\u6709\u4e00\u5929 \"\u5929\u6c14\u826f\u597d \"\u7684\u6708\u4efd\u4f5c\u4e3a \"\u6700\u4f73\u6708\u4efd\"\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0b\u9762\u7684\u4ee3\u7801\u4f1a\u521b\u5efa\u4e09\u4e2a\u5b50\u56fe\uff08\u6e29\u5ea6\u3001\u98ce\u901f\u548c\u4e91\u91cf\uff09\uff0c\u5728\u6bcf\u4e2a\u5b50\u56fe\u4e0a\u7ed8\u5236\u6570\u636e\uff0c\u5e76\u663e\u793a \"\u6700\u4f73\u6708\u4efd\"\u3002\u6700\u540e\uff0c\u663e\u793a\u56fe\u8868\u5e76\u8f93\u51fa \"\u6700\u4f73\u6708\u4efd \"\u4fe1\u606f\u3002<\/p>\n<\/blockquote>","protected":false},"excerpt":{"rendered":"<p>\u60a8\u597d\uff0c\u65c5\u6e38\u7231\u597d\u8005\u4eec\uff01\u60a8\u8ba1\u5212\u53bb\u6d4e\u5dde\u5c9b\u65c5\u6e38\u5417\uff1f\u554a\uff0c\u90a3...<\/p>","protected":false},"author":3,"featured_media":4007,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[3],"tags":[614,616,613,617,615],"class_list":["post-4002","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python-coding","tag-614","tag-616","tag-613","tag-617","tag-615"],"taxonomy_info":{"category":[{"value":3,"label":"\ud30c\uc774\uc36c(Python)"}],"post_tag":[{"value":614,"label":"\ub0a0\uc528\ub370\uc774\ud130\ubd84\uc11d"},{"value":616,"label":"\uc5ec\ud589\uacc4\ud68d"},{"value":613,"label":"\uc81c\uc8fc\ub3c4\uc5ec\ud589"},{"value":617,"label":"\ucd5c\uc801\uc5ec\ud589\uc2dc\uae30"},{"value":615,"label":"\ud30c\uc774\uc36c\uc2dc\uac01\ud654"}]},"featured_image_src_large":["https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/12\/\uc81c\uc8fc\ub3c4-\uc5ec\ud589\ud558\uae30-\uc88b\uc740-\ub2ec-\ud3ec\uc2a4\ud2b8-\uc378\ub124\uc77c-600x600.jpg",600,600,true],"author_info":{"display_name":"TERE","author_link":"https:\/\/secondlife.lol\/zh\/author\/tere\/"},"comment_info":0,"category_info":[{"term_id":3,"name":"\ud30c\uc774\uc36c(Python)","slug":"python-coding","term_group":0,"term_taxonomy_id":3,"taxonomy":"category","description":"","parent":20,"count":119,"filter":"raw","cat_ID":3,"category_count":119,"category_description":"","cat_name":"\ud30c\uc774\uc36c(Python)","category_nicename":"python-coding","category_parent":20}],"tag_info":[{"term_id":614,"name":"\ub0a0\uc528\ub370\uc774\ud130\ubd84\uc11d","slug":"%eb%82%a0%ec%94%a8%eb%8d%b0%ec%9d%b4%ed%84%b0%eb%b6%84%ec%84%9d","term_group":0,"term_taxonomy_id":614,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":616,"name":"\uc5ec\ud589\uacc4\ud68d","slug":"%ec%97%ac%ed%96%89%ea%b3%84%ed%9a%8d","term_group":0,"term_taxonomy_id":616,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":613,"name":"\uc81c\uc8fc\ub3c4\uc5ec\ud589","slug":"%ec%a0%9c%ec%a3%bc%eb%8f%84%ec%97%ac%ed%96%89","term_group":0,"term_taxonomy_id":613,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":617,"name":"\ucd5c\uc801\uc5ec\ud589\uc2dc\uae30","slug":"%ec%b5%9c%ec%a0%81%ec%97%ac%ed%96%89%ec%8b%9c%ea%b8%b0","term_group":0,"term_taxonomy_id":617,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":615,"name":"\ud30c\uc774\uc36c\uc2dc\uac01\ud654","slug":"%ed%8c%8c%ec%9d%b4%ec%8d%ac%ec%8b%9c%ea%b0%81%ed%99%94","term_group":0,"term_taxonomy_id":615,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"}],"_links":{"self":[{"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/posts\/4002","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/comments?post=4002"}],"version-history":[{"count":7,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/posts\/4002\/revisions"}],"predecessor-version":[{"id":4013,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/posts\/4002\/revisions\/4013"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/media\/4007"}],"wp:attachment":[{"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/media?parent=4002"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/categories?post=4002"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/tags?post=4002"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}