У меня есть рабочий код, который получает данные с веб-сайта, при необходимости подключается к нему и сохраняет файлы cookie в файле, чтобы они сохранялись каждый раз при запуске кода. Вот то, что код выглядит (очевидно, я удалил импорт и большую часть кода, чтобы сделать его более удобным для чтения)Запросы и файл cookiejar не работают в классе
cookiejar_file = 'tmp/cookies.txt'
cj = http.cookiejar.LWPCookieJar(cookiejar_file)
try:
cj.load(ignore_discard=True)
except:
pass
s = requests.Session()
s.cookies = cj
# Do stuff, connect if necessary by doing a s.post() on the connect page
cj.save(cookiejar_file, ignore_discard=True)
Но теперь, когда я пытаюсь создать более чистый класс делает эту работу есть проблема: каждый раз, когда я запускаю код, он должен снова подключиться к веб-сайту. Поэтому я должен делать что-то неправильно, и файлы cookie не загружены успешно, я думаю?
class Parent:
CookieFile = 'tmp/cookies.txt'
def __init__(self):
self.cj = http.cookiejar.LWPCookieJar(Parent.CookieFile)
self.cj.load()
self.session = requests.Session()
self.session.cookies = self.cj
def save_cookies(self):
self.cj.save(Parent.CookieFile, ignore_discard=True)
class Child(Parent):
def __init__(self):
Parent.__init__(self)
def main(self):
# Do stuff, connect if necessary
self.save_cookies()
a = Child
a.main()
Есть ли проблема с тем, как я это делаю? Для меня это похоже на то, что нужно делать то же самое. Файл cookie был успешно создан при первом запуске кода, а файлы cookie меняются каждый раз при его выполнении.
почему не self.CookieFile вместо Parent.CookieFile? И вы должны создать экземпляр класса Child, выполнив это: a = Child() – tinySandy
Parent.CookieFile работает, так что это не проблема. Код работает тоже, я просто упростил его здесь, чтобы он был более читабельным и забыл круглые скобки. – Symael