我遇到spynner出現奇怪的錯誤,但問題是通用的。 Spynner是python的有狀態的web瀏覽器模塊。Python代碼在__init __()函數中沒有看到iniialized的類變量
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/spynner-2.16.dev0-py2.7.egg/spynner/browser.py", line 1651, in createRequest
self.cookies,
AttributeError: 'Browser' object has no attribute 'cookies'
Segmentation fault (core dumped)
這裏的問題是其與段錯誤不是讓我繼續 - 當它的工作原理,但我幾乎每次運行時我得到一個失敗說這句話的,它工作正常。
望着用於spynner代碼中,我看到,餅乾變量其實在__init__()
函數初始化瀏覽器類是這樣的:
self.cookies = []
現在失敗的真正要說的是,__init__()
不運行因爲它沒有看到cookies變量。我不明白這怎麼可能。沒有限制到spynner模塊可以有人冒險猜測如何python對象可能會失敗,像這樣的錯誤?
編輯:我絕對會在這裏粘貼我的代碼,除了它不是全部在一個地方爲我緊湊地顯示它。我應該早點完成,但這裏是整體結構以及我如何實例化和使用spynner。
# helper class to get url data
class C:
def __init__(self):
self.browser = spynner.Browser()
def get_data(self, url):
try:
self.browser.load(url)
return self.browser.html
except:
raise
# class that does other stuff among saving url data to disk
class B:
def save_url_to_disk(self, url):
urlObj = C()
html = urlObj.get_data(url)
# do stuff with html
# class that drives everything
class A:
def do_stuff_and_save_url_data(self, url):
fileObj = B()
fileObj.save_url_to_disk(url)
driver = A()
# call this function for multiple URLs.
driver.do_stuff_and_save_url_data(url)
我運行事情是這樣的---
# xvfb-run python myfile.py
的段錯誤可能是別的東西我做的。可能是因爲我使用的xvfb而導致處理不當?我還不知道。我需要提到的是,我對python比較陌生。
我注意到,當我運行上面的代碼並說'http://www.google.com'時,我每隔一段時間都會收到段錯誤。
你打電話給Spynner?你是繼承瀏覽器? –
分割錯誤?無論你做什麼,都不應該發生。 – user2357112
你能告訴我們你的代碼嗎?任何代碼在任何時候都會執行'del self.cookies'嗎? –