Python: Mechanize и BeautifulSoup не работают на компьютере с общим хостингом - PullRequest
0 голосов
/ 05 июня 2010

Я пишу небольшой декоратор сайта для , чтобы мой местный сайт аэропорта работал со стандартным HTML .

На моем локальном компьютере я использую пакеты Python mechanize и BeautifulSoup для очистки и анализа содержимого сайта, и все, кажется, работает нормально. Я установил эти пакеты через apt-get.

На своем сайте общего хостинга (на DreamHost ) я скачал файлы .tar.gz, извлек пакеты, переименовал каталоги (например, с BeautifulSoup-3.1.0.tar.gz до BeautifulSoup) и попытался запустить команда.

У меня странная ошибка с BeautifulSoup; Я не знаю, касается ли она более старой версии Python на Dreamhost, имен каталогов или другой причины.

[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 Ответ

3 голосов
/ 05 июня 2010

Вы используете BeautifulSoup версии 3.1.0 для Python 3.x. Используйте версию 3.0 BeautifulSoup для Python 2.x.

...