【问题标题】:spaced output beautifulsoup间隔输出beautifulsoup
【发布时间】:2012-12-26 22:22:09
【问题描述】:

我正在尝试废弃网站的内容。然而,在输出中我得到了不需要的空间,因此我无法解释这个输出。我使用了一个简单的代码:

 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::(输出非常大,所以只占一小部分,以便了解我面临的问题)

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

谢谢!!!!

【问题讨论】:

  • 我只是复制/粘贴了您的代码,它打印得很好。这真的是错误案例吗?
  • 是的,你到底做了什么,我无法正确输出输出,bt “OUTPUT:”之后的所有内容都是我得到的输出,你可以检查我的网站的源代码试图解析'idlebrain.com/movie/archive/index.html'
  • @getitstarted:我也无法重现您的问题。
  • 我也不能(虽然我使用的是 Python 2.7.3)
  • @Talvalin :你能告诉我你到底在做什么吗?而且你的输出和我上面发布的不一样?

标签: python python-3.x web-scraping 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')

【讨论】:

    【解决方案2】:

    我解决了,但不知道具体原因。我安装了 virtualenv 并在其中运行了我的程序。它工作得很好。

    【讨论】:

      【解决方案3】:

      这可能是 BeautifulSoup not reading documents correctly 的副本,即由 BS 4.0.2 中的 bug 引起。

      该错误已在 4.0.3 中修复。您可能需要检查

      的输出
      >>> import bs4
      >>> bs4.__version__
      

      我怀疑你系统的 BeautifulSoup 是 4.0.2,而你的 virtualenv 是 4.0.3(或更高版本)。因此,如果您希望您的代码在您的系统上正常运行,请将 BeautifulSoup 升级到更高版本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-22
        • 2015-12-27
        • 2017-05-28
        相关资源
        最近更新 更多