diff --git a/01_Billboard.ipynb b/01_Billboard.ipynb index 779a38c..bf5d723 100644 --- a/01_Billboard.ipynb +++ b/01_Billboard.ipynb @@ -41,7 +41,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "promotional-algorithm", "metadata": {}, "outputs": [], @@ -59,12 +59,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "civic-broad", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "200" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# 200 status code means OK!" + "response = requests.get(url)\n", + "response.status_code" ] }, { @@ -77,11 +89,13 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "revised-digest", "metadata": {}, "outputs": [], - "source": [] + "source": [ + "soup = BeautifulSoup(response.content, \"html.parser\")" + ] }, { "cell_type": "markdown", @@ -93,20 +107,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "falling-chambers", "metadata": {}, "outputs": [], "source": [ "# song titles\n", + "songs = soup.find_all(\"span\", class_=\"chart-element__information__song text--truncate color--primary\")\n", "\n", "# artists\n", + "artists = soup.find_all(\"span\", class_=\"chart-element__information__artist text--truncate color--secondary\")\n", "\n", "# last week\n", + "last_week_ranks = soup.find_all(\"span\", class_= \"chart-element__meta text--center color--secondary text--last\")\n", "\n", "# peak rank\n", + "peak_ranks = soup.find_all(\"span\", class_= \"chart-element__meta text--center color--secondary text--peak\")\n", "\n", - "# weeks on chart\n" + "# weeks on chart\n", + "weeks_on_chart = soup.find_all(\"span\", class_= \"chart-element__meta text--center color--secondary text--week\")" ] }, { @@ -119,11 +138,15 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "amateur-protocol", "metadata": {}, "outputs": [], - "source": [] + "source": [ + "for i in [songs, artists, last_week_ranks, peak_ranks, weeks_on_chart]:\n", + " for j in range(len(i)):\n", + " i[j] = i[j].getText()" + ] }, { "cell_type": "markdown", @@ -135,11 +158,186 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "id": "external-instrumentation", "metadata": {}, "outputs": [], - "source": [] + "source": [ + "billboard = pd.DataFrame(\n", + " {\"song\": songs,\n", + " \"artist\": artists,\n", + " \"last_week_rank\": last_week_ranks,\n", + " \"peak_rank\": peak_ranks,\n", + " \"weeks_on_chart\": weeks_on_chart}\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "05549a2f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
| \n", + " | song | \n", + "artist | \n", + "last_week_rank | \n", + "peak_rank | \n", + "weeks_on_chart | \n", + "
|---|---|---|---|---|---|
| 0 | \n", + "Stay | \n", + "The Kid LAROI & Justin Bieber | \n", + "2 | \n", + "1 | \n", + "13 | \n", + "
| 1 | \n", + "Industry Baby | \n", + "Lil Nas X & Jack Harlow | \n", + "3 | \n", + "2 | \n", + "11 | \n", + "
| 2 | \n", + "Fancy Like | \n", + "Walker Hayes | \n", + "5 | \n", + "3 | \n", + "16 | \n", + "
| 3 | \n", + "Way 2 Sexy | \n", + "Drake Featuring Future & Young Thug | \n", + "4 | \n", + "1 | \n", + "5 | \n", + "
| 4 | \n", + "Bad Habits | \n", + "Ed Sheeran | \n", + "6 | \n", + "2 | \n", + "15 | \n", + "
| ... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "
| 95 | \n", + "Esta Danada | \n", + "Ivan Cornejo | \n", + "- | \n", + "96 | \n", + "1 | \n", + "
| 96 | \n", + "Whiskey And Rain | \n", + "Michael Ray | \n", + "- | \n", + "97 | \n", + "1 | \n", + "
| 97 | \n", + "TSU | \n", + "Drake | \n", + "84 | \n", + "9 | \n", + "5 | \n", + "
| 98 | \n", + "Love All | \n", + "Drake Featuring JAY-Z | \n", + "87 | \n", + "10 | \n", + "5 | \n", + "
| 99 | \n", + "No Where | \n", + "YoungBoy Never Broke Again | \n", + "40 | \n", + "40 | \n", + "2 | \n", + "
100 rows × 5 columns
\n", + "