2017-08-12 60 views
0

我不知道爲什麼它不讓我訪問視頻標籤。BeautifulSoup無法找到視頻或某些div標籤

我試圖抓取視頻源,但它不讓我訪問'視頻'標籤。

<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

的'

回答

0

在火狐瀏覽器about:config和搜索javascript.enabled爲假。打開你的鏈接。如果您在瀏覽器中沒有看到您的視頻鏈接,那麼這意味着標籤正在使用JavaScript在運行時插入。而請求將無法做到這一點。

因此,你需要一個瀏覽器和硒。在這種情況下,你會機率使你的代碼如下

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') 

你甚至可以刪除的湯一起,使用類似下面

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

即使使用Firefox,它也不起作用。 – Filip

+0

@Filip,我的標籤名稱錯誤。它應該是「視頻」而不是「視頻」。我運行我的代碼並得到了輸出'blob:https:// gostream.is/fd3f41ae-e86d-1f48-9a20-8ca60590e4cf' –