• 03-07-2021, 23:10:19
    #1
    Öncelikle baştan şunu belirtmek istiyorum; python konusunda henüz acemi dahi değilim, bir merak üzerine selenium kullanarak kendimce botvari bir şey yapmaya çalışıyorum. Yazmam gereken kodları sağdan soldan araştırıp bir şeyler yapıyorum. Fakat bir yerde takıldım ve bu sorunu aşmak için nasıl bir araştırma yapacağıma dair fikir üretemedim.

    Bir web sitesine şifre kullanıcı adı ile giriş yapıyorum ve ardından cookie bilgilerini bir txt dosyasına kaydedip sonraki girişte bu dosyadan cookieleri okuyup yükletmek istiyorum. Aslında bu sorunu çözdüm de chrome driver ı headless olarak çalıştırdığımda kullandığım yöntemle dosyayı okumadı. Ben de bu şekilde yapabileceğimi düşündüm ama sandığım gibi olmuyor.

    cerezler = driver.get_cookies()
    yazdığımda type olarak <class 'list'> dönüyor:
    [{'domain': 'falanfilan.com', 'expiry': 3772825143, 'httpOnly': False, 'name': 'login', 'path': '/', 'secure': False, 'value': '258282:ae259ff3cb4683c9351b381d9066dce4'}, {'domain': 'falanfilan.com ', 'expiry': 3772825143, 'httpOnly': False, 'name': 'gid', 'path': '/', 'secure': False, 'value': '258282'}, {'domain': 'falanfilan.com ', 'httpOnly': True, 'name': 'JSESSIONID', 'path': '/', 'secure': False, 'value': '121212132123213213'}]
    bu list i for döngüsüne soktuğumda da cerez değerinin tipi <class 'dict'> dönüyor.
    for cerez in cerezler:
                print(cerez)
    Bunun çıktısı da
    {'domain': 'falanfilan.com ', 'expiry': 3772826231, 'httpOnly': False, 'name': 'login', 'path': '/', 'secure': False, 'value': '258282:ae259ff3cb4683c9351b381d9066dce4'}
    {'domain': 'falanfilan.com ', 'expiry': 3772826231, 'httpOnly': False, 'name': 'gid', 'path': '/', 'secure': False, 'value': '258282'}
    {'domain': ''falanfilan.com ', 'httpOnly': True, 'name': 'JSESSIONID', 'path': '/', 'secure': False, 'value': '121212132123213213 '}
    Ama ne zaman ki bu dict ögelerini txt dosyasına alt alta yazdırmak istediğimde unsupported operand type(s) for +: 'dict' and 'str' hatası veriyor, sanırım str olmasını istiyor. Ben bu json formatına benzeyen veriyi (dict) aynı bu şekliyle nasıl kaydedebilirim. çünkü add_cookie() metoduna eklerken aynı bu şekilde vermem gerekecek

    https://selenium-python.readthedocs....ver.add_cookie
  • 03-07-2021, 23:35:33
    #2
    dict tipini string tipinine çevirmeniz gerekir alt alta yazmanız için, .write('%s/n' % str(dict)) (slash yönü diğer tarafa olacak, forum kabul etmedi)
  • 03-07-2021, 23:41:07
    #3
    Hatada "+" operatörüyle dictionary ve str tiplerini kullanamayacağınızı belirtmiş. Dosyaya yazdırma kısmının kodunu paylaşmamışsınız fakat dictionary tipini de string olarak görmesi için typecast kullanabilirsiniz.
    Örnek: print(str(cerez) + "yazı")
  • 04-07-2021, 00:06:30
    #4
    rcu adlı üyeden alıntı: mesajı görüntüle
    Hatada "+" operatörüyle dictionary ve str tiplerini kullanamayacağınızı belirtmiş. Dosyaya yazdırma kısmının kodunu paylaşmamışsınız fakat dictionary tipini de string olarak görmesi için typecast kullanabilirsiniz.
    Örnek: print(str(cerez) + "yazı")
    Hocam teşekkür ederim, aslında typecast olayını denemiştim de str yerine string yazmıştım ben, o şekilde yazınca bir yazım hatası görmediğim için string için typecast öyle yapılıyor sanmıştım. Şu an için kaydetme işlemi başarılı oldu.