Skip to content

Instantly share code, notes, and snippets.

@DiegoHernanSalazar
Created July 18, 2025 20:08
Show Gist options
  • Select an option

  • Save DiegoHernanSalazar/7d3074768a1103c6887e3cb762e56cd1 to your computer and use it in GitHub Desktop.

Select an option

Save DiegoHernanSalazar/7d3074768a1103c6887e3cb762e56cd1 to your computer and use it in GitHub Desktop.
DeepLearning.AI - LangChain - Tavily: Agentic Search
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"kernelspec": {
"name": "python",
"display_name": "Python (Pyodide)",
"language": "python"
},
"language_info": {
"codemirror_mode": {
"name": "python",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8"
}
},
"nbformat_minor": 5,
"nbformat": 4,
"cells": [
{
"id": "b5c54e8e-20f1-452b-babb-4bbc0db342f0",
"cell_type": "markdown",
"source": "<img src=\"https://media.licdn.com/dms/image/sync/v2/D5627AQGTZahmqVia0w/articleshare-shrink_800/articleshare-shrink_800/0/1735447634970?e=2147483647&v=beta&t=f8-WnRWXXPIOJzOk74aASHT6dfSRE-syA_kxPxjWuSM\"/>",
"metadata": {}
},
{
"id": "23f5ee11-57b7-4195-b136-b839c6dde633",
"cell_type": "markdown",
"source": "# Lesson 3: Agentic Search",
"metadata": {}
},
{
"id": "4a838138-593a-4607-a911-44d551068867",
"cell_type": "code",
"source": "### libraries ###\n\n# Loads environment variables from a file called '.env'. \n# This function does not return data directly, \n# but loads the variables into the runtime environment.\nfrom dotenv import load_dotenv\n\n# Provides a way to interact with the operating system (os)\nimport os\n\n# Import 'TavilyClient' function to interact with the 'Tavily API',\n# which performs web searches.\nfrom tavily import TavilyClient\n\n# load environment variables from a '.env' file into the \n# current directory or process's environment\n# This is our OpenAI API key\n_ = load_dotenv()\n\n# Create initial connection to 'Tavily API' \n# using a \"TAVILY_API_KEY\" from the environment variable (at os), \n# via 'TavilyClient' function, creating a 'client(obj)'\nclient = TavilyClient(api_key=os.environ.get(\"TAVILY_API_KEY\"))",
"metadata": {
"trusted": true
},
"outputs": [],
"execution_count": null
},
{
"id": "e09d3e04-8097-4d82-84c4-21cb14b2d7be",
"cell_type": "code",
"source": " Use 'client(obj)' to run a web search with 'Search Tool()/Function()'\n# query = \"What is in Nvidia's new Blackwell GPU?\"\n# Get 'Search Tool()/Function()' dict result={\"answer\":'string response'}\nresult = client.search(\"What is in Nvidia's new Blackwell GPU?\",\n include_answer=True)\n\n# Select the \"answer\" key and print the \"answer\" value\n# as a 'string response', returned from 'Search Tool()/Function()' \nresult[\"answer\"]\n",
"metadata": {
"trusted": true
},
"outputs": [],
"execution_count": null
},
{
"id": "f5507224-02c0-4508-be9e-f668fb761d7f",
"cell_type": "markdown",
"source": "```\n'The Blackwell GPU architecture features a second-generation Transformer Engine, advanced NVLink, and is designed for generative AI. It includes two dies connected by a 10 TB/s interconnect.'\n```",
"metadata": {}
},
{
"id": "7c7ab0b8-62da-4234-a3cc-1028152fdb92",
"cell_type": "markdown",
"source": "## Regular search",
"metadata": {}
},
{
"id": "bb5319f4-9925-43c4-a77d-71518d12555e",
"cell_type": "code",
"source": "# choose location (try to change to your own city!)\n# Create 'city' variable for 'user' msg\ncity = \"San Francisco\"\n\n# query = 'user' msg\nquery = f\"\"\"\n what is the current weather in {city}?\n Should I travel there today?\n \"weather.com\"\n\"\"\"",
"metadata": {
"trusted": true
},
"outputs": [],
"execution_count": null
},
{
"id": "a5c3edc6-26bf-4eeb-82a2-20442c769eb4",
"cell_type": "markdown",
"source": "> Note: search was modified to return expected results in the event of an exception. High volumes of student traffic sometimes cause rate limit exceptions.",
"metadata": {}
},
{
"id": "9e40b09a-57d6-4b8e-96ee-865d51cb7f55",
"cell_type": "code",
"source": "# Make HTTP requests. This library simplifies the process of \n# sending various types of HTTP requests (GET, POST, PUT, DELETE, etc.) \n# and handling responses from web servers.\nimport requests\n\n# Facilitates the 'scraping' /Aruñado/ of information from web pages\nfrom bs4 import BeautifulSoup\n\n# Allows you to perform web searches on 'DuckDuckGo_Search' module \n# and access the results provided by this search engine.\n# The 'DDGS()' class is instantiated, \n# and then the ddg(obj) method is used to perform the search.\nfrom duckduckgo_search import DDGS\n\n# Allows you to efficiently search, manipulate and analyze 'text strings'.\nimport re\n\n# Call 'DuckDuckGO_Search()' class function(s) \n# and create/store as ddg(obj)\nddg = DDGS()\n\n# Let's try to return a regular search based on input 'query'\n# = 'user' msg, and get the links 'max_results = 6'\ndef search(query, max_results=6):\n \n # The 'try' block is used to check some code for errors i.e \n # the code inside the 'try' block will execute \n # when there is no error in the program.\n try:\n\n # Use 'ddg.text()' function to obtain a response \n # for 'query' = 'user' msg \n results = ddg.text(query, max_results=max_results)\n \n # Pass each 'result{}' dict from '{results}' dict as 'i'\n # and pick \"href\" key at each result=i -> \n # 'result[\"href\"] = i[\"href\"]'\n return [i[\"href\"] for i in results]\n \n # When there's an ERROR in 'try' block of code -> high deeplearning.ai traffic volume \n # raise an Exception = e \n except Exception as e:\n \n # print(\"Error...\")\n print(f\"returning previous results due to exception reaching ddg.\")\n \n # results = [weather_link1, weather_link2] when DuckDuckGO_Search rate is limited\n # due to high deeplearning.ai traffic volume\n results = [ # cover case where DDG rate limits due to high deeplearning.ai volume\n \"https://weather.com/weather/today/l/USCA0987:1:US\",\n \"https://weather.com/weather/hourbyhour/l/54f9d8baac32496f6b5497b4bf7a277c3e2e6cc5625de69680e6169e7e38e9a8\",\n ]\n\n # return the results List of Links \n return results \n\n# Call previously created 'search('query')' function\n# and pass its found weather links from 'try' \n# or its default weather links from 'Exception=e' \nfor i in search(query):\n \n # Print each i-th weather link, whether found or default\n print(i)",
"metadata": {
"trusted": true
},
"outputs": [],
"execution_count": null
},
{
"id": "08d4858c-b002-415a-8f3b-40964bbc4d96",
"cell_type": "markdown",
"source": "```\nreturning previous results due to exception reaching ddg.\nhttps://weather.com/weather/today/l/USCA0987:1:US\nhttps://weather.com/weather/hourbyhour/l/54f9d8baac32496f6b5497b4bf7a277c3e2e6cc5625de69680e6169e7e38e9a8\n```",
"metadata": {}
},
{
"id": "f8b2b551-73ce-40a4-9f35-49fb43bf43a3",
"cell_type": "code",
"source": "def scrape_weather_info(url):\n \n \"\"\"Scrape content from the given URL\"\"\"\n if not url:\n return \"Weather information could not be found.\"\n \n # Create a dict = {'key':value} \n # 'key' = 'User-Agent'\n # value = 'Mozilla/5.0'\n # Setting the 'User-Agent' as 'Mozilla/5.0' mimics a common \n # web browser, which is important to prevent websites \n # from blocking or rejecting the request\n headers = {'User-Agent': 'Mozilla/5.0'}\n \n # Search for data at a given 'url', using as 'User-Agent' \n # a mimic of web browser -> 'Mozilla/5.0'\n response = requests.get(url, headers=headers)\n \n # When 'response.status_code' is different to 200, it can't \n # retrieve HTML info from url, by doing web scraping\n if response.status_code != 200:\n \n # Display a \"Failed msg\"\n return \"Failed to retrieve the webpage.\"\n\n # When 'response.status_code' is 200, retrieve HTML info from url\n # so perform web scraping (parse/analyze sintactic of response)\n # Analyze the content of response as ’text’ -> 'response.text' \n # (and translate into <HTML> format) using the \n # 'html.parser' parser. This allows you to navigate the document \n # structure and extract specific information, such as links, \n # text, or <HTML> element attributes. \n # It is a fundamental tool for web scraping. \n soup = BeautifulSoup(response.text, 'html.parser')\n \n # Return <HTML table> called 'soup' which contains \n # info extracted from 'url' webpage\n return soup",
"metadata": {
"trusted": true
},
"outputs": [],
"execution_count": null
},
{
"id": "afeaa80c-3bdf-4772-8a0b-9f3a4a3be9fd",
"cell_type": "markdown",
"source": "> Note: This produces a long output, you may want to right click and clear the cell output after you look at it briefly to avoid scrolling past it.",
"metadata": {}
},
{
"id": "0a691448-16fb-405e-bc7c-809156c56eda",
"cell_type": "code",
"source": "# Use 'DuckDuckGo_Search' implemented at 'search(query)' function,\n# to find websites, and select just the first element [0] \n# or web site 'url', at 'result' list [].\nurl = search(query)[0]\n\n# Scrape first 'url' wesbsite \"https://.....\" using\n# 'scrape_weather_info(url)' function, to obtain <HTML> table or 'soup'\nsoup = scrape_weather_info(url)\n\n# Print \"https://.....\" website url \nprint(f\"Website: {url}\\n\\n\")\n\n# Display ALL the <body> at <HTML> soup as 'str', and\n# display just from [0:50000] strings or outputs. (limit long outputs)\nprint(str(soup.body)[:50000])",
"metadata": {
"trusted": true
},
"outputs": [],
"execution_count": null
},
{
"id": "77ef4b19-811c-48e8-9b0a-79a5ee0e4646",
"cell_type": "markdown",
"source": "```\nreturning previous results due to exception reaching ddg.\nWebsite: https://weather.com/weather/today/l/USCA0987:1:US\n\n\n<body><div class=\"appWrapper DaybreakLargeScreen LargeScreen lightTheme twcTheme DaybreakLargeScreen--appWrapper--ZkDop gradients--cloudyFoggyDay--lBhxD gradients--cloudyFoggyDay-top---jGZr\" id=\"appWrapper\"><div class=\"region-meta\"><div class=\"removeIfEmpty\" id=\"WxuHtmlHead-meta-\"></div><div class=\"removeIfEmpty\" id=\"WxuNewsroom-meta-bc9f40d5-d941-4fd8-bae2-2d8d63a38bb3\"></div></div><div class=\"regionHeaderWrapper DaybreakLargeScreen--stickyHeader--0Pgu8\"><div class=\"regionHeaderInnerWrapper\"><div class=\"adsSectionOuterWrapper\"><div class=\"adsSectionInnerWrapper\"><div class=\"stickyAdPlaceholder\"></div><div class=\"js-branded-background-ads\" id=\"labBG\"></div><div class=\"js-branded-background-ads\" id=\"wx-hero-content\"></div><div class=\"region-stickyAds regionStickyAds\"><div class=\"removeIfEmpty\" id=\"WxuAd-stickyAds-50b69813-b340-4d89-a22d-016d4b682491\"><div class=\"adWrapper BaseAd--adWrapper--ANZ1O BaseAd--hide--hCG8L\"><div class=\"adLabel BaseAd--adLabel--JGSp6\">Advertisement</div><div class=\"ad_module BaseAd--ad_module--ajh9S subs-undefined BaseAd--placeholder--ofteC\" id=\"WX_WindowShade\"></div></div></div><div class=\"removeIfEmpty\" id=\"WxuAd-stickyAds-53dce052-5465-4609-a555-c3a20ab64ab0\"><div class=\"adWrapper BaseAd--adWrapper--ANZ1O BaseAd--card--cqv7t BaseAd--hide--hCG8L\"><div class=\"adLabel BaseAd--adLabel--JGSp6\">Advertisement</div><div class=\"ad_module BaseAd--ad_module--ajh9S subs-undefined BaseAd--placeholder--ofteC\" id=\"WX_Hidden\"></div></div></div><div class=\"removeIfEmpty\" id=\"WxuAd-stickyAds-fe926b10-58bc-448a-ab09-47e692334250\"><div class=\"adWrapper BaseAd--adWrapper--ANZ1O BaseAd--card--cqv7t BaseAd--hide--hCG8L\"><div class=\"adLabel BaseAd--adLabel--JGSp6\">Advertisement</div><div class=\"ad_module BaseAd--ad_module--ajh9S subs-undefined BaseAd--placeholder--ofteC\" id=\"MW_Interstitial\"></div></div></div></div></div></div><div class=\"region-header regionHeader gradients--cloudyFoggyDay-top---jGZr\" id=\"regionHeader\"><div class=\"removeIfEmpty\" id=\"WxuHeaderLargeScreen-header-9944ec87-e4d4-4f18-b23e-ce4a3fd8a3ba\"><header aria-label=\"Menu\" class=\"MainMenuHeader--MainMenuHeader--RBoq7 HeaderLargeScreen--HeaderLargeScreen--HPtiq gradients--cloudyFoggyDay-top---jGZr\" role=\"banner\"><div class=\"MainMenuHeader--wrapper--TVg8M\"><div class=\"MainMenuHeader--wrapperLeft--frN1-\"><a class=\"MainMenuHeader--accessibilityLink--bQU4R Button--secondary--dT8G-\" href=\"#MainContent\" target=\"_self\">Skip to Main Content</a><a class=\"MainMenuHeader--accessibilityLink--bQU4R Button--secondary--dT8G-\" href=\"https://www.essentialaccessibility.com/the-weather-channel?utm_source=theweatherchannelhomepage&amp;utm_medium=iconlarge&amp;utm_term=eachannelpage&amp;utm_content=header&amp;utm_campaign=theweatherchannel\" target=\"_self\">Accessibility Help</a><a class=\"Button--default--osTe5 Button--iconOnly--U4gWX\" href=\"/\" target=\"_self\"><span aria-label=\"The Weather Company - Home\" class=\"Icon--iconWrapper--vSeDL\"><svg aria-label=\"The Weather Company - Home\" class=\"MainMenuHeader--twcLogo--MHMAp Icon--icon--ySD-o Icon--lightTheme--Mqfrs\" fill=\"currentColor\" name=\"twc-logo-tm\" viewbox=\"0 0 432.96 399.36\" xmlns=\"http://www.w3.org/2000/svg\">\n<title>The Weather Channel</title>\n<path d=\"M152.48 347.3c0 4.02 2.48 6.71 5.9 6.71 2.51 0 5.01-1.3 7.01-3.52l.21-11.03h-.62c-9.31 0-12.5 1.74-12.5 7.84zM165.2 144c0-3.81-.4-5.81-1.61-7.72-1.3-1.99-3.2-3.01-5.9-3.01-5.12 0-8.04 4.02-8.04 11.13v.19h15.54V144h.01zm7.82 109.49c0 4.01 2.52 6.72 5.94 6.72 2.5 0 5.01-1.32 7.01-3.52l.21-11.03h-.6c-9.34.01-12.56 1.73-12.56 7.83zm-34.34-17.25c0-3.81-.41-5.8-1.6-7.7-1.32-2.02-3.22-3.03-5.94-3.03-5.11 0-8 4.03-8 11.14v.19h15.53v-.6h.01zM316 319.32c-5.1 0-8.01 4.02-8.01 11.15v.19h15.54v-.59c0-3.82-.39-5.83-1.59-7.72-1.32-2.02-3.22-3.03-5.94-3.03z\" fill=\"currentColor\"></path>\n<path d=\"M372.65 228.54c-1.33-.7-2.41-1.01-3.91-1.01-3.02 0-5.74 1.4-8.21 4.3v36.3h-13.46v-34.3c0-6.9-.8-12.13-1.9-15.02l12.02-3.24c1.21 2.11 1.9 4.44 2.12 7.32 1.92-2.59 5.09-5.4 7.63-6.51 1.1-.49 2.9-.81 4.38-.81 2.02 0 2.92.2 5.03 1.11l-3.7 11.86zM360.2 363.13c-5.73 0-10.32-2.69-11.94-7.03-1.01-2.59-1.21-4.18-1.21-11.5v-38.29c0-6.72-.19-10.82-.69-15.45l13.73-3.11c.5 2.81.71 6.14.71 13.33v40c0 8.82.1 10.02.88 11.42.5.89 1.62 1.39 2.72 1.39.5 0 .79 0 1.49-.18l2.3 8.02c-2.29.9-5.08 1.4-7.99 1.4zm-22.42-116.48h-29.67v.44c0 7.91 3.91 12.41 10.83 12.41 4.61 0 8.92-1.71 13.03-5.11l5.21 8.04c-5.91 4.8-12.12 7.1-19.34 7.1-14.73 0-24.25-10.43-24.25-26.55 0-9.24 1.89-15.35 6.4-20.35 4.22-4.72 9.33-6.92 16.14-6.92 5.92 0 11.53 1.99 14.85 5.4 4.7 4.83 6.81 11.76 6.81 22.47v3.07h-.01zm-.32 93.83H307.8v.41c0 7.9 3.92 12.42 10.83 12.42 4.62 0 8.91-1.72 13.02-5.12l5.23 8.04c-5.92 4.8-12.13 7.1-19.35 7.1-14.74 0-24.26-10.43-24.26-26.55 0-9.23 1.9-15.35 6.4-20.35 4.22-4.73 9.33-6.92 16.14-6.92 5.9 0 11.53 2.01 14.84 5.42 4.71 4.8 6.81 11.73 6.81 22.43v3.12zm-50.78-72.34h-13.13v-34.5c0-5.09-1.4-7.01-5.21-7.01-3.31 0-7.63 2.01-10.62 4.73v36.78h-13.63v-59.35c0-4.82-.4-9.61-1-11.73l13.73-3.21c.59 2.81.9 7.61.9 12.52v10.22c0 1.61-.2 3.72-.2 4.32 3.51-3.31 9.31-5.52 14.54-5.52 6.51 0 11.72 2.81 13.33 7.31.99 2.94 1.3 4.63 1.3 9.54v35.9h-.01zm-2.73 93.8h-13.23v-33.38c0-5.81-1.01-7.52-4.51-7.52-2.7 0-6.22 1.82-9.31 4.62v36.28h-13.45v-37.19c0-4.41-.6-8.61-1.79-12.04l11.95-3.4c1.18 2.1 1.88 4.31 1.88 6.41 2.01-1.38 3.72-2.6 5.91-3.81 2.73-1.39 6.23-2.19 9.22-2.19 5.71 0 10.73 2.99 12.32 7.42.74 1.9 1.02 4.11 1.02 7.31v37.49h-.01zm-57.3-92.61c-6.81 0-12.23-2.99-13.83-7.52-.8-2.23-.9-3.23-.9-7.92v-27.88h-5.11v-9.21h5.11c0-5 0-8.34.5-12.13l13.64-3.4c-.5 4.69-.8 10.32-.8 15.54h12.04l-3.42 9.21h-8.61v25.78c0 6.51 1.19 8.22 5.81 8.22 1.2 0 2.41-.32 4.81-1.01l1.7 8.01c-3.94 1.61-7.43 2.31-10.94 2.31zm4.99 92.61H218.4v-33.38c0-5.81-1.01-7.52-4.51-7.52-2.7 0-6.19 1.82-9.32 4.62v36.28h-13.44v-37.19c0-4.41-.58-8.61-1.77-12.04l11.92-3.4c1.2 2.1 1.91 4.31 1.91 6.41 1.99-1.38 3.69-2.6 5.9-3.81 2.7-1.39 6.21-2.19 9.21-2.19 5.72 0 10.74 2.99 12.33 7.42.71 1.9 1.02 4.11 1.02 7.31v37.49h-.01zm-55.28-91.9c-11.45 0-17.65-5.83-17.65-16.06 0-12.03 8.31-17.63 24.63-17.63 1.01 0 1.92 0 3.01.09v-2.11c0-5.69-1.09-7.61-6-7.61-4.3 0-9.32 2.13-14.83 5.85l-5.72-9.65c2.72-1.71 4.71-2.71 8.34-4.19 5-2.12 9.32-3.01 14.02-3.01 8.61 0 14.54 3.21 16.55 8.91.69 2.1.99 3.7.89 9.22l-.29 17.26v.9c0 5.5.89 7.58 4.8 10.51l-7.11 8.22c-3.11-1.31-5.92-3.59-7.22-6.22-1 .98-2.11 2.01-3.11 2.71-2.51 1.8-6.11 2.81-10.31 2.81zm.06 94.51c-3.1-1.31-5.92-3.61-7.21-6.23-1.01 1.02-2.11 2.01-3.11 2.72-2.51 1.81-6.11 2.8-10.33 2.8-11.43 0-17.65-5.82-17.65-16.02 0-12.04 8.33-17.67 24.67-17.67 1 0 1.91 0 3.01.1v-2.08c0-5.74-1.1-7.63-6.03-7.63-4.32 0-9.34 2.11-14.83 5.82l-5.73-9.64c2.72-1.7 4.73-2.69 8.34-4.19 5.02-2.12 9.32-3.01 14.05-3.01 8.59 0 14.52 3.19 16.51 8.93.72 2.1 1.03 3.72.92 9.21l-.29 17.26v.89c0 5.52.9 7.6 4.82 10.52l-7.14 8.22zM108.4 242.98c0-9.24 1.9-15.35 6.41-20.35 4.22-4.72 9.33-6.92 16.15-6.92 5.91 0 11.54 1.99 14.84 5.4 4.72 4.83 6.83 11.76 6.83 22.47v3.08h-29.68v.44c0 7.91 3.92 12.41 10.82 12.41 4.62 0 8.91-1.71 13.03-5.11l5.22 8.04c-5.92 4.8-12.14 7.1-19.36 7.1-14.73-.01-24.26-10.44-24.26-26.56zm20.64 118.96H115.9v-34.5c0-5.1-1.4-7-5.2-7-3.31 0-7.63 1.99-10.63 4.71v36.79H86.44V302.6c0-4.83-.41-9.62-1.01-11.74l13.75-3.2c.58 2.82.89 7.62.89 12.56v10.19c0 1.6-.2 3.72-.2 4.33 3.5-3.32 9.32-5.53 14.53-5.53 6.52 0 11.71 2.81 13.32 7.33 1.01 2.92 1.32 4.61 1.32 9.54v35.86zm-69.54 1.19c-9.63 0-17.05-3.09-22.76-9.61-5.62-6.31-8.43-14.73-8.43-24.96 0-8.72 1.52-15.64 4.7-21.65 5.44-10.12 15.46-16.14 26.69-16.14 6.91 0 13.82 2.21 17.64 5.52l-6.32 9.51c-3.51-2.6-7.22-3.9-11.12-3.9-4.72 0-9.33 2.29-11.83 6.01-2.7 4-3.91 9.83-3.91 17.94 0 9.52.79 14.83 2.89 18.65 2.81 5.12 7.42 7.81 13.44 7.81 4.1 0 7.82-1.19 11.93-4.49l6.42 8.81c-5.52 4.49-11.41 6.5-19.34 6.5zM40.56 198.45l6 27.48c2.81 13.04 3.72 22.95 3.72 22.95.29-2.7 1.5-12.64 3.59-22.25l6.21-28.18h15.35l6.44 31.19c1.3 6.51 3 18.45 3 18.45.19-2.22 2.39-16.36 3.8-23.18l5.72-26.47h14.73l-16.83 70.27H76.94l-6.23-28.36c-2.1-9.32-3.11-18.34-3.29-20.24 0 0-1.2 9.82-3.34 20.05l-5.8 28.55H42.36l-16.65-70.27h14.85v.01zm-14.34-92.24h50.22l-2.3 11.64H57.5v58.04H43.25v-58.04H26.22v-11.64zm69.95-4.61c.59 2.81.9 7.62.9 12.53v10.23c0 1.58-.21 3.71-.21 4.31 3.51-3.31 9.32-5.53 14.53-5.53 6.52 0 11.73 2.8 13.35 7.32 1 2.9 1.3 4.61 1.3 9.53v35.89H112.9V141.4c0-5.11-1.4-7.01-5.23-7.01-3.31 0-7.61 1.99-10.61 4.71v36.79H83.44v-59.35c0-4.82-.41-9.61-1.02-11.73l13.75-3.21zm45.17 28.78c4.21-4.72 9.32-6.94 16.14-6.94 5.9 0 11.52 2.03 14.84 5.44 4.71 4.82 6.81 11.71 6.81 22.45v3.11h-29.66v.41c0 7.92 3.9 12.42 10.81 12.42 4.6 0 8.92-1.69 13.03-5.12l5.23 8.04c-5.93 4.79-12.15 7.1-19.35 7.1-14.75 0-24.27-10.43-24.27-26.54.01-9.26 1.9-15.37 6.42-20.37zM.82.04v399.28h399.26V.04H.82z\" fill=\"currentColor\"></path>\n<path d=\"M316.33 225.51c-5.11 0-8.03 4.03-8.03 11.14v.19h15.55v-.6c0-3.81-.41-5.8-1.61-7.7-1.3-2.02-3.21-3.03-5.91-3.03zm101.57-211h2.16c1.87 0 3.69-.1 3.69-2.32 0-1.91-1.65-2.13-3.08-2.13h-2.77v4.45zm-2.09-6.16h5.21c3.27 0 4.83 1.3 4.83 3.94 0 2.51-1.59 3.56-3.65 3.78l3.97 6.1h-2.25l-3.75-5.94h-2.26v5.94h-2.09V8.35h-.01zm4.51 17.03c5.4 0 9.72-4.38 9.72-10.11 0-5.72-4.32-10.11-9.72-10.11-5.43 0-9.72 4.39-9.72 10.11 0 5.73 4.28 10.11 9.72 10.11m0-21.93c6.42 0 11.82 5.08 11.82 11.82s-5.4 11.82-11.82 11.82c-6.45 0-11.82-5.08-11.82-11.82 0-6.73 5.37-11.82 11.82-11.82\" fill=\"currentColor\"></path>\n</svg>\n</span></a></div><div class=\"MainMenuHeader--wrapperRight--hvYkI\"><div class=\"Search--Search--WZQcy searchWrapper\" data-testid=\"Search\" role=\"search\"><form autocomplete=\"off\"><div class=\"SearchCombobox--Combobox--V10dt\" tabindex=\"-1\"><div class=\"SearchInput--SearchInput--sGYsi SearchInput--enableSearchIcon--fhKmm SearchInput--MainMenu--JHcxY\"><fieldset class=\"SearchInput--fieldset--GKZYD Fieldset--fieldset--HG-gW\"><legend class=\"Fieldset--legend--gAkkC Accessibility--visuallyHidden--n+vd9\">Type at least three characters to start auto complete. Recently searched locations will be displayed if there is no search query. The first option will be automatically selected. Use up and down arrows to change selection. Use escape to clear.</legend><label class=\"Accessibility--visuallyHidden--n+vd9\" for=\"headerSearch_LocationSearch_input\">Search City or Zip Code</label><input aria-autocomplete=\"list\" aria-controls=\"\" aria-expanded=\"false\" autocapitalize=\"off\" autocomplete=\"off\" class=\"SearchInput--InputField--KQ3i+ Search--inputClass--XYtnA HeaderLargeScreen--searchInputClass--wjW3e\" data-testid=\"searchModalInputBox\" disabled=\"\" id=\"headerSearch_LocationSearch_input\" placeholder=\"Search City or Zip Code\" role=\"combobox\" type=\"text\" value=\"\"/></fieldset><span class=\"Icon--iconWrapper--vSeDL\"><svg class=\"SearchInput--searchIcon--KGKb2 Icon--icon--ySD-o Icon--lightTheme--Mqfrs\" fill=\"none\" name=\"location-2\" viewbox=\"0 0 21 20\" xmlns=\"http://www.w3.org/2000/svg\">\n<path clip-rule=\"evenodd\" d=\"M8.757 3.54c2.284 0 4.142 1.866 4.142 4.16 0 2.293-1.858 4.16-4.142 4.16-2.283 0-4.141-1.867-4.141-4.16 0-2.294 1.858-4.16 4.141-4.16Zm4.467 8.18a6.016 6.016 0 0 0 1.54-4.02c0-3.327-2.694-6.034-6.007-6.034-3.312 0-6.007 2.707-6.007 6.034s2.695 6.033 6.007 6.033a5.943 5.943 0 0 0 3.023-.828l4.327 5.1a.93.93 0 0 0 1.316.104.94.94 0 0 0 .104-1.32l-4.303-5.07Z\" fill=\"currentColor\" fill-rule=\"evenodd\"></path>\n</svg>\n</span></div><div class=\"RecentLocations--container--Vn06V\" role=\"alert\"><div class=\"SearchTitle--container--+V-ia\"><h2 class=\"SearchTitle--text--Us3Z3\" data-testid=\"searchedLocTitle\">Recent Locations</h2><button class=\"Button--default--osTe5 RecentLocations--clearButton--Kia-a\" data-testid=\"clearAll\" type=\"button\">Clear All</button></div><div class=\"RecentLocations--NoResults--XJupj\">You have no recent locations</div></div></div></form></div><div class=\"LanguageSelector--LanguageSelector--+88Kw\" data-testid=\"languageSelectorSection\"><button aria-expanded=\"false\" aria-haspopup=\"menu\" aria-label=\"[object Object]\" class=\"Button--default--osTe5\" data-testid=\"ctaButton\" type=\"button\"><div class=\"LanguageSelector--menuButtonInner--CYH92\"><span class=\"Icon--iconWrapper--vSeDL\"><svg class=\"LanguageSelector--globeIcon--NnLru Icon--icon--ySD-o Icon--lightTheme--Mqfrs\" name=\"globe\" viewbox=\"0 0 24 24\"><title>Globe</title><path d=\"M14.227 8.016h-.141c-.047-.023-.352.305-.352.305s-.234.094-.258.141c0 .047-.07 0-.023.07.023.07.164.023.234-.07.094-.07.258-.117.328-.164.07-.07.094-.047.234-.117.141-.047.234-.07.188-.141-.023-.023-.07-.023-.117-.023h-.117zm-1.243-.375c-.117 0-.258.047-.328.164-.047.117 0 .305-.023.398s-.047.305.07.328c.141.023.141-.188.117-.234s-.023-.281.047-.328c.047-.047.117-.164.258-.164.141-.023.258.094.234.211s.023.234.07.234.211-.094.164-.164.047-.352.047-.258.117.164.188.141-.07-.258-.164-.258c-.094-.023-.281-.023-.328 0-.023 0-.094 0-.164-.023s-.141-.023-.188-.023h-.023zm-.679-.305c-.164.07-.234.047-.234.141 0 .07.141.07.211.047a.708.708 0 01.258-.07c.047-.023.023.07.141.07s.281.047.305.023.164-.164.047-.188c-.094-.023-.234-.117-.328-.188-.023-.023-.023-.023-.047-.023-.094 0-.234.141-.398.188zM6.68 7.242c.07.047.211.047.211.117s.047.234.117.211.07-.164.023-.211-.258-.211-.305-.211-.117-.07-.164-.094h-.023c-.07 0 .07.164.117.211zM2.953 5.555c-.141.094-.211.047-.281.117s-.281.141-.211-.023.07-.188-.047-.141-.141.141-.141.211-.188.164-.188.164.164.023.234 0 .023.141-.047.188-.164.141-.281.117-.117-.117-.188-.141c-.047 0-.094.023-.188.07A11.924 11.924 0 00.045 12c0 6.563 5.344 11.93 11.93 11.906.984 0 1.945-.141 2.859-.375a.174.174 0 01-.117-.211c.047-.141-.07-.141-.141-.211-.07-.094.094-.141.07-.188s-.141-.023-.164-.117.094-.258.117-.281c0-.047-.094-.141-.117-.188 0-.047.047-.117.164-.234.094-.094.164-.234.164-.281s-.07-.164-.07-.281c0-.094.07-.141.094-.305 0-.141-.094-.117-.094-.211 0-.117.141-.07.117-.211-.023-.117.07-.211.117-.281s.07-.211.141-.305c.047-.094-.047-.305-.047-.352s.164-.094.094-.188c-.094-.07.023-.141.117-.211.07-.07-.023-.258.047-.516.047-.234.07-.656.07-.703s0-.211-.047-.305c-.07-.117-.141-.188-.234-.234s-.211-.164-.281-.188c-.07 0-.398-.117-.398-.328 0-.188-.234-.328-.258-.469s-.211-.422-.234-.563c0-.117-.305-.164-.328-.328-.047-.164.141-.258.164-.352s-.094-.305-.117-.375c0-.047.211-.258.281-.305s.141-.211.188-.211.047-.141.094-.305c.047-.141-.023-.352-.07-.375s-.094-.188-.141-.258c-.07-.047-.188-.023-.188-.023s.023.141-.094.188c-.141.047-.164-.023-.188-.047-.047-.047-.188-.047-.258-.117s-.164-.164-.258-.188c-.07-.047-.211-.07-.188-.234 0-.164-.164-.258-.234-.281-.047-.023-.164-.094-.234-.047-.047.023-.094 0-.141-.023s-.094-.047-.141-.047c-.094 0-.281-.164-.352-.234s-.117-.164-.234-.164-.141.047-.211.141c-.094.094-.211-.07-.234-.117-.047-.047-.141-.047-.281-.047-.164 0-.258-.211-.305-.234l-.516-.258c-.094-.047-.188-.258-.141-.305s-.07-.234-.07-.234-.188-.211-.258-.211-.281-.375-.398-.492-.398-.352-.445-.469-.07-.305-.188-.211c-.141.094-.023.188.117.305s.117.211.305.352.117.305.188.352c.07.07.352.234.234.328-.117.117-.234-.141-.305-.141-.047-.023-.164-.047-.164-.117.023-.07-.094-.141-.188-.258s-.141-.047-.258-.047 0-.141.047-.211c.07-.07-.07-.164-.141-.188s-.188-.328-.305-.516-.188-.281-.305-.258-.164-.141-.258-.188c-.07-.047-.211-.305-.328-.445-.141-.141-.258-.398-.234-.539s.047-.516.047-.609-.07-.328-.07-.352c0-.047-.07-.117-.117-.117-.047-.023-.211-.211-.328-.211s-.188-.141-.164-.234c.047-.094-.117-.258-.164-.258-.07 0-.164-.164-.211-.258s-.141-.094-.117-.047 0 .141.047.164c.07.023.117.234.07.281-.047.023-.188-.094-.305-.141-.141-.07-.07-.328-.07-.398s-.188-.141-.281-.141c-.07 0-.164.023-.164-.164 0-.164-.258-.258-.328-.258-.094 0-.516-.164-.656-.164s-.375-.117-.445-.07-.234-.094-.305-.094-.07.047-.234.141zm11.203 6.703c.117-.023.211.188.047.211h-.023c-.117 0-.141-.211-.023-.234zm1.782-.141c.117-.023.211.164.047.211h-.023c-.117 0-.141-.211-.023-.234zm-.774.164c-.07-.047-.117-.094-.234-.094-.07 0-.234-.023-.234-.023s.234-.211.328-.211c.094-.023.211-.047.305-.023.117.023.281.094.281.281-.023.164-.094.023-.141.023-.023 0-.141.07-.234.07h-.047zm-2.062-.773s.328-.094.398-.094.281 0 .398.094.305.211.398.188.258.141.234.188-.234.047-.305-.023c-.07-.047-.305-.164-.375-.234-.047-.07-.352-.047-.492-.047h-.164c-.07 0-.141-.023-.117-.094zm1.007-.375c.117-.023.211.117.047.141h-.023c-.117 0-.141-.117-.023-.141zm-.375-5.86c.117-.047.164.07.094.117h-.047c-.094 0-.164-.07-.047-.117zm-.515-.093c.094-.094.234 0 .188.047 0 .023-.023.023-.07.023-.07 0-.164-.047-.141-.07zm-2.578-1.711c.07-.023.305-.047.352 0 .07.047.117.234.07.258-.047 0-.023.07-.188.164-.164.07-.211-.164-.234-.211 0-.023-.07-.023-.141 0-.047 0-.094.023-.141.023-.094 0-.141-.141-.07-.188.047-.047.141-.023.211-.023h.141zm.656.094c-.023-.07.258-.188.328-.211s.141.047.234.07c.094 0 .07.141 0 .164-.07 0-.258.023-.375.047h-.047c-.094 0-.141-.047-.141-.047zm-.024-.375c.047-.117.281-.07.305.047.023.047-.047.07-.094.07-.094 0-.234-.047-.211-.094zm-.539-.211c.164-.023.234.07.234.117s-.117.188-.234.164h-.07c-.047 0-.047 0-.094-.07-.047-.094-.328-.047-.375-.047s-.094.164-.164.188-.117-.07-.07-.07c.023-.023-.047-.211.023-.258.047-.047.281-.047.469-.023h.281zm-3.468-.071c.047 0 .398-.117.586-.141s.258.07.281.117.445.07.445.07.211.117.234.141c.047.023.141 0 .188-.047s.07-.117.211-.141.141.117.234.141c.07.023.117 0 .188-.047.094-.047.141.047.141.047s-.047.164-.047.234c0 .047-.094.07-.117.117s-.305 0-.422-.023c-.094-.023-.328-.023-.398 0s-.258.023-.328 0-.07-.141-.141-.188c-.047-.047-.188.07-.258.094s-.188-.117-.164-.188c0-.07-.258-.023-.305 0s-.234.023-.352.023-.211 0-.188-.047c.023-.07.117-.07.188-.07s-.047-.117 0-.117zm4.922.399s-.258-.07-.305-.164c-.07-.094-.305-.094-.422-.141s-.281-.117-.375-.164-.047-.188-.047-.164.188.07.305.094c.234.047.211.047.305.07s.281.164.375.211c.07.047.164.117.258.117h1.102c.07 0 .422.07.398.094s-.047.094-.211.094-.469-.023-.68-.047-.398.023-.398.023l-.281-.023zm-3.61-.586c.164-.047.305-.164.422-.164s.047.188.047.234c.023.047-.117.07-.188.047-.047-.047-.234.023-.305.023s-.094-.094 0-.141zm1.195-.117c.023-.117.141-.094.258-.117.117 0 .281 0 .422.047.164.047.141.047.211.117s.094.188.023.188-.117-.023-.258-.047c-.117-.023-.094-.047-.117-.094s-.258 0-.352 0-.188-.047-.188-.117zM3.234 3.961c.188.023.469.023.516.023s.328.094.492.047.258.023.305.047.07.023.141.094.141.023.234-.047c.094-.047.07-.117.07-.117l.094-.023c.07-.023.141.023.352.047.234.023.164-.047.328-.094a.474.474 0 01.258.023c.047.023.094.047.117.023.047-.023.117-.117.164-.07s.117.164.117.164.164-.141.211-.141.211.047.305.047c.094-.023.445-.023.539.047.07.07.281.047.398.117s.211-.047.164-.07-.188-.141-.188-.141-.211-.234-.234-.281-.07-.047-.117.07-.258.117-.492.117-.07-.117-.328-.117c-.258-.023-.164-.117-.07-.117.07 0 .141-.164.164-.258s.117-.07.305-.07h.422c.094.023.141 0 .188-.023s.094-.047.188-.023c.188.023.094.047.188.117.117.07.164.047.328.117.141.07.094.07.164.07.07.023.281-.023.422-.047s.234-.023.305.047.047.164.141.234-.047-.234-.047-.352.188-.023.305-.023.258-.047.281.023c.023.047-.188.141-.07.258s.211.164.305.164.352.023.234.164-.398.141-.492.141-.258.047-.211.141c.047.07.258.047.398.047s.609.047.727 0 .094-.188-.047-.234-.023-.117.117-.094c.07.023.117 0 .164 0s.094-.023.07 0c-.023.047.023.141.023.234 0 .117.047.164.141.141s.117-.047.211-.047c.094-.023.047-.234-.023-.352-.047-.117-.094-.188-.07-.258 0-.07.164-.07.234-.023.07.07.188.211.188.211s.164.094.211.211.07.07.188.023c.117-.07.141-.047.234.023s.023.211.023.234c0 .047.117 0 .141-.07 0-.094.141-.094.188-.117.07-.023.07-.188.07-.188s-.164-.047-.352-.023c-.164.023-.234-.023-.375-.117s-.047-.164-.117-.258.211-.141.398-.234c.164-.07.328-.023.305.164-.023.211-.047.164.141.141.164-.047-.047-.211.07-.234a2.67 2.67 0 01.398-.047c.094.023.516-.047.633-.047s.281.094.398.164c.141.07.469.164.539.211.094.047.633.117.703.141.047.023.047.188.117.328.047.141.188.047.258.047.047 0 .234.094.281.164s.445.117.445.117-.117.117-.141.164c-.047.047-.164.07-.211.117-.094.047-.164-.023-.281-.07-.094-.07-.281-.117-.328-.094s0 .07.023.117c.047.047.211.094.328.188.141.07.094.164.117.258 0 .117-.094-.047-.234-.07s-.141.117-.141.117-.164-.023-.234-.023c-.094 0 0 0-.164-.117-.07-.07-.117-.023-.141 0s-.023.047-.07.023c-.094-.047-.164-.141-.188-.117s-.07-.023-.117-.047-.094-.07-.141-.047h-.211c-.117 0-.234-.023-.281 0-.07.023-.141.023-.211.047-.094.023-.094-.188-.07-.258.047-.07.141-.07.328-.047.164.047.188 0 .234-.07s.07-.141.258-.188 0-.094-.07-.117c-.047-.023-.117-.07-.164 0s-.141.164-.141.164-.094 0-.258-.023-.047-.07.023-.094c.047-.023.141-.188.07-.234s-.094-.07-.211-.047-.047-.094-.117-.141c-.094-.047-.047.023-.047.07s-.117.047-.117.047-.188-.023-.258 0-.188.07-.141.117.164.047.211.164-.164.141-.211.164c-.047 0-.188.07-.188.07s-.164-.047-.305-.047-.164.023-.141.07.094.023.141.023.047.07.141.047c.117-.023.094-.07.211.047s.211.094.398.188-.023.211-.117.211-.094-.07-.141-.164c-.07-.07-.281.023-.281.023s-.188.094-.281.094-.164-.023-.047-.117-.141-.094-.141-.234-.047.141-.047.211c0 .047-.047.047-.117.023h-.211c-.234.023-.188.117-.492.305-.281.188-.352.234-.328.398s.094.117.211.164c.117.023.07.234.188.211.094-.023.164-.07.352.023s.281.117.516.164.375.117.492.07c.141-.023.188 0 .188.117 0 .094.094.117.07.234 0 .117.141-.117.141-.117s.07.211.023.234c-.07.023.023.141.07.141h.07c.047 0 .117.023.164-.023.07-.07-.047-.258-.047-.352 0-.07-.07-.117-.117-.211-.047-.07.094-.094.164-.023.047.07.141.023.234-.047s.094-.188.094-.188-.164-.211-.281-.258-.047-.07.07-.094 0-.07.023-.211c.047-.141.047-.234.117-.234.047 0 .305-.047.492-.023s.305.164.422.164c.141 0 .352.047.398.117s-.164.07-.047.188c.094.117.094.094.188.141s.211.023.328-.141c.094-.164.164-.164.211-.117.047.023.305.328.375.398s.188.211.211.281.188.07.258.07c.047 0 .258.141.281.234 0 .094.047.117.234.141.188.047 0 .188-.023.281-.047.07-.047.117-.117.211-.023.047-.023.047 0 .047s.047-.023.07 0c.07.047.094.094.188.07s.141 0 .188.094c.047.07.117.141.141.211s0 .164-.07.117c-.07-.07-.234-.023-.234-.023s-.094.07-.117.047c-.023-.047-.07-.094-.188-.07a.204.204 0 01-.164 0h-.117c-.094.023-.141-.047-.07-.117.07-.047.07-.258.211-.328s.094-.211 0-.211-.141.117-.188.141c-.07.023-.141.023-.258.094-.094.07-.352.047-.234.07.094.023-.164.141-.211.141-.094 0-.07-.164-.07-.234s-.117.047-.117.047-.211-.117-.281-.047-.188.117-.305.211c-.094.07-.328.211-.328.211s.094-.047.234-.07c.164-.047.141-.023.281-.094s.258-.094.375.023c.094.117-.023.188-.023.188s.047.094.117.117c.047.023.047-.023.141-.07s.047.117.07.164c.047.047.117.047.188 0 .07-.07.094-.117.141-.07s.07.141.117.234-.258.117-.328.141c-.07 0-.305.07-.352.07-.047.023-.164.141-.281.141s-.094-.164-.117-.258c0-.094-.117.023-.141.047-.023.047-.141.023-.234.047-.094 0-.258.094-.258.211s.094.164.07.211-.258.094-.352.07-.234.047-.188.094.047.141-.07.117c-.094 0-.094.094-.07.164.047.07-.117.211-.141.141-.047-.047-.117-.07-.117 0s.023.141.117.258c.07.117-.164.164-.281.258-.094.07-.398.352-.539.398s-.141.234-.07.305c.094.07.141.352.188.445s-.023.352-.141.352c-.117-.023-.07-.164-.188-.211s-.188-.281-.211-.445c-.047-.164-.07-.07-.141-.023-.094.047-.164-.117-.188-.141s-.117 0-.211 0c-.07 0-.164.023-.234.023-.164-.023-.211.07-.211.094 0 .047-.023.164-.188.07-.141-.07-.164-.07-.328-.07-.141 0-.281 0-.305.047s-.164.164-.258.188-.281.164-.188.188c.07.023.07.211.023.328s-.047.305-.023.492.188.305.328.422.211.164.352.047.211-.047.234-.023c.047.023.141-.07.117-.188-.047-.117.047-.234.188-.211.047 0 .117 0 .188-.023.07 0 .141-.023.188-.023.117 0 .141.258 0 .375-.164.117-.07.281-.094.398s-.141.141 0 .141.094.023.188.047.164-.07.281-.094c.094 0 .328.211.281.305a.983.983 0 00-.07.469c.047.164.07.164.117.234.023.047.141.164.258.117s.234-.094.281-.141.305.094.281.141c-.023.023.094.07.164.023.094-.023.117-.094.188-.211a.672.672 0 01.281-.211c.047 0 .211-.164.328-.141.094.023-.047.164-.047.234 0 .094 0 .305.047.328.07 0 .047-.164.117-.281.07-.141.211-.188.281-.188s.117.258.211.211c.094-.07.281-.047.328.023.023.07.07.117.07.117s.07-.047.07-.117c0-.094.211-.141.352-.07s.094.094.164.117c.07 0 .141-.164.164-.188.047-.023 0 .211-.094.328-.117.094.07.07.094.117.023.023.047.023.094 0 .047 0 .117 0 .141.023.047.047.164.094.234.258.094.117.211.094.375.07s.375.07.539.258c.164.164.117.305.234.305s.141.141.141.188-.234.164-.352.188c-.141 0-.141.141.07.117.211-.047.117-.117.258-.141.141-.047.258.047.164.211-.141.164-.375.164-.164.188s.094-.047.211-.188c.117-.164.117-.117.188-.117.094 0 .258.047.328.094s.234.141.352.188c.117.07.258.047.328.023s.328.07.398.188c.07.094.258.117.375.164.094.047.234.188.234.328.023.141-.141.422-.141.492-.023.047-.234.305-.422.469s-.07.352-.07.422c.023.07-.141.375-.094.445s-.047.211-.141.328c-.094.094-.141.258-.188.352-.07.094-.234.07-.398.117-.164.023-.234.07-.234.07s-.305.117-.445.234c-.164.117.047.305-.023.445s-.164.141-.234.305c-.047.117-.094.094-.117.07-.023 0-.047-.023-.07 0-.07.047-.117.141-.117.258-.023.094-.141.211-.328.375-.164.164-.281.141-.469.07-.188-.047-.164-.516-.188-.445s-.023.305.023.352c.023.047.117.211.164.234.07.047.047.117 0 .164-.047.07-.211.305-.258.328s-.469.07-.563.023c-.07-.047-.117.094-.117.188.023.094.094.164-.07.141s-.352-.117-.352-.047.047.211.117.211.164-.047.117.047-.141.164-.211.211c-.047.047-.117.164-.258.258s-.141.141-.117.188.234.023.281.047-.047.211-.094.258-.281.234-.375.281-.094.211-.047.328c4.453-1.406 7.781-5.344 8.273-10.125-.117-.094-.047-.211-.07-.328-.023-.141-.164-.188-.094-.211s.047-.094.234-.281c0-.141.023-.281.023-.422v-.094c-.047-.094-.117-.258-.023-.422a11.765 11.765 0 00-2.766-7.125 5.65 5.65 0 01-.398.047c-.094 0-.234.211-.258.258s-.328 0-.422 0-.188.117-.375.141c-.164.023-.094.141-.07.234 0 .094-.047.141-.141.117-.117-.023-.094.047-.117.117s.023.188-.094.281c-.094.07-.141.117-.258.094-.117 0-.117-.211-.141-.188-.047 0-.234.141-.281.07s-.281-.234-.375-.258c-.094-.047-.164-.188-.188-.258-.047-.07.117-.07.07-.07-.047-.023-.211-.047-.258-.094s-.141-.258-.164-.328c0-.07.141-.164.141-.211 0-.023-.141-.023-.188-.023s-.117-.141-.047-.281.211-.094.211-.094h.117c.07 0 .047.164.023.234s.047.07.094.094.07-.07.07-.117c0-.07-.117-.211-.188-.281-.047-.07-.234-.094-.258-.047s-.164.234-.211.188-.047-.445-.117-.563-.328-.141-.445-.211c-.094-.047-.492-.117-.563-.117-.023 0-.094 0-.141.023a.482.482 0 01-.258 0c-.094-.023-.094-.211-.094-.211s-.07.188-.094.234c-.047.047-.141.07-.188.047s-.164-.234-.281-.258h-.117c-.047 0-.094 0-.164-.047-.141-.117.258-.094.281-.094s.328-.07.352-.141c0-.094.094-.188.234-.141.141.023.211-.094.188-.211s.258-.234.305-.164c.047.047.281 0 .211-.117s.281-.211.609-.234.422.023.492.07.281.047.398-.023A11.889 11.889 0 0011.992.304c-3.469 0-6.586 1.5-8.766 3.867z\"></path></svg>\n</span><span class=\"LanguageSelector--LanguageSelectorStatus--bxy1o\" data-testid=\"languageSelectorStatus\">US</span><span class=\"LanguageSelector--unitDisplay--8FGMs\">°F</span><span class=\"Icon--iconWrapper--vSeDL\"><svg class=\"LanguageSelector--arrowIcon--3yZiR Icon--icon--ySD-o Icon--lightTheme--Mqfrs\" name=\"triangle-down\" style=\"width:17px\" viewbox=\"0 0 24 24\"><title>Arrow down</title><path d=\"M23.765 5.167h-23.53l11.75 13.666 11.779-13.666z\"></path></svg>\n</span></div></button><nav aria-hidden=\"true\" class=\"ExpandableMenu--ExpandableMenu--DLqTu ExpandableMenu--fullWidth--IQ-7i LanguageSelector--LanguageSelectorMenu--zgBne\" hidden=\"\" tabindex=\"-1\"><div class=\"ExpandableMenu--inner--d7mmL ExpandableMenu--bottomRoundBorder--jWs31 ExpandableMenu--outline--U4tFj ExpandableMenu--fullWidthInner--f9K1d LanguageSelector--menuInner--MBEon\"><div class=\"ExpandableMenu--innerPadding--t-XyG\"><section class=\"UnitSelector--UnitSelector--P+TRg LanguageSelector--unitSelectorContainer--rEQQ3\" data-testid=\"unitSelectorSection\"><ul aria-labelledby=\"UnitSelectorTabsLabel\" class=\"TabList--tabList--9QUOW UnitSelector--UnitSelectorTabList--pVhsa TabList--center--iDXfC\" data-testid=\"unitSelectorBar\" id=\"UnitSelectorTabs\" role=\"tablist\"><li aria-controls=\"UnitSelectorTabs-tabpanel_0\" aria-selected=\"true\" class=\"UnitSelector--UnitSelectorInactiveTab--wj0Uj TabList--tab--2mk3x TabList--default--IQyjF UnitSelector--UnitSelectorActiveTab--UrPsj undefined TabList--tabSelected--T4YuL\" data-testid=\"degreesFbutton\" id=\"UnitSelectorTabs-tab_0\" role=\"tab\" selected=\"\" tabindex=\"0\">°F</li><li aria-controls=\"UnitSelectorTabs-tabpanel_1\" aria-selected=\"false\" class=\"UnitSelector--UnitSelectorInactiveTab--wj0Uj TabList--tab--2mk3x TabList--default--IQyjF UnitSelector--UnitSelectorInactiveTab--wj0Uj\" data-testid=\"degreesCbutton\" id=\"UnitSelectorTabs-tab_1\" role=\"tab\" tabindex=\"0\">°C</li><li aria-controls=\"UnitSelectorTabs-tabpanel_2\" aria-selected=\"false\" class=\"UnitSelector--UnitSelectorInactiveTab--wj0Uj TabList--tab--2mk3x TabList--default--IQyjF UnitSelector--UnitSelectorInactiveTab--wj0Uj\" data-testid=\"hybridButton\" id=\"UnitSelectorTabs-tab_2\" role=\"tab\" tabindex=\"0\">Hybrid</li></ul><div aria-hidden=\"false\" aria-labelledby=\"UnitSelectorTabs-tab_0\" id=\"UnitSelectorTabs-tabpanel_0\" role=\"tabpanel\" theme=\"default\"><div class=\"UnitSelector--UnitSelectorPanel--GB-wb\" data-testid=\"imperialUnits\">Imperial - F / mph / miles / inches</div></div><div aria-hidden=\"true\" aria-labelledby=\"UnitSelectorTabs-tab_1\" hidden=\"\" id=\"UnitSelectorTabs-tabpanel_1\" role=\"tabpanel\" theme=\"default\"></div><div aria-hidden=\"true\" aria-labelledby=\"UnitSelectorTabs-tab_2\" hidden=\"\" id=\"UnitSelectorTabs-tabpanel_2\" role=\"tabpanel\" theme=\"default\"></div></section><div class=\"CountryList--languageSection--dx-S7\" data-testid=\"LanguageSection\"><details class=\"LanguageSelector--LanguageSection--wi4vW Disclosure--themeList--vEbAF\"><summary class=\"Disclosure--Summary--kMIqY CountryList--Summary--ZaOpZ LanguageSelector--Summary--PpuWo\"><div class=\"Disclosure--SummaryDefault--h4p1H\">Americas<span class=\"Icon--iconWrapper--vSeDL\"><svg class=\"Disclosure--SummaryIcon--ldYIx Icon--icon--ySD-o\" fill=\"none\" name=\"add\" viewbox=\"0 0 20 21\" xmlns=\"http://www.w3.org/2000/svg\">\n<title>Add</title>\n<path d=\"M10.625 9.875V5.5h-1.25v4.375H5v1.25h4.375V15.5h1.25v-4.375H15v-1.25h-4.375Z\" fill=\"currentColor\"></path>\n</svg>\n</span></div></summary><div class=\"LanguageSelector--Content--IY8mH\"><div class=\"CountryList--listContainer--CGSwd LanguageSelector--RegionBlock--xZ5YM\"><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/en-AG/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Antigua and Barbuda | English</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/es-AR/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Argentina | Español</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/en-BS/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Bahamas | English</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/en-BB/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Barbados | English</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/en-BZ/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Belize | English</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/es-BO/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Bolivia | Español</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/pt-BR/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Brazil | Português</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/en-CA/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Canada | English</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/fr-CA/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Canada | Français</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/es-CL/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Chile | Español</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/es-CO/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Colombia | Español</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/es-CR/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Costa Rica | Español</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/en-DM/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Dominica | English</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/es-DO/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Dominican Republic | Español</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/es-EC/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Ecuador | Español</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/es-SV/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">El Salvador | Español</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/en-GD/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Grenada | English</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/es-GT/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Guatemala | Español</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/en-GY/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Guyana | English</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/fr-HT/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Haiti | Français</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/es-HN/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Honduras | Español</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/en-JM/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Jamaica | English</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/es-MX/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Mexico | Español</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/es-NI/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Nicaragua | Español</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/es-PA/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Panama | Español</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/en-PA/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Panama | English</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/es-PY/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Paraguay | Español</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/es-PE/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Peru | Español</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/en-KN/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">St. Kitts and Nevis | English</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/en-LC/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">St. Lucia | English</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/en-VC/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">St. Vincent and the Grenadines | English</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/nl-SR/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Suriname | Nederlands</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/en-TT/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Trinidad and Tobago | English</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/es-UY/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Uruguay | Español</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">United States | English</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/es-US/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">United States | Español</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/es-VE/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Venezuela | Español</a></div></div></details><details class=\"LanguageSelector--LanguageSection--wi4vW Disclosure--themeList--vEbAF\"><summary class=\"Disclosure--Summary--kMIqY CountryList--Summary--ZaOpZ LanguageSelector--Summary--PpuWo\"><div class=\"Disclosure--SummaryDefault--h4p1H\">Africa<span class=\"Icon--iconWrapper--vSeDL\"><svg class=\"Disclosure--SummaryIcon--ldYIx Icon--icon--ySD-o\" fill=\"none\" name=\"add\" viewbox=\"0 0 20 21\" xmlns=\"http://www.w3.org/2000/svg\">\n<title>Add</title>\n<path d=\"M10.625 9.875V5.5h-1.25v4.375H5v1.25h4.375V15.5h1.25v-4.375H15v-1.25h-4.375Z\" fill=\"currentColor\"></path>\n</svg>\n</span></div></summary><div class=\"LanguageSelector--Content--IY8mH\"><div class=\"CountryList--listContainer--CGSwd LanguageSelector--RegionBlock--xZ5YM\"><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/ar-DZ/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Algeria | العربية</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/fr-DZ/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Algeria | Français</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/pt-AO/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Angola | Português</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/fr-BJ/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Benin | Français</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/fr-BF/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Burkina Faso | Français</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/fr-BI/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Burundi | Français</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/fr-CM/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Cameroon | Français</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/en-CM/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Cameroon | English</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/pt-CV/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Cape Verde | Português</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/fr-CF/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Central African Republic | Français</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/fr-TD/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Chad | Français</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/ar-TD/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Chad | العربية</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/fr-KM/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Comoros | Français</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/ar-KM/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Comoros | العربية</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/fr-CD/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Democratic Republic of the Congo | Français</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/fr-CG/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Republic of Congo | Français</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/fr-CI/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Côte d'Ivoire | Français</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/fr-DJ/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Djibouti | Français</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/ar-DJ/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Djibouti | العربية</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/ar-EG/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Egypt | العربية</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/es-GQ/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Equatorial Guinea | Español</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/ar-ER/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Eritrea | العربية</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/fr-GA/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Gabon | Français</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/en-GM/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Gambia | English</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/en-GH/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Ghana | English</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/fr-GN/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Guinea | Français</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/pt-GW/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Guinea-Bissau | Português</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVHYd CountryList--DisclosureLink--mHV3q LanguageSelector--RegionLink--DISY0 Button--default--osTe5\" href=\"/en-KE/weather/today/l/368425437d3d0f1d19146f31746760b223149ec51b637bb4cd8cda0832eb63cf\" target=\"_self\">Kenya | English</a><a class=\"ListItem--listItem--UuEqg ListItem--disableBorder--mVH\n```",
"metadata": {}
},
{
"id": "f71e3f57-2770-4129-b793-63a033a73eb0",
"cell_type": "code",
"source": "# Create empty list of weather data\nweather_data = []\n\n# Let's extract text\n# It finds all occurrences of the specified HTML <tags> \n# within a document, in this case, will search for all \n# headers 'h1' -> <h1>, 'h2' -> <h2>, 'h3' -> <h3> \n# and paragraphs 'p' -> <p> tags in 'soup' <HTML> table (obj).\n# This is useful for extracting headings <h1>, <h2>, <h3> \n# and paragraphs <p> occurred.\n# 'soup.find_all(['h1', 'h2', 'h3', 'p'])' -> list of <tags> \n# [<h2>, <p>, <h1>, <h2>, <h3>, <p>, ..., <tag>] \nlist_of_tags = soup.find_all(['h1', 'h2', 'h3', 'p'])\n\nprint('LIST of <TAGS>:',list_of_tags)\n\n# Pass one (1) <tag> per iteration\n# list_of_tags = [<h2>, <p>, <h1>, <h2>, <h3>, <p>, ..., <tag>] ->\n# tag = <h2> iter 0\n# tag = <p> iter 1\n# tag = <h1> iter 2\n# ...\nfor tag in list_of_tags:\n \n print('TAG:', tag)\n \n # From <tag> extract text -> <tag>text</tag> -> text\n # \" \" replace spaces between tags, to single space \n # <tag1>_______<tag2> -> <tag1>_<tag2>\n # 'strip=True' removes leading and trailing whitespace\n # from the extracted text -> ___text___ -> text\n text = tag.get_text(\" \", strip=True)\n \n print('TEXT',text)\n \n # ADD one (1) <tag> 'text', into 'weather_data'\n # list [], each iteration\n weather_data.append(text)\n\nprint('Weather list with texts:',weather_data)\n\n# Combine ALL texts/elements at list ['text1','text2','text3',...]\n# into a 'single string' without ('') and (,).\n# Each element of the list is joined /unido/ using the \n# line break (\"\\n\") character -> text1\\ntext2\\ntext3... ->\n# text1\n# text2\n# text3\n# ...\n# Then overwrites 'weather_data'. \nweather_data = \"\\n\".join(weather_data)\n\nprint('Joined TEXT:',weather_data)\n\n# remove all spaces from the combined text\n# 're.sub()' Regular Expression gets a new substring\n# It searches for the pattern \n# '\\s+' (one or more blank spaces)\n# and replaces it with a single space (' ') \n# in 'weather_data' variable. Then overwrites 'weather_data'. \n# text1' 'text2' 'text3' '... -> text1 text2 text3 ...\nweather_data = re.sub(r'\\s+', ' ', weather_data)\n\n# Display 'url' of web site\nprint(f\"Website: {url}\\n\\n\")\n\n# Display weather _data = text1 text2 text3 ...\nprint(weather_data)",
"metadata": {
"trusted": true
},
"outputs": [],
"execution_count": null
},
{
"id": "a99f0e97-235a-411f-8202-48349c6c8ae5",
"cell_type": "markdown",
"source": "```\nLIST of <TAGS>: [<h2 class=\"SearchTitle--text--Us3Z3\" data-testid=\"searchedLocTitle\">Recent Locations</h2>, <p class=\"MainMenuIcon--menuButtonText---UaG0\">Menu</p>, <h2 class=\"SiteNavigationLinks--title--bpgJF\">Weather Forecasts</h2>, <h2 class=\"SiteNavigationLinks--title--bpgJF\">Radar &amp; Maps</h2>, <h2 class=\"SiteNavigationLinks--title--bpgJF\">News &amp; Media</h2>, <h2 class=\"SiteNavigationLinks--title--bpgJF\">Products &amp; Account</h2>, <h2 class=\"SiteNavigationLinks--title--bpgJF\">Lifestyle</h2>, <h3 class=\"styles--navHeader--PmV0d\" role=\"presentation\">Specialty Forecasts</h3>, <h1 class=\"CurrentConditions--location--yub4l\">San Francisco, CA</h1>, <h2 class=\"AlertHeadline--alertText--D7JOV\">Small Craft Advisory</h2>, <h1 class=\"LocationPageTitle--PageHeader--amwRZ\"><strong>Hourly Weather</strong><span class=\"LocationPageTitle--LocationText--l3ftJ HourlyForecast--LocationText--v7q5u\">-<span class=\"LocationPageTitle--PresentationName--YxTV7\" data-testid=\"PresentationName\">San Francisco, CA</span></span></h1>, <h2 class=\"DetailsSummary--daypartName--CcVUz\" data-testid=\"daypartName\">Now</h2>, <p class=\"HourlyContent--wxPhraseLong--XjCaJ\" data-testid=\"hourlyWxPhrase\">Partly Cloudy</p>, <h2 class=\"DetailsSummary--daypartName--CcVUz\" data-testid=\"daypartName\">2 pm</h2>, <p class=\"HourlyContent--wxPhraseLong--XjCaJ\" data-testid=\"hourlyWxPhrase\">Partly Cloudy</p>, <h2 class=\"DetailsSummary--daypartName--CcVUz\" data-testid=\"daypartName\">3 pm</h2>, <p class=\"HourlyContent--wxPhraseLong--XjCaJ\" data-testid=\"hourlyWxPhrase\">Partly Cloudy</p>, <h2 class=\"DetailsSummary--daypartName--CcVUz\" data-testid=\"daypartName\">4 pm</h2>, <p class=\"HourlyContent--wxPhraseLong--XjCaJ\" data-testid=\"hourlyWxPhrase\">Partly Cloudy</p>, <h2 class=\"Card--cardHeading--M6yBx\">Don't Miss</h2>, <h2 class=\"Card--cardHeading--M6yBx\">Seasonal Hub</h2>, <h1 class=\"LocationPageTitle--PageHeader--amwRZ\"><strong>10 Day Weather</strong><span class=\"LocationPageTitle--LocationText--l3ftJ DailyForecast--LocationText--3hT2u\">-<span class=\"LocationPageTitle--PresentationName--YxTV7\" data-testid=\"PresentationName\">San Francisco, CA</span></span></h1>, <h2 class=\"DetailsSummary--daypartName--CcVUz\" data-testid=\"daypartName\">Today</h2>, <h2 class=\"DailyContent--daypartName--rbN9o\">Day</h2>, <p class=\"DailyContent--narrative--jqi6P\" data-testid=\"wxPhrase\">Partly cloudy. High 64F. Winds W at 10 to 20 mph.</p>, <h2 class=\"DailyContent--daypartName--rbN9o\">Night</h2>, <p class=\"DailyContent--narrative--jqi6P\" data-testid=\"wxPhrase\">Foggy. Low 54F. Winds W at 10 to 20 mph.</p>, <h2 class=\"DetailsSummary--daypartName--CcVUz\" data-testid=\"daypartName\">Sat 19</h2>, <h2 class=\"DailyContent--daypartName--rbN9o\">Day</h2>, <p class=\"DailyContent--narrative--jqi6P\" data-testid=\"wxPhrase\">Cloudy skies early will become partly cloudy later in the day. High 63F. Winds W at 10 to 20 mph.</p>, <h2 class=\"DailyContent--daypartName--rbN9o\">Night</h2>, <p class=\"DailyContent--narrative--jqi6P\" data-testid=\"wxPhrase\">Partly to mostly cloudy. Low 54F. Winds WSW at 10 to 20 mph.</p>, <h2 class=\"DetailsSummary--daypartName--CcVUz\" data-testid=\"daypartName\">Sun 20</h2>, <h2 class=\"DailyContent--daypartName--rbN9o\">Day</h2>, <p class=\"DailyContent--narrative--jqi6P\" data-testid=\"wxPhrase\">Partly to mostly cloudy. High 64F. Winds WSW at 15 to 25 mph.</p>, <h2 class=\"DailyContent--daypartName--rbN9o\">Night</h2>, <p class=\"DailyContent--narrative--jqi6P\" data-testid=\"wxPhrase\">Partly cloudy skies early, then becoming foggy and damp later at night. Low around 55F. Winds W at 10 to 20 mph.</p>, <h2 class=\"DetailsSummary--daypartName--CcVUz\" data-testid=\"daypartName\">Mon 21</h2>, <h2 class=\"DailyContent--daypartName--rbN9o\">Day</h2>, <p class=\"DailyContent--narrative--jqi6P\" data-testid=\"wxPhrase\">Cloudy skies early, then partly cloudy in the afternoon. Expect mist and reduced visibilities at times. High 64F. Winds W at 10 to 20 mph.</p>, <h2 class=\"DailyContent--daypartName--rbN9o\">Night</h2>, <p class=\"DailyContent--narrative--jqi6P\" data-testid=\"wxPhrase\">Areas of fog. Low 56F. Winds W at 10 to 20 mph.</p>, <h2 class=\"Card--cardHeading--M6yBx\">Radar</h2>, <h2 class=\"Card--cardHeading--M6yBx\">Trending Now</h2>, <h2 class=\"Card--cardHeading--M6yBx\">We Love Our Critters</h2>, <h2 class=\"Card--cardHeading--M6yBx\">Summer And Your Skin</h2>, <h2 class=\"Card--cardHeading--M6yBx\">Home, Garage &amp; Garden</h2>, <h2 class=\"Card--cardHeading--M6yBx\">RV Crumples Like Foil</h2>, <h2 class=\"Card--cardHeading--M6yBx\">Keeping You Healthy</h2>, <h2 class=\"Card--cardHeading--M6yBx\">Product Reviews &amp; Deals</h2>, <p class=\"ListView--listViewBody--An10C\"><span class=\"ListView--listViewTitle--fB8w3\">Beat The Glare Of A Sunny Day: TVs That Look Like Paintings</span></p>, <p class=\"ListView--listViewBody--An10C\"><span class=\"ListView--listViewTitle--fB8w3\">These Popular Beach Bags Are Now Up To 35% Off</span></p>, <p class=\"ListView--listViewBody--An10C\"><span class=\"ListView--listViewTitle--fB8w3\">Best Sunscreen Of 2025: Our Top 10 Picks</span></p>, <p class=\"ListView--listViewBody--An10C\"><span class=\"ListView--listViewTitle--fB8w3\">Everything You Need To Know About Portable Air Conditioners</span></p>, <h2 class=\"Card--cardHeading--M6yBx\">Happening Near San Francisco, CA</h2>, <h2 class=\"NextDoor--subHeader--1evxR\">Popular Nextdoor posts</h2>, <h2 class=\"Card--cardHeading--M6yBx\">Rain Or Shine, It's Playtime</h2>, <h2 class=\"Card--cardHeading--M6yBx\">Stay Safe</h2>, <h2 class=\"Card--cardHeading--M6yBx\">Take It From Them</h2>, <h2 class=\"Card--cardHeading--M6yBx\">Air Quality Index</h2>, <p class=\"AirQualityText--severityText--7Tout\" data-testid=\"AirQualitySeverity\">Air quality is considered satisfactory, and air pollution poses little or no risk.</p>, <h2 class=\"Card--cardHeading--M6yBx\">Health &amp; Activities</h2>, <h3 class=\"HealthActivitiesListItem--heading--vyCdF\" data-testid=\"ListTitle\">Seasonal Allergies and Pollen Count Forecast</h3>, <p class=\"HealthActivitiesListItem--description--eZcqa\" data-testid=\"Description\">Grass pollen is moderate in your area</p>, <h3 class=\"HealthActivitiesListItem--heading--vyCdF\" data-testid=\"ListTitle\">Cold &amp; Flu Forecast</h3>, <p class=\"HealthActivitiesListItem--description--eZcqa\" data-testid=\"Description\">Flu risk is very low in your area</p>, <p class=\"PrivacyLinks--privacyLinksParagraph--zoK0D\">We recognize our responsibility to use data and technology for good. We may use or share your data with our data vendors. Take control of your data.</p>, <p class=\"Footer--accuracyClaim--ZTKZn\">The Weather Channel is the world's most accurate forecaster according to ForecastWatch, <a class=\"ButtonTranslationString--ButtonTranslationString--pGs5h Button--default--osTe5 Button--plainText--4mFoO\" href=\"https://forecastwatch.com/AccuracyOverview2021-2024\" target=\"_self\">Global and Regional Weather Forecast Accuracy Overview</a>, 2021-2024, commissioned by <span class=\"Footer--theWeatherCompanyWrapper--LWqz9\">The Weather Company</span>.</p>, <p class=\"Footer--weatherChannelText--nQTOG\">Weather Channel</p>, <p class=\"TwcCopyright--copyright--CwMY+\" data-testid=\"Copyright\"><span>© The Weather Company, LLC 2025</span></p>]\nTAG: <h2 class=\"SearchTitle--text--Us3Z3\" data-testid=\"searchedLocTitle\">Recent Locations</h2>\nTEXT Recent Locations\nTAG: <p class=\"MainMenuIcon--menuButtonText---UaG0\">Menu</p>\nTEXT Menu\nTAG: <h2 class=\"SiteNavigationLinks--title--bpgJF\">Weather Forecasts</h2>\nTEXT Weather Forecasts\nTAG: <h2 class=\"SiteNavigationLinks--title--bpgJF\">Radar &amp; Maps</h2>\nTEXT Radar & Maps\nTAG: <h2 class=\"SiteNavigationLinks--title--bpgJF\">News &amp; Media</h2>\nTEXT News & Media\nTAG: <h2 class=\"SiteNavigationLinks--title--bpgJF\">Products &amp; Account</h2>\nTEXT Products & Account\nTAG: <h2 class=\"SiteNavigationLinks--title--bpgJF\">Lifestyle</h2>\nTEXT Lifestyle\nTAG: <h3 class=\"styles--navHeader--PmV0d\" role=\"presentation\">Specialty Forecasts</h3>\nTEXT Specialty Forecasts\nTAG: <h1 class=\"CurrentConditions--location--yub4l\">San Francisco, CA</h1>\nTEXT San Francisco, CA\nTAG: <h2 class=\"AlertHeadline--alertText--D7JOV\">Small Craft Advisory</h2>\nTEXT Small Craft Advisory\nTAG: <h1 class=\"LocationPageTitle--PageHeader--amwRZ\"><strong>Hourly Weather</strong><span class=\"LocationPageTitle--LocationText--l3ftJ HourlyForecast--LocationText--v7q5u\">-<span class=\"LocationPageTitle--PresentationName--YxTV7\" data-testid=\"PresentationName\">San Francisco, CA</span></span></h1>\nTEXT Hourly Weather - San Francisco, CA\nTAG: <h2 class=\"DetailsSummary--daypartName--CcVUz\" data-testid=\"daypartName\">Now</h2>\nTEXT Now\nTAG: <p class=\"HourlyContent--wxPhraseLong--XjCaJ\" data-testid=\"hourlyWxPhrase\">Partly Cloudy</p>\nTEXT Partly Cloudy\nTAG: <h2 class=\"DetailsSummary--daypartName--CcVUz\" data-testid=\"daypartName\">2 pm</h2>\nTEXT 2 pm\nTAG: <p class=\"HourlyContent--wxPhraseLong--XjCaJ\" data-testid=\"hourlyWxPhrase\">Partly Cloudy</p>\nTEXT Partly Cloudy\nTAG: <h2 class=\"DetailsSummary--daypartName--CcVUz\" data-testid=\"daypartName\">3 pm</h2>\nTEXT 3 pm\nTAG: <p class=\"HourlyContent--wxPhraseLong--XjCaJ\" data-testid=\"hourlyWxPhrase\">Partly Cloudy</p>\nTEXT Partly Cloudy\nTAG: <h2 class=\"DetailsSummary--daypartName--CcVUz\" data-testid=\"daypartName\">4 pm</h2>\nTEXT 4 pm\nTAG: <p class=\"HourlyContent--wxPhraseLong--XjCaJ\" data-testid=\"hourlyWxPhrase\">Partly Cloudy</p>\nTEXT Partly Cloudy\nTAG: <h2 class=\"Card--cardHeading--M6yBx\">Don't Miss</h2>\nTEXT Don't Miss\nTAG: <h2 class=\"Card--cardHeading--M6yBx\">Seasonal Hub</h2>\nTEXT Seasonal Hub\nTAG: <h1 class=\"LocationPageTitle--PageHeader--amwRZ\"><strong>10 Day Weather</strong><span class=\"LocationPageTitle--LocationText--l3ftJ DailyForecast--LocationText--3hT2u\">-<span class=\"LocationPageTitle--PresentationName--YxTV7\" data-testid=\"PresentationName\">San Francisco, CA</span></span></h1>\nTEXT 10 Day Weather - San Francisco, CA\nTAG: <h2 class=\"DetailsSummary--daypartName--CcVUz\" data-testid=\"daypartName\">Today</h2>\nTEXT Today\nTAG: <h2 class=\"DailyContent--daypartName--rbN9o\">Day</h2>\nTEXT Day\nTAG: <p class=\"DailyContent--narrative--jqi6P\" data-testid=\"wxPhrase\">Partly cloudy. High 64F. Winds W at 10 to 20 mph.</p>\nTEXT Partly cloudy. High 64F. Winds W at 10 to 20 mph.\nTAG: <h2 class=\"DailyContent--daypartName--rbN9o\">Night</h2>\nTEXT Night\nTAG: <p class=\"DailyContent--narrative--jqi6P\" data-testid=\"wxPhrase\">Foggy. Low 54F. Winds W at 10 to 20 mph.</p>\nTEXT Foggy. Low 54F. Winds W at 10 to 20 mph.\nTAG: <h2 class=\"DetailsSummary--daypartName--CcVUz\" data-testid=\"daypartName\">Sat 19</h2>\nTEXT Sat 19\nTAG: <h2 class=\"DailyContent--daypartName--rbN9o\">Day</h2>\nTEXT Day\nTAG: <p class=\"DailyContent--narrative--jqi6P\" data-testid=\"wxPhrase\">Cloudy skies early will become partly cloudy later in the day. High 63F. Winds W at 10 to 20 mph.</p>\nTEXT Cloudy skies early will become partly cloudy later in the day. High 63F. Winds W at 10 to 20 mph.\nTAG: <h2 class=\"DailyContent--daypartName--rbN9o\">Night</h2>\nTEXT Night\nTAG: <p class=\"DailyContent--narrative--jqi6P\" data-testid=\"wxPhrase\">Partly to mostly cloudy. Low 54F. Winds WSW at 10 to 20 mph.</p>\nTEXT Partly to mostly cloudy. Low 54F. Winds WSW at 10 to 20 mph.\nTAG: <h2 class=\"DetailsSummary--daypartName--CcVUz\" data-testid=\"daypartName\">Sun 20</h2>\nTEXT Sun 20\nTAG: <h2 class=\"DailyContent--daypartName--rbN9o\">Day</h2>\nTEXT Day\nTAG: <p class=\"DailyContent--narrative--jqi6P\" data-testid=\"wxPhrase\">Partly to mostly cloudy. High 64F. Winds WSW at 15 to 25 mph.</p>\nTEXT Partly to mostly cloudy. High 64F. Winds WSW at 15 to 25 mph.\nTAG: <h2 class=\"DailyContent--daypartName--rbN9o\">Night</h2>\nTEXT Night\nTAG: <p class=\"DailyContent--narrative--jqi6P\" data-testid=\"wxPhrase\">Partly cloudy skies early, then becoming foggy and damp later at night. Low around 55F. Winds W at 10 to 20 mph.</p>\nTEXT Partly cloudy skies early, then becoming foggy and damp later at night. Low around 55F. Winds W at 10 to 20 mph.\nTAG: <h2 class=\"DetailsSummary--daypartName--CcVUz\" data-testid=\"daypartName\">Mon 21</h2>\nTEXT Mon 21\nTAG: <h2 class=\"DailyContent--daypartName--rbN9o\">Day</h2>\nTEXT Day\nTAG: <p class=\"DailyContent--narrative--jqi6P\" data-testid=\"wxPhrase\">Cloudy skies early, then partly cloudy in the afternoon. Expect mist and reduced visibilities at times. High 64F. Winds W at 10 to 20 mph.</p>\nTEXT Cloudy skies early, then partly cloudy in the afternoon. Expect mist and reduced visibilities at times. High 64F. Winds W at 10 to 20 mph.\nTAG: <h2 class=\"DailyContent--daypartName--rbN9o\">Night</h2>\nTEXT Night\nTAG: <p class=\"DailyContent--narrative--jqi6P\" data-testid=\"wxPhrase\">Areas of fog. Low 56F. Winds W at 10 to 20 mph.</p>\nTEXT Areas of fog. Low 56F. Winds W at 10 to 20 mph.\nTAG: <h2 class=\"Card--cardHeading--M6yBx\">Radar</h2>\nTEXT Radar\nTAG: <h2 class=\"Card--cardHeading--M6yBx\">Trending Now</h2>\nTEXT Trending Now\nTAG: <h2 class=\"Card--cardHeading--M6yBx\">We Love Our Critters</h2>\nTEXT We Love Our Critters\nTAG: <h2 class=\"Card--cardHeading--M6yBx\">Summer And Your Skin</h2>\nTEXT Summer And Your Skin\nTAG: <h2 class=\"Card--cardHeading--M6yBx\">Home, Garage &amp; Garden</h2>\nTEXT Home, Garage & Garden\nTAG: <h2 class=\"Card--cardHeading--M6yBx\">RV Crumples Like Foil</h2>\nTEXT RV Crumples Like Foil\nTAG: <h2 class=\"Card--cardHeading--M6yBx\">Keeping You Healthy</h2>\nTEXT Keeping You Healthy\nTAG: <h2 class=\"Card--cardHeading--M6yBx\">Product Reviews &amp; Deals</h2>\nTEXT Product Reviews & Deals\nTAG: <p class=\"ListView--listViewBody--An10C\"><span class=\"ListView--listViewTitle--fB8w3\">Beat The Glare Of A Sunny Day: TVs That Look Like Paintings</span></p>\nTEXT Beat The Glare Of A Sunny Day: TVs That Look Like Paintings\nTAG: <p class=\"ListView--listViewBody--An10C\"><span class=\"ListView--listViewTitle--fB8w3\">These Popular Beach Bags Are Now Up To 35% Off</span></p>\nTEXT These Popular Beach Bags Are Now Up To 35% Off\nTAG: <p class=\"ListView--listViewBody--An10C\"><span class=\"ListView--listViewTitle--fB8w3\">Best Sunscreen Of 2025: Our Top 10 Picks</span></p>\nTEXT Best Sunscreen Of 2025: Our Top 10 Picks\nTAG: <p class=\"ListView--listViewBody--An10C\"><span class=\"ListView--listViewTitle--fB8w3\">Everything You Need To Know About Portable Air Conditioners</span></p>\nTEXT Everything You Need To Know About Portable Air Conditioners\nTAG: <h2 class=\"Card--cardHeading--M6yBx\">Happening Near San Francisco, CA</h2>\nTEXT Happening Near San Francisco, CA\nTAG: <h2 class=\"NextDoor--subHeader--1evxR\">Popular Nextdoor posts</h2>\nTEXT Popular Nextdoor posts\nTAG: <h2 class=\"Card--cardHeading--M6yBx\">Rain Or Shine, It's Playtime</h2>\nTEXT Rain Or Shine, It's Playtime\nTAG: <h2 class=\"Card--cardHeading--M6yBx\">Stay Safe</h2>\nTEXT Stay Safe\nTAG: <h2 class=\"Card--cardHeading--M6yBx\">Take It From Them</h2>\nTEXT Take It From Them\nTAG: <h2 class=\"Card--cardHeading--M6yBx\">Air Quality Index</h2>\nTEXT Air Quality Index\nTAG: <p class=\"AirQualityText--severityText--7Tout\" data-testid=\"AirQualitySeverity\">Air quality is considered satisfactory, and air pollution poses little or no risk.</p>\nTEXT Air quality is considered satisfactory, and air pollution poses little or no risk.\nTAG: <h2 class=\"Card--cardHeading--M6yBx\">Health &amp; Activities</h2>\nTEXT Health & Activities\nTAG: <h3 class=\"HealthActivitiesListItem--heading--vyCdF\" data-testid=\"ListTitle\">Seasonal Allergies and Pollen Count Forecast</h3>\nTEXT Seasonal Allergies and Pollen Count Forecast\nTAG: <p class=\"HealthActivitiesListItem--description--eZcqa\" data-testid=\"Description\">Grass pollen is moderate in your area</p>\nTEXT Grass pollen is moderate in your area\nTAG: <h3 class=\"HealthActivitiesListItem--heading--vyCdF\" data-testid=\"ListTitle\">Cold &amp; Flu Forecast</h3>\nTEXT Cold & Flu Forecast\nTAG: <p class=\"HealthActivitiesListItem--description--eZcqa\" data-testid=\"Description\">Flu risk is very low in your area</p>\nTEXT Flu risk is very low in your area\nTAG: <p class=\"PrivacyLinks--privacyLinksParagraph--zoK0D\">We recognize our responsibility to use data and technology for good. We may use or share your data with our data vendors. Take control of your data.</p>\nTEXT We recognize our responsibility to use data and technology for good. We may use or share your data with our data vendors. Take control of your data.\nTAG: <p class=\"Footer--accuracyClaim--ZTKZn\">The Weather Channel is the world's most accurate forecaster according to ForecastWatch, <a class=\"ButtonTranslationString--ButtonTranslationString--pGs5h Button--default--osTe5 Button--plainText--4mFoO\" href=\"https://forecastwatch.com/AccuracyOverview2021-2024\" target=\"_self\">Global and Regional Weather Forecast Accuracy Overview</a>, 2021-2024, commissioned by <span class=\"Footer--theWeatherCompanyWrapper--LWqz9\">The Weather Company</span>.</p>\nTEXT The Weather Channel is the world's most accurate forecaster according to ForecastWatch, Global and Regional Weather Forecast Accuracy Overview , 2021-2024, commissioned by The Weather Company .\nTAG: <p class=\"Footer--weatherChannelText--nQTOG\">Weather Channel</p>\nTEXT Weather Channel\nTAG: <p class=\"TwcCopyright--copyright--CwMY+\" data-testid=\"Copyright\"><span>© The Weather Company, LLC 2025</span></p>\nTEXT © The Weather Company, LLC 2025\nWeather list with texts: ['Recent Locations', 'Menu', 'Weather Forecasts', 'Radar & Maps', 'News & Media', 'Products & Account', 'Lifestyle', 'Specialty Forecasts', 'San Francisco, CA', 'Small Craft Advisory', 'Hourly Weather - San Francisco, CA', 'Now', 'Partly Cloudy', '2 pm', 'Partly Cloudy', '3 pm', 'Partly Cloudy', '4 pm', 'Partly Cloudy', \"Don't Miss\", 'Seasonal Hub', '10 Day Weather - San Francisco, CA', 'Today', 'Day', 'Partly cloudy. High 64F. Winds W at 10 to 20 mph.', 'Night', 'Foggy. Low 54F. Winds W at 10 to 20 mph.', 'Sat 19', 'Day', 'Cloudy skies early will become partly cloudy later in the day. High 63F. Winds W at 10 to 20 mph.', 'Night', 'Partly to mostly cloudy. Low 54F. Winds WSW at 10 to 20 mph.', 'Sun 20', 'Day', 'Partly to mostly cloudy. High 64F. Winds WSW at 15 to 25 mph.', 'Night', 'Partly cloudy skies early, then becoming foggy and damp later at night. Low around 55F. Winds W at 10 to 20 mph.', 'Mon 21', 'Day', 'Cloudy skies early, then partly cloudy in the afternoon. Expect mist and reduced visibilities at times. High 64F. Winds W at 10 to 20 mph.', 'Night', 'Areas of fog. Low 56F. Winds W at 10 to 20 mph.', 'Radar', 'Trending Now', 'We Love Our Critters', 'Summer And Your Skin', 'Home, Garage & Garden', 'RV Crumples Like Foil', 'Keeping You Healthy', 'Product Reviews & Deals', 'Beat The Glare Of A Sunny Day: TVs That Look Like Paintings', 'These Popular Beach Bags Are Now Up To 35% Off', 'Best Sunscreen Of 2025: Our Top 10 Picks', 'Everything You Need To Know About Portable Air Conditioners', 'Happening Near San Francisco, CA', 'Popular Nextdoor posts', \"Rain Or Shine, It's Playtime\", 'Stay Safe', 'Take It From Them', 'Air Quality Index', 'Air quality is considered satisfactory, and air pollution poses little or no risk.', 'Health & Activities', 'Seasonal Allergies and Pollen Count Forecast', 'Grass pollen is moderate in your area', 'Cold & Flu Forecast', 'Flu risk is very low in your area', 'We recognize our responsibility to use data and technology for good. We may use or share your data with our data vendors. Take control of your data.', \"The Weather Channel is the world's most accurate forecaster according to ForecastWatch, Global and Regional Weather Forecast Accuracy Overview , 2021-2024, commissioned by The Weather Company .\", 'Weather Channel', '© The Weather Company, LLC 2025']\nJoined TEXT: Recent Locations\nMenu\nWeather Forecasts\nRadar & Maps\nNews & Media\nProducts & Account\nLifestyle\nSpecialty Forecasts\nSan Francisco, CA\nSmall Craft Advisory\nHourly Weather - San Francisco, CA\nNow\nPartly Cloudy\n2 pm\nPartly Cloudy\n3 pm\nPartly Cloudy\n4 pm\nPartly Cloudy\nDon't Miss\nSeasonal Hub\n10 Day Weather - San Francisco, CA\nToday\nDay\nPartly cloudy. High 64F. Winds W at 10 to 20 mph.\nNight\nFoggy. Low 54F. Winds W at 10 to 20 mph.\nSat 19\nDay\nCloudy skies early will become partly cloudy later in the day. High 63F. Winds W at 10 to 20 mph.\nNight\nPartly to mostly cloudy. Low 54F. Winds WSW at 10 to 20 mph.\nSun 20\nDay\nPartly to mostly cloudy. High 64F. Winds WSW at 15 to 25 mph.\nNight\nPartly cloudy skies early, then becoming foggy and damp later at night. Low around 55F. Winds W at 10 to 20 mph.\nMon 21\nDay\nCloudy skies early, then partly cloudy in the afternoon. Expect mist and reduced visibilities at times. High 64F. Winds W at 10 to 20 mph.\nNight\nAreas of fog. Low 56F. Winds W at 10 to 20 mph.\nRadar\nTrending Now\nWe Love Our Critters\nSummer And Your Skin\nHome, Garage & Garden\nRV Crumples Like Foil\nKeeping You Healthy\nProduct Reviews & Deals\nBeat The Glare Of A Sunny Day: TVs That Look Like Paintings\nThese Popular Beach Bags Are Now Up To 35% Off\nBest Sunscreen Of 2025: Our Top 10 Picks\nEverything You Need To Know About Portable Air Conditioners\nHappening Near San Francisco, CA\nPopular Nextdoor posts\nRain Or Shine, It's Playtime\nStay Safe\nTake It From Them\nAir Quality Index\nAir quality is considered satisfactory, and air pollution poses little or no risk.\nHealth & Activities\nSeasonal Allergies and Pollen Count Forecast\nGrass pollen is moderate in your area\nCold & Flu Forecast\nFlu risk is very low in your area\nWe recognize our responsibility to use data and technology for good. We may use or share your data with our data vendors. Take control of your data.\nThe Weather Channel is the world's most accurate forecaster according to ForecastWatch, Global and Regional Weather Forecast Accuracy Overview , 2021-2024, commissioned by The Weather Company .\nWeather Channel\n© The Weather Company, LLC 2025\nWebsite: https://weather.com/weather/today/l/USCA0987:1:US\n\n\nRecent Locations Menu Weather Forecasts Radar & Maps News & Media Products & Account Lifestyle Specialty Forecasts San Francisco, CA Small Craft Advisory Hourly Weather - San Francisco, CA Now Partly Cloudy 2 pm Partly Cloudy 3 pm Partly Cloudy 4 pm Partly Cloudy Don't Miss Seasonal Hub 10 Day Weather - San Francisco, CA Today Day Partly cloudy. High 64F. Winds W at 10 to 20 mph. Night Foggy. Low 54F. Winds W at 10 to 20 mph. Sat 19 Day Cloudy skies early will become partly cloudy later in the day. High 63F. Winds W at 10 to 20 mph. Night Partly to mostly cloudy. Low 54F. Winds WSW at 10 to 20 mph. Sun 20 Day Partly to mostly cloudy. High 64F. Winds WSW at 15 to 25 mph. Night Partly cloudy skies early, then becoming foggy and damp later at night. Low around 55F. Winds W at 10 to 20 mph. Mon 21 Day Cloudy skies early, then partly cloudy in the afternoon. Expect mist and reduced visibilities at times. High 64F. Winds W at 10 to 20 mph. Night Areas of fog. Low 56F. Winds W at 10 to 20 mph. Radar Trending Now We Love Our Critters Summer And Your Skin Home, Garage & Garden RV Crumples Like Foil Keeping You Healthy Product Reviews & Deals Beat The Glare Of A Sunny Day: TVs That Look Like Paintings These Popular Beach Bags Are Now Up To 35% Off Best Sunscreen Of 2025: Our Top 10 Picks Everything You Need To Know About Portable Air Conditioners Happening Near San Francisco, CA Popular Nextdoor posts Rain Or Shine, It's Playtime Stay Safe Take It From Them Air Quality Index Air quality is considered satisfactory, and air pollution poses little or no risk. Health & Activities Seasonal Allergies and Pollen Count Forecast Grass pollen is moderate in your area Cold & Flu Forecast Flu risk is very low in your area We recognize our responsibility to use data and technology for good. We may use or share your data with our data vendors. Take control of your data. The Weather Channel is the world's most accurate forecaster according to ForecastWatch, Global and Regional Weather Forecast Accuracy Overview , 2021-2024, commissioned by The Weather Company . Weather Channel © The Weather Company, LLC 2025\n```",
"metadata": {}
},
{
"id": "be3a526e-04ab-408f-baa2-a23b262e8855",
"cell_type": "markdown",
"source": "## Agentic Search",
"metadata": {}
},
{
"id": "2c22bfcd-b6c1-4613-a6e7-2cde8b4fac04",
"cell_type": "code",
"source": "# Use 'client(obj)' to run a web search with 'Search Tool()/Function()'\n# query = \"What is in Nvidia's new Blackwell GPU?\"\n# This time use 'max_results=1' to limit search response to one (1)\n# Get 'Search Tool()/Function()' dict result={ } -> \n# result={'results': [{'title':'string', 'url':'string','content':\"{weather info dict}\"}] }\nresult = client.search(query, max_results=1)\n\n# Display 'result' dict {} or JSON\nprint('Main DICT:',result)\n\n# Select 'results' key, then unique element at list [0] \n# and then 'content' key -> \"{weather info dict}\" or JSON \ndata = result[\"results\"][0][\"content\"]\n\n# Display \"{weather info dict}\" or JSON \nprint('\\n\"{weather info dict}\":',data)",
"metadata": {
"trusted": true
},
"outputs": [],
"execution_count": null
},
{
"id": "5a983993-b87c-4eeb-878f-11c99fda35a0",
"cell_type": "markdown",
"source": "```\nMain DICT: {'query': '\\n what is the current weather in San Francisco?\\n Should I travel there today?\\n \"weather.com\"\\n', 'follow_up_questions': None, 'answer': None, 'images': [], 'results': [{'title': 'Weather in San Francisco', 'url': 'https://www.weatherapi.com/', 'content': \"{'location': {'name': 'San Francisco', 'region': 'California', 'country': 'United States of America', 'lat': 37.775, 'lon': -122.4183, 'tz_id': 'America/Los_Angeles', 'localtime_epoch': 1752868127, 'localtime': '2025-07-18 12:48'}, 'current': {'last_updated_epoch': 1752867900, 'last_updated': '2025-07-18 12:45', 'temp_c': 18.3, 'temp_f': 64.9, 'is_day': 1, 'condition': {'text': 'Partly cloudy', 'icon': '//cdn.weatherapi.com/weather/64x64/day/116.png', 'code': 1003}, 'wind_mph': 9.8, 'wind_kph': 15.8, 'wind_degree': 256, 'wind_dir': 'WSW', 'pressure_mb': 1018.0, 'pressure_in': 30.05, 'precip_mm': 0.0, 'precip_in': 0.0, 'humidity': 68, 'cloud': 50, 'feelslike_c': 18.3, 'feelslike_f': 64.9, 'windchill_c': 15.0, 'windchill_f': 59.0, 'heatindex_c': 15.1, 'heatindex_f': 59.1, 'dewpoint_c': 12.9, 'dewpoint_f': 55.2, 'vis_km': 16.0, 'vis_miles': 9.0, 'uv': 8.9, 'gust_mph': 11.4, 'gust_kph': 18.4}}\", 'score': 0.4422379, 'raw_content': None}], 'response_time': 1.46}\n\n\"{weather info dict}\": {'location': {'name': 'San Francisco', 'region': 'California', 'country': 'United States of America', 'lat': 37.775, 'lon': -122.4183, 'tz_id': 'America/Los_Angeles', 'localtime_epoch': 1752868127, 'localtime': '2025-07-18 12:48'}, 'current': {'last_updated_epoch': 1752867900, 'last_updated': '2025-07-18 12:45', 'temp_c': 18.3, 'temp_f': 64.9, 'is_day': 1, 'condition': {'text': 'Partly cloudy', 'icon': '//cdn.weatherapi.com/weather/64x64/day/116.png', 'code': 1003}, 'wind_mph': 9.8, 'wind_kph': 15.8, 'wind_degree': 256, 'wind_dir': 'WSW', 'pressure_mb': 1018.0, 'pressure_in': 30.05, 'precip_mm': 0.0, 'precip_in': 0.0, 'humidity': 68, 'cloud': 50, 'feelslike_c': 18.3, 'feelslike_f': 64.9, 'windchill_c': 15.0, 'windchill_f': 59.0, 'heatindex_c': 15.1, 'heatindex_f': 59.1, 'dewpoint_c': 12.9, 'dewpoint_f': 55.2, 'vis_km': 16.0, 'vis_miles': 9.0, 'uv': 8.9, 'gust_mph': 11.4, 'gust_kph': 18.4}}\n```",
"metadata": {}
},
{
"id": "1a75638e-a516-47dc-8b8c-56c4c21ea031",
"cell_type": "code",
"source": "# Essential for working with data in JSON text string format\n# It allows two main operations: \n# converting Python objects to JSON text strings using 'json.dumps()', \n# and converting JSON text strings to Python objects using 'json.loads()'\nimport json\n\n# From 'pygments' highlight library. It allows highlighting of \n# source code in a variety of formats.\n# 'highlight()' class is used to highlight JSON output. \n# 'Lexers()' class analyze and recognize JSON structure \n# 'formatters()' class assign a color each found JSON structure\nfrom pygments import highlight, lexers, formatters\n\n# Parse / analyze sintactically JSON\n# Replace ALL actual characters (') -> new characters (\") characters \n# at 'data' JSON / dict {}\n# Converts 'data' JSON text string / dict {} into Python object\nparsed_json = json.loads(data.replace(\"'\", '\"'))\n\n# After replacing ALL (') -> (\")\n# Converts Python object into JSON text string / dict {} again\n# The indent=4 parameter specifies that the JSON output / dict {} \n# should be indented {-> four spaces, each new level.\nformatted_json = json.dumps(parsed_json, indent=4)\n\n# Display JSON text string /dict {} indented {-> four spaces, each new level.\nprint('INDENTED {->:\\n',formatted_json)\n\n# Display JSON text string /dict {} indented {-> four spaces, each new level\n# but now with each JSON text found structure, highlighted with a different ANSI color.\ncolorful_json = highlight(formatted_json, # Input JSON/dict{} indented {-> 4 spaces\n \n lexers.JsonLexer(), # Analyze and recognize \n # the structure of JSON data. \n # (Pygments uses it to highlight \n # JSON code).\n \n formatters.TerminalFormatter()) # Gives a different ANSI color \n # to each found structure\n # at JSON text string / dict{}.\n\n# Display indented and highlighted JSON text string / dict {}\nprint('\\nINDENTED {-> and COLOR HIGHLIGHTED:\\n',colorful_json)\n",
"metadata": {
"trusted": true
},
"outputs": [],
"execution_count": null
},
{
"id": "aabe0211-9e35-426e-9cc5-e0db8e7ffb8b",
"cell_type": "markdown",
"source": "```\nINDENTED {->:\n {\n \"location\": {\n \"name\": \"San Francisco\",\n \"region\": \"California\",\n \"country\": \"United States of America\",\n \"lat\": 37.775,\n \"lon\": -122.4183,\n \"tz_id\": \"America/Los_Angeles\",\n \"localtime_epoch\": 1752868127,\n \"localtime\": \"2025-07-18 12:48\"\n },\n \"current\": {\n \"last_updated_epoch\": 1752867900,\n \"last_updated\": \"2025-07-18 12:45\",\n \"temp_c\": 18.3,\n \"temp_f\": 64.9,\n \"is_day\": 1,\n \"condition\": {\n \"text\": \"Partly cloudy\",\n \"icon\": \"//cdn.weatherapi.com/weather/64x64/day/116.png\",\n \"code\": 1003\n },\n \"wind_mph\": 9.8,\n \"wind_kph\": 15.8,\n \"wind_degree\": 256,\n \"wind_dir\": \"WSW\",\n \"pressure_mb\": 1018.0,\n \"pressure_in\": 30.05,\n \"precip_mm\": 0.0,\n \"precip_in\": 0.0,\n \"humidity\": 68,\n \"cloud\": 50,\n \"feelslike_c\": 18.3,\n \"feelslike_f\": 64.9,\n \"windchill_c\": 15.0,\n \"windchill_f\": 59.0,\n \"heatindex_c\": 15.1,\n \"heatindex_f\": 59.1,\n \"dewpoint_c\": 12.9,\n \"dewpoint_f\": 55.2,\n \"vis_km\": 16.0,\n \"vis_miles\": 9.0,\n \"uv\": 8.9,\n \"gust_mph\": 11.4,\n \"gust_kph\": 18.4\n }\n}\n\nINDENTED {-> and COLOR HIGHLIGHTED:\n {\n \"location\": {\n \"name\": \"San Francisco\",\n \"region\": \"California\",\n \"country\": \"United States of America\",\n \"lat\": 37.775,\n \"lon\": -122.4183,\n \"tz_id\": \"America/Los_Angeles\",\n \"localtime_epoch\": 1752868127,\n \"localtime\": \"2025-07-18 12:48\"\n },\n \"current\": {\n \"last_updated_epoch\": 1752867900,\n \"last_updated\": \"2025-07-18 12:45\",\n \"temp_c\": 18.3,\n \"temp_f\": 64.9,\n \"is_day\": 1,\n \"condition\": {\n \"text\": \"Partly cloudy\",\n \"icon\": \"//cdn.weatherapi.com/weather/64x64/day/116.png\",\n \"code\": 1003\n },\n \"wind_mph\": 9.8,\n \"wind_kph\": 15.8,\n \"wind_degree\": 256,\n \"wind_dir\": \"WSW\",\n \"pressure_mb\": 1018.0,\n \"pressure_in\": 30.05,\n \"precip_mm\": 0.0,\n \"precip_in\": 0.0,\n \"humidity\": 68,\n \"cloud\": 50,\n \"feelslike_c\": 18.3,\n \"feelslike_f\": 64.9,\n \"windchill_c\": 15.0,\n \"windchill_f\": 59.0,\n \"heatindex_c\": 15.1,\n \"heatindex_f\": 59.1,\n \"dewpoint_c\": 12.9,\n \"dewpoint_f\": 55.2,\n \"vis_km\": 16.0,\n \"vis_miles\": 9.0,\n \"uv\": 8.9,\n \"gust_mph\": 11.4,\n \"gust_kph\": 18.4\n }\n}\n```",
"metadata": {}
},
{
"id": "77ef5ff9-8096-4e72-bcd3-548735f4155c",
"cell_type": "code",
"source": "",
"metadata": {
"trusted": true
},
"outputs": [],
"execution_count": null
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment