Url des erstens Youtube video herausfinden.

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
samed06
User
Beiträge: 4
Registriert: Montag 6. Juli 2020, 09:48

Hi
Also ich arbeite grade an einem projekt und das problem ist .
ich brauche ein Code der mir als beispiel https://www.youtube.com/results?search_query=rick+roll die url des ersten videos rausspuckt.
teil des codes:

Code: Alles auswählen

input = "Rick roll"
input = [item for item in input.split('\n')]
join = ' '.join(result)



almost = join.replace(" ", "+")

url = "https://www.youtube.com/results?search_query=" + almost

print(url)
####################################







#####################################
ydl_opts = {}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
    ydl.download([end_result])
(#### = fehlender code)
ich bedanke mich schonmal im voraus.
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

@samed06: Query-Parameter codiert man nicht mit replace, sondern nutzt die passende Funktion (urllib.parse.urlencode).
Zum Lesen gibt es urllib.request oder requests. Zum Parsen von HTML gibt es BeautifulSoup.
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

Du solltest Mal die YouTube Seite aus deiner URL aus analysieren.
Irgendwann kommst du zu einem a-HTML-Tag:

Code: Alles auswählen

<a id="video-title" class="yt-simple-endpoint style-scope ytd-video-renderer" title="Rick Astley - Never Gonna Give You Up (Video)" href="/watch?v=dQw4w9WgXcQ" aria-label="Rick Astley - Never Gonna Give You Up (Video) von Official Rick Astley vor 10 Jahren 3 Minuten, 33 Sekunden 716.730.788 Aufrufe">
                <yt-formatted-string class="style-scope ytd-video-renderer" aria-label="Rick Astley - Never Gonna Give You Up (Video) von Official Rick Astley vor 10 Jahren 3 Minuten, 33 Sekunden 716.730.788 Aufrufe">Rick Astley - Never Gonna Give You Up (Video)</yt-formatted-string>
</a>
D.h., solltest du es mittels WebScrapping machen wollen, dass du mit Beautiful-Soup nach a-Tags mit der ID (siehe oben) suchen musst und dann bloß den 'href' extrahieren musst.
Und um das 1. Video zu kriegen, solltest du alle Tags mit einer for-Schleife abrufen lassen und einen Zähler einbauen.
(hier der übergeordnete Tag vom a-Tag , siehe oben)

Code: Alles auswählen

<div id="contents" class="style-scope ytd-item-section-renderer"><ytd-video-renderer class="style-scope ytd-item-section-renderer" lockup="" prominent-thumb-style="DEFAULT"><!--css-build:shady-->
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Ich würde dir da eher zu Selenium raten, da die Seite einiges durch JS nachlädt. (Oder gibt es da eine andere Möglichkeit mit requests?)
Antworten