2017-08-12 3 views
0

Ich weiß nicht, warum ich nicht auf den Video-Tag zugreifen kann.BeautifulSoup kann kein Video oder bestimmte div-Tags finden

Ich versuche, die Videoquelle zu kratzen, aber es lässt mich nicht auf den "Video" -Tag überhaupt zugreifen.

<video class="jw-video jw-reset" disableremoteplayback="" webkit- 
 
    playsinline="" playsinline="" jw-loaded="data" 
 
    src="randomsrc2" jw-played="" style="object-fit: 
 
    fill;"></video>

#web scraping stuff 
    #web scraping stuff 
    import bs4 as bs 
    import urllib.request 

    url = 'https://gostream.is/film/cars-3-21095/watching.html?ep=682669' 
    user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
    rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7' 

    headers={'User-Agent':user_agent,} 

    q = urllib.request.Request(url, headers=headers) 
    sauce = urllib.request.urlopen(q).read() 
    soup = bs.BeautifulSoup(sauce,'lxml') 
    print(soup) 

    f=open('testd2.txt','w+') 
    kuk = str(soup) 
    f.write(kuk) #When I search for 'video' in the file it doesn't give me anything 
    video = soup.find('video') 
    print(video) #gives None 
+0

Der '

Antwort

0

in Firefox about:config gehen und für javascript.enabled als falsch suchen. Öffne deinen Link. Wenn Sie Ihren Video-Link nicht im Browser sehen, bedeutet dies, dass das Tag zur Laufzeit mit JavaScript eingefügt wird. Und Anfrage wird das nicht können.

Dafür müssten Sie einen Browser und Selen haben. In diesem Fall wird Ihnen die Chance Ihr Code wie unten

from selenium import webdriver 
driver = webdriver.Firefox() 
url = 'https://gostream.is/film/cars-3-21095/watching.html?ep=682669' 
driver.get(url) 
sauce = driver.page_source 
soup = bs.BeautifulSoup(sauce,'lxml') 

Sie noch etwas Suppe alle zusammen und verwenden wie unten

for elem in driver.find_elements_by_tag_name("video"): 
    print(elem.get_attribute("src")) 
+0

Es funktioniert nicht, auch wenn ich Firefox verwende. – Filip

+0

@Filip, ich hatte den Tag-Namen falsch. Es sollte "Video" statt "Videos" sein. Ich habe meinen Code ausgeführt und bekam die Ausgabe 'blob: https: // gostream.is/fd3f41ae-e86d-1f48-9a20-8ca60590e4cf' –