Python と BeautifulSoup4 で興味深い問題が発生しています。私のメソッドは、与えられたレストラン (dict キー) によってその日の地元の学生レストランのメニューを取得し、それらを表示します。
def fetchFood(restaurant):
# Restaurant id's
restaurants = {'assari': 'restaurant_aghtdXJraW5hdHIaCxISX1Jlc3RhdXJhbnRNb2RlbFYzGMG4Agw', 'delica': 'restaurant_aghtdXJraW5hdHIaCxISX1Jlc3RhdXJhbnRNb2RlbFYzGPnPAgw', 'ict': 'restaurant_aghtdXJraW5hdHIaCxISX1Jlc3RhdXJhbnRNb2RlbFYzGPnMAww', 'mikro': 'restaurant_aghtdXJraW5hdHIaCxISX1Jlc3RhdXJhbnRNb2RlbFYzGOqBAgw', 'tottisalmi': 'restaurant_aghtdXJraW5hdHIaCxISX1Jlc3RhdXJhbnRNb2RlbFYzGMK7AQw'}
if restaurants.has_key(restaurant.lower()):
soup = BeautifulSoup(urllib.urlopen("http://murkinat.appspot.com"))
meal_div = soupie.find(id="%s" % restaurants[restaurant.lower()]).find_all("td", "mealName hyphenate")
mealstring = "%s: " % restaurant
for meal in meal_div:
mealstring += "%s / " % meal.string.strip()
mealstring = "%s @ %s" % (mealstring[:-3], "http://murkinat.appspot.com")
return mealstring
else:
return "Restaurant not found"
これは私の IRCBot の一部になる予定ですが、現在はテスト マシン (Python 2.7.3 を使用した Ubuntu 12.04) でのみ動作しますが、ボットを実行している他のマシン (Python 2.6.5 を使用した Xubuntu) では失敗します。
ラインの後
soup = BeautifulSoup(urllib.urlopen("http://murkinat.appspot.com"))
>>> type(soup)
<class 'bs4.BeautifulSoup'>
私はそれを印刷することができ、あるはずのすべてのコンテンツを持っていることを示していますが、何でも見つけることができます. 私がこれを行う場合:
>>> print soup.find(True)
None
>>> soup.get_text()
u'?xml version="1.0" encoding="utf-8" ?'
他のマシンではすべてを完全に読み取りますが、最初の行まで読み取りを停止します。
出力は次のようになります (この日付のレストラン パラメータ「Tottisalmi」を使用した作業マシンから):
Tottisalmi: Sveitsinleike, kermaperunat / Jauheliha-perunamusaka / Uuniperuna, kylmäsavulohitäytettä / Kermainen herkkusienikastike @ http://murkinat.appspot.com
私はこれについて完全に無知です。ボットで問題なく機能する類似の種類の BeautifulSoup 解析メソッドが多数あります (URL のタイトルとウィキペディアのものを解析します) が、これは私を悩ませ続けます。
誰にもアイデアはありますか?他のどこでも BeautifulSoup4 が正常に動作するため、奇妙に聞こえる私の Python バージョンと関係があるとしか思えません。