2012-12-26 32 views
2

我試圖報廢一個網站的內容。然而,在輸出即時獲取不需要的空間,因此我不能解釋這個輸出。即時通訊使用一個簡單的代碼:間隔輸出beautifulsoup

import urllib2 
from bs4 import BeautifulSoup 
html= 'http://idlebrain.com/movie/archive/index.html' 
soup = BeautifulSoup(urllib2.urlopen(html).read()) 
print(soup.prettify(formatter=None)) 

OUTPUT::(輸出非常大,因此面對它,以便了解哪些問題IM的一小部分)

 <html><head><title>Telugu cinema reviews by Jeevi - idlebrain.com</title> 
     <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> 
     </head><bodybgcolor="#FFFFFF" leftmargin="0" marginheight="0" marginwidth="0" topmargin="0"><table border="0" cellpadding="0" cellspacing="0" width="96%"> 
    <tr> 
    <td align="left"> <img alt="Idlebrain.Com" height="63" src="../../image/vox_r01_c2.gif"width="264"/></td> 
    <td><div align="right"><script type="text/javascript"><!-- 
     g o o g l e _ a d _ c l i e n t  =  " c a - p u b - 8 8 6 3 7 1 8 7 5 2 0 4 9 7 3 9 " ; 

    / *  r e v i e w s - h o r  * / 

     g o o g l e _ a d _ s l o t  =  " 1 6 4 8 6 2 0 2 7 3 " ; 

     g o o g l e _ a d _ w i d t h  =  7 2 8 ; 

     g o o g l e _ a d _ h e i g h t  =  9 0 ; 

    // - - > 

    < / s c r i p t > 

    < s c r i p t  t y p e = " t e x t / j a v a s c r i p t " 

    s r c = " h t t p : // p a g e a d 2 . g o o g l e s y n d i c a t i o n . c o m / p a g e a d / s h o w _ a d s . j s " > 

    < / s c r i p t > 

          < / d i v > 

        < / t d > 

      < / t r > 

    < / t a b l e > 

    < t a b l e  w i d t h = " 9 6 % "  b o r d e r = " 0 "  c e l l s p a c i n g = " 0 "  c e l l p a d d i n g = " 0 " > 

      < t r >  

        < t d  w i d t h = " 1 2 8 "  v a l i g n = " t o p "  a l i g n = " l e f t " >  

          < t a b l e  b o r d e r = " 0 "  c e l l p a d d i n g = " 0 "  c e l l s p a c i n g = " 0 "  w i d t h = " 1 1 9 " > 

    < / t r > 

    < / t a b l e > 

    < / b o d y > 

    < / h t m l > 

      </script></div></td></tr></table></body></html> 

謝謝!!!!

+0

我只是複製/粘貼你的代碼,並將其印刷精美。這真的是錯誤嗎? – Triptych

+0

是什麼你做了什麼,我已經能夠rpint輸出正確,bt一切後,「輸出:」是輸出,即時通訊,你可以檢查即時通訊試圖解析的網站的源代碼'http:/ /idlebrain.com/movie/archive/index.html' – getitstarted

+0

@getitstarted:我也無法重現您的問題。 – Blender

回答

0

我解決了它,但完全不知道原因。我安裝了virtualenv並在其中運行我的程序。它的工作完美。

0

這可能是BeautifulSoup not reading documents correctly的副本,即由BS 4.0.2中的bug造成的。

該錯誤已在4.0.3中修復。您可能要檢查的

>>> import bs4 
>>> bs4.__version__ 

輸出我懷疑這是4.0.2系統的BeautifulSoup,雖然這是4.0.3(或更高版本)在您的virtualenv。因此,如果您希望代碼在系統上正常運行,請將BeautifulSoup升級到更高版本。

1

可以指定解析器html.parser

soup = BeautifulSoup(urllib2.urlopen(html).read(), 'html.parser') 

或者你可以指定html5解析器:

soup = BeautifulSoup(urllib2.urlopen(html).read(), 'html5') 

沒有安裝html5解析器了嗎?從命令行安裝:

sudo apt-get install python-html5lib 

您也可以使用xml解析器,但你可能會看到multi-valued attributes一些差異就像class="foo bar"

soup = BeautifulSoup(urllib2.urlopen(html).read(), 'xml')