Очистка самых популярных поисковых запросов в soundcloud

#python #web-scraping

Вопрос:

Это мой код до сих пор: В основном я хотел бы очистить топ-10 художников и создать фрейм данных, в котором указаны 3 столбца: их имя, ссылка и html-код ссылки каждого художника. Как я могу прогрессировать отсюда? Кроме того, эта часть тоже не работает, все, что печатается, — это «SoundCloud». Любые советы приветствуются.

 from urllib.request import urlopen
import pandas as pd 
import requests
import bs4
import re
url='https://soundcloud.com/popular/searches'
source=urlopen(url).read().decode('utf-8')
bsource=bs4.BeautifulSoup(source)
tag=bsource.find('a', href=True)
print(tag.string)

 

Ответ №1:

Попробуй:

 import requets
import pandas as pd
from bs4 import BeautifulSoup


url = "https://soundcloud.com/popular/searches"
soup = BeautifulSoup(requests.get(url).content, "html.parser")

data = []
for a in soup.select("ol a")[:10]:
    data.append(
        {
            "name": a.get_text(strip=True),
            "link": "https://soundcloud.com"   a["href"],
            "html": str(a),
        }
    )

df = pd.DataFrame(data)
print(df)
 

С принтами:

            name                                            link                                               html
0  nba youngboy  https://soundcloud.com/search?q=nba youngboy  <a href="/search?q=nba youngboy">nba youngbo...
1    juice wrld    https://soundcloud.com/search?q=juice wrld    <a href="/search?q=juice wrld">juice wrld</a>
2        polo g        https://soundcloud.com/search?q=polo g            <a href="/search?q=polo g">polo g</a>
3      lil baby      https://soundcloud.com/search?q=lil baby        <a href="/search?q=lil baby">lil baby</a>
4      lil durk      https://soundcloud.com/search?q=lil durk        <a href="/search?q=lil durk">lil durk</a>
5  xxxtentacion    https://soundcloud.com/search?q=xxxtentacion  <a href="/search?q=xxxtentacion">xxxtentacion</a>
6        j cole        https://soundcloud.com/search?q=j cole            <a href="/search?q=j cole">j cole</a>
7      rod wave      https://soundcloud.com/search?q=rod wave        <a href="/search?q=rod wave">rod wave</a>
8  moneybagg yo  https://soundcloud.com/search?q=moneybagg yo  <a href="/search?q=moneybagg yo">moneybagg y...
9      king von      https://soundcloud.com/search?q=king von        <a href="/search?q=king von">king von</a>
 

Комментарии:

1. Большое спасибо!

2. Могу я просто спросить, что делает «ол а»? Я устал искать это в документации, но не смог найти ничего о ol

3. @JoshBob "ol a" -это селектор CSS. это означает «дайте мне все <a> теги, которые находятся внутри <ol> тегов. Когда вы проверите HTML-источник страницы, вы увидите, что популярные поисковые запросы отформатированы таким образом.

4. О, так что эти части зависят только от того, какую часть html мы ищем, я вижу. Большое спасибо! @Андрей Кесели