python – Benutzeragent zur Lösung von 403 hinzugefügt, aber die Verwendung von urlretrieve führt zu einem regelmäßigen Übereinstimmungsfehler
迷茫
迷茫 2017-05-18 10:47:01
0
1
1338

Ich möchte ein kleines Programm schreiben, um die Webseite http://www.sse.com.cn/assortm automatisch herunterzuladen. Der darin enthaltene Download-Link lautet http://query.sse.com.cn/secur.
Verwenden Sie urllib, um 403 aufzufordern, also habe ich den Benutzeragenten hinzugefügt und 200 zurückgegeben, aber bei der Verwendung von urlretrieve wurde die Antwort online nicht gefunden.

Der Code lautet wie folgt:

aus der URL-Importanfrage

aus Datum/Uhrzeit Import Datum/Uhrzeit

-- Codierung: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, wie Gecko) Chrome/55.0.2883.95 Mobile Safari/537.36'

myheaders = {'Benutzer – Agent': user_agent}

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

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

request.urlretrieve(req, local)

Fehlerbericht:

Traceback (letzter Aufruf zuletzt):
Datei „/Users/Mty/PycharmProjects/get_data/date.py“, Zeile 20, in <module>

request.urlretrieve(req, local)

Datei „/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py“, Zeile 186, in urlretrieve

url_type, path = splittype(url)

Datei „/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/parse.py“, Zeile 861, im Splittype

match = _typeprog.match(url)

TypeError: erwartete Zeichenfolge oder byteähnliches Objekt

迷茫
迷茫

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

Antworte allen(1)
淡淡烟草味

使用request.build_opener 添加head可解决

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)
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage