代码之家  ›  专栏  ›  技术社区  ›  Adam Matan

python:机械化的漂亮汤,不在共享主机上工作

  •  0
  • Adam Matan  · 技术社区  · 16 年前

    我正在写一个小的网站装饰工 make my local airport site work with standard HTML .

    在本地计算机上,我使用python的 mechanize BeautifulSoup 用于抓取和解析站点内容的包,一切似乎都正常工作。我已通过安装这些软件包 apt-get .

    在我的共享宿主网站上(位于 DreamHost )我已经下载了 .tar.gz 文件,提取包,重命名目录(例如, BeautifulSoup-3.1.0.tar.gz 美人汤 )试图运行命令。

    我对BeautifulSoup有一个奇怪的错误;我不知道它是关于DreamHost上的一个旧版本的Python、目录名还是其他原因。

    [sanjose]$ python
    Python 2.4.4 (#2, Jan 24 2010, 11:50:13) 
    [GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from BeautifulSoup import BeautifulSoup                           
    >>> import mechanize                                                  
    >>> url='http://www.iaa.gov.il/Rashat/he-IL/Airports/BenGurion/informationForTravelers/OnlineFlights.aspx?flightsType=arr'
    >>> br=mechanize.Browser()                                                                                                
    >>> br.addheaders = [('User-agent', 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)')]                                
    >>> r=br.open(url)
    >>> html=r.read()
    >>> type(html)
    <type 'str'>
    

    我这样做是为了证明输入确实是一个字符串。现在让我们运行在本地计算机中工作的命令:

    >>> soup    =   BeautifulSoup.BeautifulSoup(html)
    Traceback (most recent call last):
      File "<stdin>", line 1, in ?
      File "/home/adamatan/matan.name/natbug/BeautifulSoup/BeautifulSoup.py", line 1493, in __init__
        BeautifulStoneSoup.__init__(self, *args, **kwargs)
      File "/home/adamatan/matan.name/natbug/BeautifulSoup/BeautifulSoup.py", line 1224, in __init__
        self._feed(isHTML=isHTML)
      File "/home/adamatan/matan.name/natbug/BeautifulSoup/BeautifulSoup.py", line 1257, in _feed
        self.builder.feed(markup)
      File "/usr/lib/python2.4/HTMLParser.py", line 108, in feed
        self.goahead(0)
      File "/usr/lib/python2.4/HTMLParser.py", line 148, in goahead
        k = self.parse_starttag(i)
      File "/usr/lib/python2.4/HTMLParser.py", line 268, in parse_starttag
        self.handle_starttag(tag, attrs)
      File "/home/adamatan/matan.name/natbug/BeautifulSoup/BeautifulSoup.py", line 1011, in handle_starttag
        self.soup.unknown_starttag(name, attrs)
      File "/home/adamatan/matan.name/natbug/BeautifulSoup/BeautifulSoup.py", line 1408, in unknown_starttag
        tag = Tag(self, name, attrs, self.currentTag, self.previous)
      File "/home/adamatan/matan.name/natbug/BeautifulSoup/BeautifulSoup.py", line 525, in __init__
        self.attrs = map(convert, self.attrs)
      File "/home/adamatan/matan.name/natbug/BeautifulSoup/BeautifulSoup.py", line 524, in <lambda>
        val))
      File "/usr/lib/python2.4/sre.py", line 142, in sub
        return _compile(pattern, 0).sub(repl, string, count)
    TypeError: expected string or buffer
    

    有什么想法吗?

    亚当

    1 回复  |  直到 16 年前
        1
  •  3
  •   Justin Peel    16 年前

    您使用的是针对Python3.x的BeautifulSoup 3.1.0版本。针对Python2.x使用BeautifulSoup 3.0版本。