python
  • cgi
  • urllib
  • 2011-08-02 1 views 1 likes 
    1

    フォームデータを取得して検索エンジンに送信し、検索結果をWebページに表示するCGIスクリプトを作成したいと思います走る私はurllibとurllib2を使用しようとしています。私のスクリプトでPythonでCGIスクリプトを使用してデータベースを検索し、結果を印刷する

    :hello.py

    if form.has_key("data_search"): 
        datasearch = form["data_search"].value 
    
        url = 'http://www.example.com/' 
    
        data = urlparse.urlparse(datasearch) 
        data2 = urllib.urlencode(data) 
    
    
        req = urllib2.Request(url, data2) 
        response = urllib2.urlopen(url, data2) 
        the_page = response.read() 
    
        print response 
        response.close() 
    

    だから私は別のURL(www.example.com)で、検索エンジンに送信し、ユーザー入力(datasearch)を利用したいと思いますし、私のウェブページ(www.server.com/cgi-bin/hello.py)に検索結果を印刷してください。

    この現在のスクリプトは機能していません。私は文法エラーのようなものを作ったのかどうか、まったく新しいアプローチが必要なのかどうかはわかりません。

    最初のエラーが

    DATA2 = urllib.urlencode(データ)

    組み込みはTypeError = TypeError例外である:無効な文字列以外の配列またはマッピングオブジェクト 引数の=( '無効非''、 ''、 ''、 ''、 '')、TTBarが私のクエリである場合には、 'TTBar'、 ''、 ''、 '')の結果が返されます。

    +0

    を、質問は何ですか? – MatthewWilkes

    +0

    私は編集したので質問が明確になっていますか? – Katie

    +0

    どこがうまくいかないのですか?受信したスタックトレースを印刷してください(HTTP 500エラーが発生したばかりの場合は、いくつかの値を取得しているかどうかを確認するためにいくつかの印刷ステートメントを追加してください)。 –

    答えて

    1

    フォームデータの取得方法がわかりませんが、datasearch = form["data_search"].valueは既にdata_searchパラメータの値を返しています。フルURL、つまりhttp://somesite.com/?datasearch=TTBARを解析するには、urlparse.urlparseを使用します。

    import urllib2 
    
    url = 'http://example.com' 
    datasearch = 'TTBAR' 
    req = urllib2.Request(url, {'param': datasearch}) 
    resp = urllib2.urlopen(req) 
    

    それとも、より良い優れたrequestsライブラリを使用します:だから、このことを念頭に置いて、あなたがこれを行うことができ、私は理解していない

    resp = requests.post(url, {'param': datasearch}) 
    
    関連する問題