Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Εχω απλά το εξής:

 

import urllib

 

urllib.FancyURLopener()

 

Και βγάζει AttributeError: 'module' object has no attribute 'FancyURLopener'

 

Ξερει κανείς τι παιζει; Δεν βρίσκω κάτι στο google περιέργως.

Δημοσ.

Ναι το δοκίμασα λιγο πριν απαντήσεις, αλλα τωρα εχω αλλο προβλημα.

Το βασικό μερος του κώδικα μου ειναι αυτό:

 

>
import urllib
import feedparser

FeedURL = "https://mail.google.com/gmail/feed/atom"

def auth():
opener = urllib.request.FancyURLopener()
f = opener.open(FeedURL)
feed = f.read()
return feed

if __name__ == "__main__":
       f = auth()

 

Και βγάζει τα παρακάτω. Δεν εχω χρησιμοποιήσει πολύ το urllib, αλλα από οτι ειδα καπου το FancyURLOpener θα πρεπε να ζητάει αυτόματα username και password, ενώ εδω φαινομενικά περνω HTTP Error 401: Unauthorized.

 

 

Traceback (most recent call last):

File "C:\Users\Dark Lord\Desktop\gmail.py", line 41, in <module>

f = auth()

File "C:\Users\Dark Lord\Desktop\gmail.py", line 9, in auth

f = opener.open(FeedURL)

File "C:\Python32\lib\urllib\request.py", line 1538, in open

return getattr(self, name)(url)

File "C:\Python32\lib\urllib\request.py", line 1748, in open_https

return self._open_generic_http(self._https_connection, url, data)

File "C:\Python32\lib\urllib\request.py", line 1712, in _open_generic_http

response.status, response.reason, response.msg, data)

File "C:\Python32\lib\urllib\request.py", line 1728, in http_error

result = method(url, fp, errcode, errmsg, headers)

File "C:\Python32\lib\urllib\request.py", line 1951, in http_error_301

return self.http_error_302(url, fp, errcode, errmsg, headers, data)

File "C:\Python32\lib\urllib\request.py", line 1916, in http_error_302

data)

File "C:\Python32\lib\urllib\request.py", line 1947, in redirect_internal

return self.open(newurl)

File "C:\Python32\lib\urllib\request.py", line 1538, in open

return getattr(self, name)(url)

File "C:\Python32\lib\urllib\request.py", line 1748, in open_https

return self._open_generic_http(self._https_connection, url, data)

File "C:\Python32\lib\urllib\request.py", line 1712, in _open_generic_http

response.status, response.reason, response.msg, data)

File "C:\Python32\lib\urllib\request.py", line 1728, in http_error

result = method(url, fp, errcode, errmsg, headers)

File "C:\Python32\lib\urllib\request.py", line 1983, in http_error_401

headers)

File "C:\Python32\lib\urllib\request.py", line 1738, in http_error_default

raise HTTPError(url, errcode, errmsg, headers, None)

urllib.error.HTTPError: HTTP Error 401: Unauthorized

 

 

Δημοσ.

γιατί δεν το κάνεις έτσι?

 

>
import urllib.error
from urllib.parse import urlencode
from urllib.request import FancyURLopener,install_opener,build_opener,HTTPBasicAuthHandler,urlopen
FeedURL = "https://mail.google.com/gmail/feed/atom"
URI="https://mail.google.com/"
print("url=",FeedURL)
username=input("username:")
password=input("password:")

def get_feed():
   auth_handler = HTTPBasicAuthHandler()
   auth_handler.add_password(realm = "New mail feed", uri =URI , user = username, passwd = password)
   opener =build_opener(auth_handler)
   install_opener(opener)
   try:
       feed = urlopen(FeedURL).read()
   except urllib.error.URLError:
       print("error!")
       exit(1)
   return feed

if __name__ == "__main__":
   f=get_feed()
print (f)

Δημοσ.

Δεν ξερω πως αλλα την ώρα που το πόσταρες πρεπει να το βρήκα και γω :P. Βρήκα και την getpass για να δίνεις password χωρίς να φαίνεται στο terminal.

 

Παντως η FancyURLOpener απο οτι είδα δεν δουλευει(ενώ θα επρεπε) σε σελίδες που θελουν κωδικούς. Ο τρόπος με το HttpBasicAuthHandler παντως μου φαίνεται καλύτερος.

 

Ευχαριστώ για την βοηθεια.

Δημοσ.

Πως γίνεται ενώ πριν δουλευε τώρα να δουλέυει μόνο για το ενα απο τα 2 email που του δίνω; Στο ενα αν και βαζω τα σωστά στοιχεία βγαζει 401 basic auth failed, ενώ στο άλλο συνδεετε κανονικά. <_<

Δημοσ.

Thanks φαινεται αρκετά ευχρηστο. Το auth failed που μου εβγαζε τελικα εφτιαξε μονο του, ίσως με μπλόκαρε για λιγο το gmail.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...