2012-03-25 3 views
0

まあ、私はHTMLParserでHTMLを解析するシンプルなPythonプログラムを書いています。ここに私のコードは今、最初parser.feed(....作品とall_data [74]が右ですが、第二供給が正確に最初のものと同じことを与えるが、それはshouldnPython HTML Parsingフィードエラー

import re 
import os.path 
import getopt 
import getpass 
import atom 
import getopt 
import sys 
import string 
import cookielib 
import ClientCookie 
import urllib 
import urllib2 
from HTMLParser import HTMLParser 
from htmlentitydefs import name2codepoint 

url = 'http://distribucija.altpro.hr/cjenik_include.php' 
all_data = [] 

def ReParse(pin): 
    global values 
    values = {'kaj' : 'sifra', 
      'rijec' : pin, 
      'prikaz' : '20' } 
    data = urllib.urlencode(values) 
    req = urllib2.Request(url, data) 
    response = urllib2.urlopen(req) 
    global the_page 
    the_page = response.read() 


class MyHTMLParser(HTMLParser): 
    def handle_data(self, data): 
    all_data.append(data) 

parser = MyHTMLParser() 

ReParse('3884429') 

parser.feed(the_page) 
print all_data[74] 



ReParse('1241236') 
parser.feed(the_page) 
print all_data[74] 

ですトン誰も私を助けて

答えて

0

あなたが再割り当てvaluesたびだがあなたはこの移動することができます:。?。。ReParseの外に

values = {'kaj' : 'sifra', 
     'rijec' : '', #notice the change to a blank string. 
     'prikaz' : '20' } 

をそして、その関数の内部、あなたは意志これを入れたい:

global values 
values['rijec'] = pin 

また、all_dataが見つかりませんでした。スコープMyHTMLParserには存在しません。

class MyHTMLParser(HTMLParser): 
    def handle_data(self, data): 
     # global statement should be her. 
     all_data.append(data) 

私は「グローバルスコープ」は、多くの場合、あなたの最良の選択肢ではありませんが、それは別の問題であることを警告するために、良いアイデアかもしれないと感じています。

+0

私はあなたの言ったことをしましたが、うまくいきません。 'the_page'は常に正しいです。しかしパーサーはちょうど初めて構文解析を行うが、何か別のものを出力する必要があるのは2回目だが、出力しないで初めて出力するものを出力する – BKovac

+0

エラーが見つかりました。私はall_data.appendを使用しましたが、それをリセットします。私の悪い:P – BKovac