bnvdarklord Δημοσ. 27 Φεβρουαρίου 2012 Δημοσ. 27 Φεβρουαρίου 2012 Εχω απλά το εξής: import urllib urllib.FancyURLopener() Και βγάζει AttributeError: 'module' object has no attribute 'FancyURLopener' Ξερει κανείς τι παιζει; Δεν βρίσκω κάτι στο google περιέργως.
virxen75 Δημοσ. 28 Φεβρουαρίου 2012 Δημοσ. 28 Φεβρουαρίου 2012 για δοκίμασε έτσι > import urllib.request urllib.request.FancyURLopener(...)
bnvdarklord Δημοσ. 28 Φεβρουαρίου 2012 Μέλος Δημοσ. 28 Φεβρουαρίου 2012 Ναι το δοκίμασα λιγο πριν απαντήσεις, αλλα τωρα εχω αλλο προβλημα. Το βασικό μερος του κώδικα μου ειναι αυτό: > 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
virxen75 Δημοσ. 28 Φεβρουαρίου 2012 Δημοσ. 28 Φεβρουαρίου 2012 γιατί δεν το κάνεις έτσι? > 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)
bnvdarklord Δημοσ. 28 Φεβρουαρίου 2012 Μέλος Δημοσ. 28 Φεβρουαρίου 2012 Δεν ξερω πως αλλα την ώρα που το πόσταρες πρεπει να το βρήκα και γω . Βρήκα και την getpass για να δίνεις password χωρίς να φαίνεται στο terminal. Παντως η FancyURLOpener απο οτι είδα δεν δουλευει(ενώ θα επρεπε) σε σελίδες που θελουν κωδικούς. Ο τρόπος με το HttpBasicAuthHandler παντως μου φαίνεται καλύτερος. Ευχαριστώ για την βοηθεια.
bnvdarklord Δημοσ. 28 Φεβρουαρίου 2012 Μέλος Δημοσ. 28 Φεβρουαρίου 2012 Πως γίνεται ενώ πριν δουλευε τώρα να δουλέυει μόνο για το ενα απο τα 2 email που του δίνω; Στο ενα αν και βαζω τα σωστά στοιχεία βγαζει 401 basic auth failed, ενώ στο άλλο συνδεετε κανονικά.
warchief Δημοσ. 2 Μαρτίου 2012 Δημοσ. 2 Μαρτίου 2012 Ενα πολύ καλό http client library ειναι το python-requests, όπως λεει και ο τίτλος του project (HTTP for humans)
bnvdarklord Δημοσ. 2 Μαρτίου 2012 Μέλος Δημοσ. 2 Μαρτίου 2012 Thanks φαινεται αρκετά ευχρηστο. Το auth failed που μου εβγαζε τελικα εφτιαξε μονο του, ίσως με μπλόκαρε για λιγο το gmail.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα