我在教自己的面向對象的python編程。我正在使用一個基本的GUI和一個簡單的Web解析器 - 它們都在單獨的類文件中。我的目標是從GUI調用Web解析器。從GUI調用web解析器python
我的web分析器類只是下載一個頁面並將其存儲爲列表。當我在GUI上按下一個按鈕時,我想要一個簡單的網頁打印輸出。除了我遇到問題。當我點擊按鈕時,它聲明我的'解析器'名稱沒有被定義。我開始有點困惑。如果有人能讓我知道這很好。謝謝。
我的網絡分析器:
from BeautifulSoup import BeautifulSoup
import urllib2
class Parser(object):
def __init__(self, url):
self.url = url
self.contents = ''
def download_page(self):
#open the page
page=urllib2.urlopen(self.url)
soup = BeautifulSoup(page.read())
page_find=soup.findAll('td')
#lists for storing page data
page_list = []
#Store HTML table data into list
for page_data in page_find:
page_list.append(page_data.string)
return page_list
if __name__ == '__main__':
url = "http://www.any_url"
Parser = Parser(url)
print Parser.download_page()
我的GUI類如下:
class Example(QtGui.QMainWindow):
def __init__(self):
super(Example, self).__init__()
#Made changes here
self.url = url
self.parser = Parser(url)
self.initUI()
def initUI(self):
parse_list = []
btn1 = QtGui.QPushButton("Button 1", self)
btn1.move(30, 50)
btn1.clicked.connect(self.buttonClicked)
self.statusBar()
self.setGeometry(300, 300, 290, 150)
self.show()
#supposed to call web parser when button is pressed
def buttonClicked(self):
parse_list = parser.download_page()
print parse_list
sender = self.sender()
self.statusBar().showMessage(sender.text() + ' was pressed')
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
如果名 == '主要': 的main()
看起來像一個示波器問題,'parser'包含在'initUI()'中。在你調用'buttonClicked()'的時候已經消失了。 –
@RedAlert我將parser = Parser(object)移動到了buttonClicked()中,但得到了錯誤:TypeError:無法設置內置/擴展類型對象的屬性 – David
爲什麼你傳入'object'?重點是什麼? –