Python HTML解析源

2024-10-05 11:02:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了一个简单的python程序,用HTMLParser解析HTML。这是我的密码

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]

现在,第一个解析器.feed(.... 工作,所有的数据[74]都是正确的,但是第二个feed给出的结果与第一个完全相同,但是它不应该。有人能帮我吗?在


Tags: thefromimportparserurldatafeedpage
1条回答
网友
1楼 · 发布于 2024-10-05 11:02:05

你每次都在分配values。你想移动这个:

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

ReParse的外面。然后,在该函数中,您需要将以下内容:

^{pr2}$

你似乎也错过了all_data。它不存在于MyHTMLParser范围内。在

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

我确实觉得,提醒你“全球范围”通常不是你的最佳选择,但这是另一回事。在

相关问题 更多 >

    热门问题