4

Django で BeautifulSoup バージョン 4 (mod_python で Apache2 を使用) を使用して、オンザフライで HTML ページをレンダリングしようとしていました。ただし、HTML 文字列を BeautifulSoup コンストラクター (以下のコードを参照) に渡すとすぐに、ブラウザーは Web サーバーを待ってハングアップします。CLIで同等のコードを試してみましたが、魅力的に機能します。したがって、これは BeautifulSoups 環境、この場合は Django + Apache + mod_python に関連するものだと推測しています。

import bs4
import django.shortcuts as shortcuts

def test(request):
    s = bs4.BeautifulSoup('<b>asdf</b>')
    return shortcuts.render_to_response('test.html', {})

pip を使用して BeautifulSoup をインストールしpip install beautifulsoup4ました。標準の Debian パッケージを使用して BeautifulSoup3 をインストールしようとしましapt-get install python-beautifulsoupたが、次の同等のコードは (ブラウザーと CLI の両方から) 正常に動作します。

from BeautifulSoup import BeautifulSoup
import django.shortcuts as shortcuts

def test(request):
    s = BeautifulSoup('<b>asdf</b>')
    return shortcuts.render_to_response('test.html', {})

Apache のアクセス ログとエラー ログを調べましたが、停止した要求に何が起こっているかについての情報は表示されません。/var/log/syslog と /var/log/messages も確認しましたが、それ以上の情報はありません。

使用した Apache 構成は次のとおりです。

<VirtualHost *:80>
    DocumentRoot /home/nandersson/src
    <Directory /home/nandersson/src>
        SetHandler python-program
        PythonHandler django.core.handlers.modpython
        SetEnv DJANGO_SETTINGS_MODULE app.settings
        PythonOption django.root /home/nandersson/src
        PythonDebug On
        PythonPath "['/home/nandersson/src'] + sys.path"
    </Directory>

    <Location "/media/">
        SetHandler None
    </Location>
    <Location "/app/poc/">
        SetHandler None
    </Location>
</VirtualHost>

これをさらにデバッグする方法がわかりません。バグかどうかもわかりません。この問題の根底にたどり着く方法、または同様の問題に遭遇した人はいますか?

4

4 に答える 4

15

mod_python で Apache2 を使用しています。「html.parser」を明示的に渡してスープを取得することで、ハングの問題を解決しました。

s = bs4.BeautifulSoup('<b>asdf</b>', 'html.parser')
于 2012-10-03T09:05:41.290 に答える
2

これは、ここで説明されている Cython と mod_wsgi の間の相互作用であり、ここで美しいスープのコンテキストで検討されている可能性があります。これはあなたに似た以前の 質問です。

于 2012-10-04T19:03:54.317 に答える
2

試す

doc = BeautifulSoup(html, 'html5lib')

私の場合、「html.parser」はしばしば HTMLParseError https://groups.google.com/forum/?fromgroups=#!topic/beautifulsoup/x_L9FpDdqkcにつながります

于 2013-02-24T10:41:53.897 に答える
1

私は約1年前に同じ問題を経験しました.BeautifulSoup 4.3.2の新しいバージョンで同様のセットアップ(django + mod_wsgi + apache2)を試してみたところ、問題は修正されたようです.

于 2014-03-21T17:48:44.617 に答える