인터넷 캡처를 통해 유행하는 데이터 과학 아나운서를 찾다

본고는 내가 팟캐스트 목록을 만드는 과정을 되돌아볼 것이다. 아래에서 볼 수 있다.만약 네가 단지 아나운서를 보러 왔을 뿐이라면, 한번 해 봐라...

가장 인기 있는 데이터 과학 아나운서
타이틀
작자
평균치
rtg_ct
에피소드
Lex Fridman Podcast
렉스 프리드만
4.9
2400
126
Machine Learning Guide
오드빌
4.9
626
30
Data Skeptic
케르 폴리치
4.4
431
300
Data Stories
엔리코 베르티니와 모리츠 스토퍼나
4.5
405
162
The TWIML AI Podcast (formerly This Week in Machine Learning & Artificial Intelligence)
샘 찰린턴
4.7
300
300
DataFramed
데이터 캠프
4.9
188
59
The AI Podcast
영위달
4.5
162
125
SuperDataScience
키릴 에레멘코
4.6
161
300
Partially Derivative
부분 도수
4.8
141
101
Machine Learning
스탠퍼드 대학교
3.9
138
20
Talking Machines
핸드백 제작
4.6
133
106
AI in Business
다니엘 피그라
4.4
102
100
Learning Machines 101
리처드 M. 고르덴, 박사, 이학 석사, 이학 학사.
4.4
87
82
storytelling with data podcast
콜 노스바머 크너
4.9
80
33
Data Crunch
데이터 긴축 회사
4.9
70
64
Data Viz Today
엘리 토반
5
64
62
Artificial Intelligence
마성이공대학
4.1
61
31
O'Reilly Data Show Podcast
올레리 매체
4.2
59
60
Machine Learning – Software Engineering Daily
기계학습-소프트웨어공학일보
4.5
59
115
Data Science at Home
프랑시스코 가다레타
4.2
58
100
Data Engineering Podcast
토바이어스 메시
4.7
58
150
Big Data
리안 에스트라다
4.6
58
13
Follow the Data Podcast
팽보 자선기금회
4.3
57
82
Making Data Simple
국제 상용 기계 회사
4.3
56
104
Analytics on Fire
여미자
4.4
51
48
Learn to Code in One Month
인코딩을 습득하다
4.9
50
26
Becoming A Data Scientist Podcast
레이니 티트
4.5
49
21
Practical AI: Machine Learning & Data Science
로그 미디어 변경
4.5
48
105
The Present Beyond Measure Show: Data Visualization, Storytelling & Presentation for Digital Marketers
피카
4.9
44
58
The Data Chief
의 사명
4.9
43
16
AI Today Podcast: Artificial Intelligence Insights, Experts, and Opinion
Cognilytica
4.2
42
161
Data Driven
데이터 구동
4.9
41
257
HumAIn Podcast - Artificial Intelligence, Data Science, and Developer Education
데이비드 아코보비치
4.8
39
78
Data Gurus
시마 바사
5
39
106
Masters of Data Podcast
벤 뉴턴이 주재하는 상박 논리
5
38
74
The PolicyViz Podcast
PolicyViz PodCast
4.7
36
180
The Radical AI Podcast
급진 인공지능
4.9
34
35
Women in Data Science
마고트 그레슨 교수
4.9
28
24
Towards Data Science
TDS 팀
4.6
26
50
Data in Depth
산점
5
22
24
Data Science Imposters Podcast
안토니오 볼헤스와 조디 에스트비즈
4.4
22
88
The Artists of Data Science
사호타 하프리트 호텔
4.9
19
41
#DataFemme
디카오 데이터
5
17
30
The Banana Data Podcast
다테쿠
4.9
15
33
Experiencing Data with Brian T. O'Neill
Brian T.O'Neill 분석 디자인 회사
4.9
14
13
Secrets of Data Analytics Leaders
에크슨 그룹
4.8
13
82
Data Journeys
AJ 고르츠탄
5
13
26
Data Driven Discussions
이군치.인공지능
5
12
8
Data Futurology - Leadership And Strategy in Artificial Intelligence, Machine Learning, Data Science
펠리페 플로레스
4.4
11
135
Artificially Intelligent
Christian Hubbs 및 Stephen Donnelly
4.9
11
100

왜 나는 데이터 과학 아나운서를 찾고 싶을까
이것은 통상적으로 데이터 과학 아나운서 찾기에 관한 문장의 맨 위에 나타난다.응, 그것은 어떤 문장의 꼭대기에도 나타날 거야.그러나 실제로 대다수 사람들은 구글에서 이 답을 찾았고, 페이지 맨 위에서만 답을 찾았다.만약 당신이 가장 유행하는 데이터 과학 아나운서를 입력한다면, 당신은 정말로 당신이 원하는 답을 찾기 위해 끊임없이 아래로 굴러다니고 싶지 않다.그래서 그들의 체험을 더욱 좋게 하기 위해 우리는 단지 답을 거기에 남겨 둘 뿐이다.그들에게 고함을 지르다.너는 우스갯소리를 많이 했다.
어쨌든 나는 정말 듣는 것을 좋아한다.시사통신은 시사를 이해하는 데 매우 유용하고 블로그는 특정한 것을 배우는 데 매우 유용하지만 팟캐스트는 내 마음속에 특별한 위치를 가지고 있어 나는 목적 없이 매일 새로운 것을 배울 수 있다.이런 형식은 확실히 정보를 효율적으로 전달하는 데 도움이 되지만 여러 임무를 동시에 처리할 수 있다.나는 코로나 이전에는 아침 출퇴근길에 보통 팟캐스트였다.코로나로 통근이 사라졌지만, 할 수 있다면 하루에 한 번쯤은 팟캐스트를 들어보려고 노력했다.나의 관점은 장기적으로 보면 매일 30분의 학습 시간이 정말 누적된다는 것이다. 나는 아나운서가 이 목표를 달성하는 좋은 방법이라고 생각한다.
이제 우리는 팟캐스트에 대한 나의 사랑을 알게 되었다. 당신은 나의 놀라움을 상상할 수 있다. 내가 데이터 과학 팟캐스트 구독을 찾기 시작했을 때, 나는 인터넷을 이용하여 가장 유행하는 데이터 과학 팟캐스트를 찾아내는 방법에 관한 강좌를 찾지 못했다.알아, 미쳤어.햇빛 아래의 모든 사물에 대한 웹 캡처 강좌가 있는데, 방송인처럼 보이는 것 외에는.내 말은, 시사 통신에도 없을 수도 있지만, 우리는 당분간 이 일을 이야기하지 않겠다...
그래서 인터넷으로 데이터 과학 아나운서를 잡을 정도로 미친 사람이 없다면...

게임 기획 과정
지금까지 우리는 여기서만 답을 찾는 야만인들로부터 거의 확실하게 벗어났다. 그래서 우리는 내가 데이터를 수집하는 작은 과정에 들어갈 것이다.이 문장은 특별히 길지 않다. 나는 대략 한 시간 동안 정리했기 때문에 한 문장에 있어서 이것은 매우 좋은 길이일 것이다.
여기서python을 사용하여Anaconda를 설치합니다. (이것은python의 흔한 패키지 관리/배치 시스템입니다.)나는 Jupyter 노트에서 이것을 실행할 것이다. 이것은 일회용 작업이기 때문에 나는 그것을 다시 사용할 필요가 없다.유망히
내가 해야 할 일로 말하자면, 나는 'https://podcasts.apple.com/us/podcast/' 영역에 국한된 구글 키워드 검색을 실행하고, 앞의 몇 페이지의 결과를 긁어낼 것이다.거기서 앱 팟캐스트 페이지만 잡으면 총 시청률과 평균 시청률을 얻을 수 있다.그래, 데이터에 편견이 있을 수 있지만, 이것은 내가 원하는 답을 얻기 위한 빠르고 더러운 방식이다.

최고의 데이터 과학 팟캐스트 코드 찾기 - 제1판
# import default python packages
import urllib
import requests
import time
위의 가방은python에 포함되어 있으며, 아래의 가방은 항상 포함되지 않습니다.만약 네가 그것들을 설치하지 않았다면, 너는 반드시 그것들을 다운로드해야 한다.사용 방법pip 또는 conda에 대해 알아보십시오.
# import non-standard python packages
# if you dont have these installed, install them with pip or conda
from bs4 import BeautifulSoup
import pandas as pd
패키지를 가져왔으니 사용자 에이전트를 정의해야 합니다.우선, 만약 네가 물건을 긁고 있다면, 이것은 예의이다.그 다음으로 구글은 이동과 데스크톱 검색에 대해 다른 결과를 내놓았다.이것은 사실 나의 사용자 에이전트가 아니다. 왜냐하면 나는 좀 게으르기 때문에, 나는 다른 강좌에서 그것을 얻었다.나는 실제로linux를 사용한다...
# define your desktop user-agent
USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:65.0) Gecko/20100101 Firefox/65.0"
알겠습니다. 이제 우리가 실행하고자 하는 검색어를 정의할 것입니다.그리고 구글에서 검색하고자 하는 URL을 토해내는 함수를 만듭니다.나는 검색어를 Kwargs 형식에 넣었다. 왜냐하면 나는 함수를 통해 그것들을 넣고 싶었기 때문이다.이것은 내가 KWARG 목록을 반복해서 훑어보고 함수가 되돌아오는 결과를 얻을 수 있다는 것을 의미한다.
# Queries
list_kwargs = [
    {"string": 'data podcast'},
    {"string": 'data podcast', "pg": 2},
    {"string": 'data podcast', "pg": 3},
    {"string": 'data science podcast'},
    {"string": 'data engineering podcast'},
    {"string": 'data visualization podcast'},
]

def string_to_podcast_query(string, pg=None):
    query = urllib.parse.quote_plus(f'site:https://podcasts.apple.com/us/podcast/ {string}')
    if pg != None:
        query = query + "&start=" + str(10*(pg-1))
    return f"https://google.com/search?hl=en&lr=en&q={query}", string

# define the headers we will add to all of our requests
headers = {"user-agent" : USER_AGENT}

# set up an empty list to push results to
results = []

# cycle through the list of queries 
for x in list_kwargs:
    # return the query url and the search term that was used to create it (for classification later)
    url, search_term = string_to_podcast_query(**x)

    # make a get request to the url, include the headers with our user-agent
    resp = requests.get(url, headers=headers)

    # only proceed if you get a 200 code that the request was processed correctly
    if resp.status_code == 200:
        # feed the request into beautiful soup
        soup = BeautifulSoup(resp.content, "html.parser")

    # find all divs (a css element that wraps page areas) within google results
    for g in soup.find_all('div', class_='r'):
        # within the results, find all the links 
        anchors = g.find_all('a')
        if anchors:
            # get the link and title, add them to an object, and append that to the results array
            link = anchors[0]['href']
            title = g.find('h3').text
            item = {
                "title": title,
                "link": link,
                "search_term": search_term
            }
            results.append(item)

    # sleep for 2.5s between requests.  we don't want to annoy google and deal with recaptchas
    time.sleep(2.5)
자, 이제 구글 검색 결과가 나왔습니다. 좋습니다.여기서부터 데이터 상자에 넣고 필터를 해 봅시다.
google_results_df = pd.DataFrame(results)

# create a filter for anything that is an episode.  They should contain a ' | '.
# drop any duplicate results as well.
google_results_df['is_episode'] = google_results_df['title'].str.contains(' | ',regex=False)
google_results_df = google_results_df.drop_duplicates(subset='title')

google_results_podasts = google_results_df.copy().loc[google_results_df['is_episode']==False]
네, 방송인 목록이 있습니다.우리 애플 아나운서를 정의합시다.
def podcast_scrape(link):
    # get the link, use the same headers as had previously been defined.
    resp = requests.get(link, headers=headers)
    if resp.status_code == 200:
        soup = BeautifulSoup(resp.content, "html.parser")

    # find the figcaption element on the page
    rtg_soup = soup.find("figcaption", {"class": "we-rating-count star-rating__count"})
    # the text will return an avg rating and a number of reviews, split by a •
    # we'll spit that out, so '4.3 • 57 Ratings' becomes '4.3', '57 Ratings'
    avg_rtg, rtg_ct = rtg_soup.get_text().split(' • ')
    # then we'll take numbers from the rtg_ct variable by splitting it on the space
    rtg_ct = rtg_ct.split(' ')[0]

    # find the title in the document, get the text and strip out whitespace
    title_soup = soup.find('span', {"class":"product-header__title"})
    title = title_soup.get_text().strip()
    # find the author in the document, get the text and strip out whitespace
    author_soup = soup.find('span', {"class":"product-header__identity podcast-header__identity"})
    author = author_soup.get_text().strip()

    # find the episode count div, then the paragraph under that, then just extract the # of episodes
    episode_soup = soup.find('div', {"class":"product-artwork__caption small-hide medium-show"})
    episode_soup_p = episode_soup.find('p')
    episode_ct = episode_soup_p.get_text().strip().split(' ')[0]

    # format the response as a dict, return that response as the result of the function
    response = {
        "title": title,
        "author": author,
        "link": link,
        "avg_rtg": avg_rtg,
        "rtg_ct": rtg_ct,
        "episodes": episode_ct
    }
    return response
쿨, 우리 지금 방송인 스크레이퍼가 있어.너는 아래의 코드로 시험해 볼 수 있다.
podcast_scrape('https://podcasts.apple.com/us/podcast/follow-the-data-podcast/id1104371750')


{'title': 'Follow the Data Podcast',
'author': 'Bloomberg Philanthropies',
'link': 'https://podcasts.apple.com/us/podcast/follow-the-data-podcast/id1104371750',
'avg_rtg': '4.3',
'rtg_ct': '57'}
코드로 돌아와.이제 모든 팟캐스트 링크를 순환해서 봅시다.
# define the result array we'll fill during the loop
podcast_summ = []
for link in google_results_podcasts['link']:
    # use a try/except, since there are a few episodes still in the list that will cause errors if we don't do this.  This way, if there is an error we just wont add anything to the array.
    try:
        # get the response from our scraper and append it to our results
        pod_resp = podcast_scrape(link)
        podcast_summ.append(pod_resp)
    except:
        pass
    # wait for 5 seconds to be nice to apple
    time.sleep(5)
현재 모든 내용을 데이터 상자에 넣고 약간의 정렬과 필터를 합니다.
pod_df = pd.DataFrame(podcast_summ)

# Remove non-english podcasts, sorry guys...
pod_df = pod_df.loc[~pod_df['link'].str.contains('l=')]
pod_df.drop_duplicates(subset='link', inplace=True)

# merge with the original dataframe (in case you want to see which queries were responsible for which podcasts)
merge_df = google_results_podcasts.merge(pod_df,on='link',suffixes=('_g',''))
merge_df.drop_duplicates(subset='title', inplace=True)

# change the average rating and rating count columns from strings to numbers
merge_df['avg_rtg'] = merge_df['avg_rtg'].astype('float64')
merge_df['rtg_ct'] = merge_df['rtg_ct'].astype('int64')

# sort by total ratings and then send them to a csv
merge_df.sort_values('rtg_ct',ascending=False).to_csv('podcasts.csv')
여기서 나는 파일을 csv로 내보내고 부정행위를 했다. 나는 제목과 링크를 결합시켜 하나를 만들었다. <a hrer="link">title</a>. 그러나 이것은 주로 내가 좀 게으르기 때문이다.
어쨌든 이것은 상술한 데이터 과학 팟캐스트 목록을 만드는 모든 과정이다.너는 지금 랭킹 상위의 아나운서가 생겨서 전체 평론에 따라 랭킹을 정한다.나도 캐스트박스를 캡처의 원천으로 사용하는 것을 고려해 보았지만, 보편적으로 유행하는 아나운서를 검색할 수 있는 좋은 방법을 찾지 못했다.혹은 어떤 단어를 포함하는 아나운서.
본문의 첫 번째 버전은 여기까지이며, 이 코드의 결과를 나타냈다

최고의 데이터 과학 팟캐스트 코드 찾기 - 버전 2
좋아, 그건 좋지만, 나는 그것이 실제로는 조금 부족하다고 생각한다.내가 우연히 발견한 아나운서가 잃어버린 것 같아서, 나는 이것이 포착되기를 바란다.그래서 물건을 좀 바꿔야겠어요.우선 모바일 사용자 에이전트로 구글에 내가 휴대전화로 검색하고 있다고 알려줄 것이다.
왜?구글은 데스크톱 검색과 모바일 검색에서 서로 다른 결과를 보이기 때문에 가장 좋은 팟캐스트를 찾고 싶다면 대부분의 검색이 실제로 일어나는 곳을 원한다.당신은 기본적으로 항상 핸드폰에서 팟캐스트를 청취하기 때문에, 핸드폰에서 검색하는 것은 아마도 의미가 있을 것이다...다음은 코드입니다. 주요한 변화는
# Mobile Search Version
headers = {"user-agent" : MOBILE_USER_AGENT}

results = []
for x in list_kwargs:
    url, search_term = string_to_podcast_query(**x)
    resp = requests.get(url, headers=headers)
    if resp.status_code == 200:
        soup = BeautifulSoup(resp.content, "html.parser")

    for g in soup.find_all('div', class_='mnr-c'): # updated target class
        anchors = g.find_all('a')
        if anchors:
            link = anchors[0]['href']
            title = anchors[0].find_all('div')[1].get_text().strip() # updated title crawler
            item = {
                "title": title,
                "link": link,
                "search_term": search_term
            }
            results.append(item)

    time.sleep(2.5)
나 또 뭐 바꿨지?나는 구글의 검색어를 좀 높였고 또 약간 추가했다.만약 내가 정말 최고의 아나운서를 찾으려고 노력하고 있다면, 그것들을 검색하는 것은 의미가 있다고 생각한다.이렇게 하면, 너는 통상적으로 이런 유형의 블로그 목록에 나타나는 내용을 얻을 수 있다.
# Queries
list_kwargs = [
    {"string": 'best data podcast'},
    {"string": 'best data podcast', "pg": 2},
    {"string": 'best data podcast', "pg": 3},
    {"string": 'best data podcast', "pg": 4},
    {"string": 'best data science podcast'},
    {"string": 'best data science podcast', "pg": 2},
    {"string": 'best data science podcast', "pg": 3},
    {"string": 'best artificial intelligence podcast'},
    {"string": 'best machine learning podcast'},
    {"string": 'best data engineering podcast'},
    {"string": 'best data visualization podcast'},
]
이것이 바로 내가 두 번째 버전을 위해 한 모든 변경 사항이다.결과는 상단에서 업데이트되지만, 더욱 완전한 결과를 얻을 수 있다

최고의 데이터 과학 팟캐스트 코드 찾기 - 제3판
나는 바보다."'내 조회,'최고의 데이터 과학 팟캐스트'만 찾았는데, 그 결과 내가 전에 찾은 좋은 팟캐스트들을 놓쳤다.그래서 나는 어떤 우수한 데이터 과학자처럼 두 그룹의 조회 결과를 결합시킬 것이다...
# Queries
list_kwargs = [
{"string": 'best data podcast'},
{"string": 'best data podcast', "pg": 2},
{"string": 'best data podcast', "pg": 3},
{"string": 'best data podcast', "pg": 4},
{"string": 'best data science podcast'},
{"string": 'best data science podcast', "pg": 2},
{"string": 'best data science podcast', "pg": 3},
{"string": 'best artificial intelligence podcast'},
{"string": 'best machine learning podcast'},
{"string": 'best data engineering podcast'},
{"string": 'best data visualization podcast'},
]


폐막사
이것은 나의 blog의 교차 게시물이다.나의 현재 독자층은 매달 0회이기 때문에 나는 여기서 공유하는 것이 가치가 있다고 생각한다.

좋은 웹페이지 즐겨찾기