2017-12-23 9 views
0

Ich versuche, ein einfaches Python-Skript zum Suchen und Herunterladen youtube Video mit youtube-dl zu schreiben. Ich bin auf die folgenden code die Suche nach der Video-ID. Ich bin nicht in der Lage die folgende Zeile zu verstehen:Nicht in der Lage, die Syntax zu verstehen href = "

search_results = re.findall(r'href=\"\/watch\?v=(.{11})', html_content.read().decode()) 

Ein youtube-Link ist wie folgt:? https://www.youtube.com/watch?v=MJGkm0UwNRk tut die Verwendung von href = \ "\ bedeutet, überspringt den https://www.youtube.com Teil weg- und an die /watch v = < 11-stellige ID> oder etwas anderes.

Code:

import urllib.request 
import urllib.parse 
import re 

query_string = urllib.parse.urlencode({"search_query" : input()}) 
html_content = urllib.request.urlopen("http://www.youtube.com/results?" + query_string) 
search_results = re.findall(r'href=\"\/watch\?v=(.{11})', html_content.read().decode()) 
print("http://www.youtube.com/watch?v=" + search_results[0]) 
+0

@KenWhite Ich weiß, was href ist, aber ich bin verwirrt mit der Syntax href = \ "\ verursachen ein YouTube-Link normalerweise wie" https geht: // www .youtube.com/watch? v = MJGkm0UwNRk '. Das Verwenden von href = \ "\ bedeutet, den https://www.youtube.com-Teil oder etwas anderes zu überspringen. – rgo

+1

Sie sollten Ihre Frage dann bearbeiten, um klar zu machen, was Sie fragen. –

Antwort

1

Sie sollten für regular expression operations überprüfen.

Und dies ist die Erklärung von regex101:

"href=\"\/watch\?v=(.{11})"g 

href= matches the characters href= literally (case sensitive) 
\" matches the character " literally (case sensitive) 
\/ matches the character/literally (case sensitive) 
watch matches the characters watch literally (case sensitive) 
\? matches the character ? literally (case sensitive) 
v= matches the characters v= literally (case sensitive) 

1st Capturing Group (.{11}) 
    .{11} matches any character (except for line terminators) 
    {11} Quantifier — Matches exactly 11 times 
Verwandte Themen