page - urlopen python2




Come gestire la codifica della risposta da urllib.request.urlopen() (4)

Con requests :

import requests

response = requests.get(URL).text

Sto cercando di cercare una pagina web utilizzando le espressioni regolari, ma sto ricevendo il seguente errore:

TypeError: impossibile usare un modello di stringa su un oggetto simile a un byte

Capisco perché, urllib.request.urlopen () restituisce una puntata e quindi, almeno io sto indovinando, re non conosce la codifica da utilizzare. Cosa dovrei fare in questa situazione? C'è un modo per specificare il metodo di codifica in un urlrequest forse o dovrò ricodificare la stringa da solo? Se sì, cosa sto cercando di fare, presumo che dovrei leggere la codifica dalle informazioni dell'intestazione o il tipo di codifica, se specificato in html e quindi ricodificarlo in quel modo?


Ho avuto gli stessi problemi negli ultimi due giorni. Finalmente ho una soluzione. Sto usando il metodo info() dell'oggetto restituito da urlopen() :

req=urllib.request.urlopen(URL)
charset=req.info().get_content_charset()
content=req.read().decode(charset)

dopo aver effettuato una richiesta req = urllib.request.urlopen(...) devi leggere la richiesta chiamando html_string = req.read() che ti darà la risposta stringa che puoi quindi analizzare come vuoi tu.


Hai solo bisogno di decodificare la risposta, utilizzando l'intestazione Content-Type genere l'ultimo valore. C'è un esempio dato anche nel tutorial .

output = response.decode('utf-8')




urllib