2016-03-03 75 views
3

我希望能夠製作評論用戶列表,但在使用BeautifulSoup進行拉取時無法在頁面上找到iframe。評論是在iframe中,由於某些原因,當我用BeautifulSoup拉動html時,似乎並沒有iframe。我知道有一個持有評論的iframe,因爲我查看了網頁上的html,以便嘗試深入研究並使用BeautifulSoup提取我需要的內容。我可以用BeautifulSoup在javascript後面獲得一個iframe嗎?

from bs4 import BeautifulSoup 
from urllib import urlopen 

url = urlopen("http://www.datpiff.com/Curreny-Alchemist-Carrollton-Heist-mixtape.766213.html") 
bsObj = BeautifulSoup(url,"html.parser") 

frame_list = bsObj.findAll("iframe") 

for frame in frame_list: 
    print(frame) 

不過,我發現這個JavaScript可能的答案,我需要什麼,但我想問問,我是想在爲了某種方式運行此JavaScript的服務器保存此頁相信我是一個用戶,然後iframe出現?

<script language="javascript"> 
    var disqus_shortname = 'datpiff4'; 
    /* * * DON'T EDIT BELOW THIS LINE * * */ 
    (function() { 
     var s = document.createElement('script'); s.async = true; 
     s.type = 'text/javascript'; 
     s.src = '//' + disqus_shortname + '.disqus.com/count.js'; 
     (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s); 
    }()); 
</script> 

我希望能夠得到這個iframe中,而無需打開使用硒時就像一個瀏覽器。這可能嗎?如果不是,除了BeautifulSoup以外,我還能用什麼來做這件事?

回答

2

iframe通過JavaScript附加,該頁面在頁面加載到適當的環境 - 瀏覽器後執行。 BeautifulSoup不以任何方式執行JS - 它只是從確定的URL中獲取字符串並將其解析爲HTML。

+0

感謝您的回覆!那麼我怎樣才能到達iframe呢?我不應該使用BeautifulSoup嗎?如果是這樣,我應該使用什麼? – ImNotBot

+1

要獲得iframe,您應該在執行JS後獲取呈現的頁面 - 這裏是與答案相同的問題:http://stackoverflow.com/questions/7064109/how-to-parse-html-that-includes-javascript-代碼http://stackoverflow.com/questions/11047348/is-this-possible-to-load-the-page-after-the-javascript-execute-using-python –

+0

謝謝,但我已經看到了這些網頁。我可能不得不改變我的問題。我可以在不使用硒打開網絡瀏覽器的情況下訪問iframe嗎?如果可能的話,我真的想要擺脫硒。 – ImNotBot

相關問題