Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι

ΘΕΜΑ: [Solved] Πρόβλημα με Unicode και δεδομένα από Internet

[Solved] Πρόβλημα με Unicode και δεδομένα από Internet 13 Χρόνια 9 Μήνες πριν #1257

  • hennett
  • Το Άβαταρ του/της hennett
  • Αποσυνδεμένος
  • py____
  • 堕天使 Hennett ®
  • Δημοσιεύσεις: 27
Στηριζόμενος στο post του kamar για άντληση δεδομένων από το internet, δοκίμασα τη τύχη μου σε ένα μεγαλεπίβολο scriptάκι μόνο που βρέθηκα αντιμέτωπος με πρόβλημα στο unicode.

Έψαξα, κλασικά, στο google αλλά δεν βρήκα βοήθεια στο πρόβλημα.

Χωρίς να αλλάξω unicode το αποτέλεσμα ήταν "\xa0\xd0\xd1\xcf\xc3\xd1\xc1\xcc\xcc\xc1\xd4\xc9\xd3\xcc\xcf\xd3 \xc9\xcd\xd4\xc5\xd1\xcd\xc5\xd4".
Με iso-8859-7 και windows-1253 ήταν "u'(734[700])\xa0\u03a0\u03a1\u039f\u0393\u03a1\u0391\u039c\u039c\u0391\u03a4\u0399\u03a3\u039c\u039f\u03a3\u0399\u039d\u03a4\u0395\u03a1\u039d\u0395\u03a4", με utf-8 είχα σφάλμα "UnicodeDecodeError: 'utf8' codec can't decode bytes in position 1244-1246: invalid data" και τέλος με utf-16 είχα επίσης σφάλμα "UnicodeDecodeError: 'utf16' codec can't decode bytes in position 1252-1253: illegal encoding".

Καμία ιδέα για το πως να εμφανίσω στα ελληνικά τα δεδομένα?
- I would love to change the world, but they won't give me the source code -
Τελευταία διόρθωση: 13 Χρόνια 8 Μήνες πριν από pmav99.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Πρόβλημα με Unicode και δεδομένα από Internet 13 Χρόνια 9 Μήνες πριν #1259

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
Αν δεν έχεις πρόβλημα, ανέβασε το script-άκι. Πιθανά να παίζει ρόλο και η κωδικοποίηση της σελίδας που προσπαθείς να κατεβάσεις.

Να μετατρέψεις/τρέξεις με Python 3 δοκίμασες? Η Υποστήριξη Unicode είναι σημαντικά καλύτερη.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Πρόβλημα με Unicode και δεδομένα από Internet 13 Χρόνια 9 Μήνες πριν #1260

  • hennett
  • Το Άβαταρ του/της hennett
  • Αποσυνδεμένος
  • py____
  • 堕天使 Hennett ®
  • Δημοσιεύσεις: 27
Το script είναι για να συνδέομαι στο site βαθμολογιών του ΤΕΙ και να εμφανίζω τα μαθήματα που έχω περάσει (όνομα και βαθμός).

Αυτός είναι ο κώδικας:
def connect_dionysos(uname, passwd):
 
    import mechanize, re
 
    ptrn = r'<td.*colspan="2".*>(.*?)<span.*/></td>.*\s*.*<td\b[^>]*><span.*class="redFonts".*>(.*?)</span></td>'
 
    # Start browser
    br = mechanize.Browser(factory=mechanize.RobustFactory())
    # User-Agent spoof
    br.addheaders = [('User-agent', 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6')]
    br.open('http://dionysos.teilar.gr/unistudent/login.asp')
 
    # Select and fill the form
    br.select_form(name='login')
    br.form.set_all_readonly(False)
    br.form['userName'] = str(uname)
    br.form['pwd'] = str(passwd)
    br.form['loginTrue'] = 'login'
    br.submit()
 
    resp = br.open('http://dionysos.teilar.gr/unistudent/stud_CResults.asp?studPg=1&mnuid=mnu3&')
    data = str(resp.read())
    data = unicode(data, 'iso-8859-7')
    maths = re.findall(ptrn, data)
    print maths

Αν χρειάζεστε κάτι άλλο από το source code της σελίδας ίσως, πείτε μου.
- I would love to change the world, but they won't give me the source code -
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Πρόβλημα με Unicode και δεδομένα από Internet 13 Χρόνια 9 Μήνες πριν #1265

  • kamar
  • Το Άβαταρ του/της kamar
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 409
  • Ληφθείσες Ευχαριστίες 88
import urllib
t = urllib.urlopen('http://dionysos.teilar.gr/unistudent/stud_CResults.asp?studPg=1&mnuid=mnu3&')
lines = t.read().decode('windows-1253')
for line in lines.split('\n'):
    print line

Αυτό παίζει.

Όπως σου είπε και ο pmav99, γράψε τον κώδικα σε Python 3.
Γράφω σε Python 3
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Πρόβλημα με Unicode και δεδομένα από Internet 13 Χρόνια 9 Μήνες πριν #1266

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
kamar έγραψε:
Όπως σου είπε και ο pmav99, γράψε τον κώδικα σε Python 3.
Μάλλον δε γίνεται, εκτός και αν αφήσει την mechanize. Όπως λέει και ΕΔΩ δεν υποστηρίζεται ακόμα η Python 3
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Πρόβλημα με Unicode και δεδομένα από Internet 13 Χρόνια 9 Μήνες πριν #1267

  • kamar
  • Το Άβαταρ του/της kamar
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 409
  • Ληφθείσες Ευχαριστίες 88
pmav99 έγραψε:
kamar έγραψε:
Όπως σου είπε και ο pmav99, γράψε τον κώδικα σε Python 3.
Μάλλον δε γίνεται, εκτός και αν αφήσει την mechanize. Όπως λέει και ΕΔΩ δεν υποστηρίζεται ακόμα η Python 3

Για το λόγο αυτό αποφεύγουμε τις πολλές βιβλιοθήκες τρίτων.:evil:
Γράφω σε Python 3
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Πρόβλημα με Unicode και δεδομένα από Internet 13 Χρόνια 9 Μήνες πριν #1268

  • hennett
  • Το Άβαταρ του/της hennett
  • Αποσυνδεμένος
  • py____
  • 堕天使 Hennett ®
  • Δημοσιεύσεις: 27
pmav99 έγραψε:
kamar έγραψε:
Όπως σου είπε και ο pmav99, γράψε τον κώδικα σε Python 3.
Μάλλον δε γίνεται, εκτός και αν αφήσει την mechanize. Όπως λέει και ΕΔΩ δεν υποστηρίζεται ακόμα η Python 3

Δεν έχω πρόβλημα στο να χρησιμοποιήσω mechanize ή urllib (python 2.x ή python 3.x), απλά δεν έχω βρει τρόπο που να λειτουργεί το get και post data με urllib και python 3. Σε αντίθεση, με τη mechanize έγινε στο άψε-σβήσε (η επιλογή της mechanize έγινε κατόπιν παρότρυνσης φίλου που έκανε κάτι αντίστοιχο σε perl).
- I would love to change the world, but they won't give me the source code -
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Πρόβλημα με Unicode και δεδομένα από Internet 13 Χρόνια 9 Μήνες πριν #1269

  • kamar
  • Το Άβαταρ του/της kamar
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 409
  • Ληφθείσες Ευχαριστίες 88
Διαβάζοντας την τεκμηρίωση της Python 3, μπορεί να τρέξει κάτι σαν αυτό:
import urllib.request
import urllib.parse
values = {'userName': 'xyv', 'pwd': 'goodxa'}
the_url = 'http://dionysos.teilar.gr/unistudent/login.asp'
data = urllib.parse.urlencode(values)
req = urllib.request.Request(the_url, dat)
response = urllib.request.urlopen(req)
pg = response.read().decode('windows-1253')
Γράφω σε Python 3
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Πρόβλημα με Unicode και δεδομένα από Internet 13 Χρόνια 9 Μήνες πριν #1270

  • hennett
  • Το Άβαταρ του/της hennett
  • Αποσυνδεμένος
  • py____
  • 堕天使 Hennett ®
  • Δημοσιεύσεις: 27
@kamar
Το είχα δοκιμάσει και αυτό μόνο που δεν έβρισκα work-around και να συνδεθώ για το εξής:
εκτός από τα inputs "userName" και "pwd" υπάρχει και ένα readonly input, το "loginTrue", το οποίο με τη mechanize το αλλάζω σε false (όχι readonly δηλαδή) και μπορώ να περάσω τη τιμή "login" και να κάνω submit() τη φόρμα έτσι ώστε να συνδεθώ.

EDIT
Κατάφερα εν τέλει να τυπώσω το κείμενο μου σε ευανάγνωστη μορφή. Αυτό που έκανα ήταν να μετατρέψω σε string τα responded data και έπειτα να τα κλείσω σε unicode(), κάπως έτσι "unicode(str(resp.read()), br.encoding())". Οπότε το topic πλέον μπορεί να θεωρηθεί [Solved].
- I would love to change the world, but they won't give me the source code -
Τελευταία διόρθωση: 13 Χρόνια 9 Μήνες πριν από hennett.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Πρόβλημα με Unicode και δεδομένα από Internet 13 Χρόνια 8 Μήνες πριν #1271

  • kamar
  • Το Άβαταρ του/της kamar
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 409
  • Ληφθείσες Ευχαριστίες 88
Μπράβο. Όλο και κάτι μαθαίνεις απ' αυτά τα προβληματάκια.
Γράφω σε Python 3
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.626 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου