2016-09-12 3 views
0

Die folgenden Codezeilen gibt mir den Quellcode für eine bestimmte Wiedergabeliste und speichert alle URLs in einer Variablen "newlink". Ich möchte eine Schleife schreiben, die durch diese URL-Kette gehen kann und die, die '/ watch? V =' sagen, in ein Array in Python speichern, so dass Array [0] mir den ersten Link, array [1] geben würde Sekunde und so weiter. Was wäre der beste Weg, dies zu tun?Verwenden von Schleife (Efficient-Looping-Technik): Um bestimmte URLs aus meiner Zeichenfolge in Python zu extrahieren

import re 
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from bs4 import BeautifulSoup 
import requests 


#Asks which playlist you want downloaded 
print ('Which playlist do you want to download?') 
playlist = input() 

#Access my youtube playlists page 
driver = webdriver.Chrome(executable_path='E:\chromedriver\chromedriver.exe') 
driver.get("https://www.youtube.com/user/randomuser/playlists?sort=dd&view=1&shelf_id=0") 

#Access the 'classic' playlist 
if playlist == 'classic': 
    driver.find_element_by_xpath('//a[contains(text(), "classic")]').click() 
    newurl = driver.current_url 

    requrl = requests.get(newurl) 
    requrlcont = requrl.content 

    soup = BeautifulSoup(requrlcont, "html.parser") 
    for link in soup.find_all('a'): 
     newlink = link.get('href')) 
+0

Sie können die letzten beiden Zeilen mit 'links = [link [ 'href'] für Link in soup.find_all ('a') ersetzen, wenn‚/ watch? V = 'in link.get (' href ',' ')] '. Oder setzen Sie einfach die 'if'-Anweisung in die Schleife. – Evert

+0

Beachten Sie, dass Ihr aktueller Code jedesmal 'newlink' überschreibt: nur die letzte URL wird in' newlink' gespeichert. – Evert

Antwort

0

Dieser Code wurde mit einer Wiedergabeliste getestet, die das Array tatsächlich erstellt hat.

import re 
from selenium import webdriver 
from bs4 import BeautifulSoup 
import requests 

#Asks which playlist you want downloaded 
print ('Which playlist do you want to download?') 
playlist = raw_input() 

#Access my youtube playlists page 
driver = webdriver.Chrome(executable_path='/usr/lib/chromium-browser/chromedriver') 
driver.get("https://www.youtube.com/user/randomuser/playlists?sort=dd&view=1&shelf_id=0") 

#Access the 'Favorites' playlist 
if playlist == 'Favorites': 
    driver.find_element_by_xpath('//a[contains(text(), "Favorites")]').click() 
    newurl = driver.current_url 

    requrl = requests.get(newurl) 
    requrlcont = requrl.content 
    links = [] 
    soup = BeautifulSoup(requrlcont, "html.parser") 
    for link in soup.find_all('a'): 
     #print("link " + str(link)) 
     if re.match("/watch\?v=", link.get('href')): 
      links.append(link.get('href')) 

    print links 

Ausgabe

python pyprog.py 
Which playlist do you want to download? 
Favorites 
[u'/watch?v=fG9_AYzehJw&list=FLRMDL-xDn7xqDznwaQbUH6g', u'/watch?v=fG9_AYzehJw&list=FLRMDL-xDn7xqDznwaQbUH6g', u'/watch?v=fG9_AYzehJw&index=1&list=FLRMDL-xDn7xqDznwaQbUH6g', u'/watch?v=fG9_AYzehJw&index=1&list=FLRMDL-xDn7xqDznwaQbUH6g', u'/watch?v=MKfDwChOoHI&index=2&list=FLRMDL-xDn7xqDznwaQbUH6g', u'/watch?v=MKfDwChOoHI&index=2&list=FLRMDL-xDn7xqDznwaQbUH6g', u'/watch?v=JQTXawaAKNA&index=3&list=FLRMDL-xDn7xqDznwaQbUH6g', u'/watch?v=JQTXawaAKNA&index=3&list=FLRMDL-xDn7xqDznwaQbUH6g', u'/watch?v=dG8wsae-6tU&index=4&list=FLRMDL-xDn7xqDznwaQbUH6g', u'/watch?v=dG8wsae-6tU&index=4&list=FLRMDL-xDn7xqDznwaQbUH6g', u'/watch?v=9mcZdDCOeuE&index=5&list=FLRMDL-xDn7xqDznwaQbUH6g', u'/watch?v=9mcZdDCOeuE&index=5&list=FLRMDL-xDn7xqDznwaQbUH6g', u'/watch?v=lh0ZB9OD_fg&index=6&list=FLRMDL-xDn7xqDznwaQbUH6g', u'/watch?v=lh0ZB9OD_fg&index=6&list=FLRMDL-xDn7xqDznwaQbUH6g', u'/watch?v=NfLmCPfx_gY&index=7&list=FLRMDL-xDn7xqDznwaQbUH6g', u'/watch?v=NfLmCPfx_gY&index=7&list=FLRMDL-xDn7xqDznwaQbUH6g', u'/watch?v=FoQzWb_f1oA&index=8&list=FLRMDL-xDn7xqDznwaQbUH6g', u'/watch?v=FoQzWb_f1oA&index=8&list=FLRMDL-xDn7xqDznwaQbUH6g', u'/watch?v=l8rJ1WML60Y&index=9&list=FLRMDL-xDn7xqDznwaQbUH6g', u'/watch?v=l8rJ1WML60Y&index=9&list=FLRMDL-xDn7xqDznwaQbUH6g', u'/watch?v=9rCug1ANQdE&index=10&list=FLRMDL-xDn7xqDznwaQbUH6g', u'/watch?v=9rCug1ANQdE&index=10&list=FLRMDL-xDn7xqDznwaQbUH6g'] 
Verwandte Themen