python - Ajout d'un agent utilisateur pour résoudre 403, mais l'utilisation d'urlretrieve provoque ensuite une erreur de correspondance régulière
迷茫
迷茫 2017-05-18 10:47:01
0
1
1325

Je souhaite écrire un petit programme pour télécharger automatiquement la page Web http://www.sse.com.cn/assortm... Le lien de téléchargement à l'intérieur est http://query.sse.com.cn/secur..
Utilisez urllib pour demander 403, j'ai donc ajouté un agent utilisateur et renvoyé 200, mais lors de l'utilisation de urlretrieve, cela a provoqué une erreur de correspondance régulière. Je n'ai pas trouvé la réponse en ligne. Comment pouvez-vous résoudre ce problème ?

Le code est le suivant :

à partir de la demande d'importation urllib

à partir de datetime importer datetime

-- codage:utf-8 --

url = 'http://query.sse.com.cn/secur...'

user_agent = 'Mozilla/5.0 (Linux ; Android 6.0 ; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/55.0.2883.95 Mobile Safari/537.36'

myheaders = {'Utilisateur - Agent' : user_agent}

req = request.Request(url, headers=myheaders)

local = "/Users/Mty/Downloads/s_data/" + str(datetime.now().date()) + " .xls"

request.urlretrieve(req, local)

Rapport d'erreur : 

Traceback (dernier appel le plus récent) :
Fichier "/Users/Mty/PycharmProjects/get_data/date.py", ligne 20, dans <module>

request.urlretrieve(req, local)

Fichier "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py", ligne 186, dans urlretrieve

url_type, path = splittype(url)

Fichier "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/parse.py", ligne 861, en splittype

match = _typeprog.match(url)

TypeError : chaîne attendue ou objet de type octets

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

répondre à tous(1)
淡淡烟草味

Utilisez request.build_opener pour ajouter une tête afin de résoudre le problème

myheaders = [('User - Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.17'
                              ' (KHTML, like Gecko) Version/3.1 Safari/525.17'),]
opener = request.build_opener()
opener.addheaders = myheaders
request.install_opener(opener)

request.urlretrieve(url, local)
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal