InvalidSchema Keine Anschluss-Adapter wurden nicht gefunden , Fehler in django
Ich experimentiere mit http://robobrowser.readthedocs.org/en/latest/readme.html, eine neue python-Bibliothek, basierend auf der schönen Suppe und Anfragen ibraries. Ich bin derzeit mit es zu öffnen, eine Reihe von Seiten und speichern der Antwort in einer Liste für eine spätere Analyse. Die Liste in meinem debugger sieht wie folgt aus:
pages = [<Response [200]>, <Response [200]> ....]
Generiert ich diese Liste, indem er die robobrowser-Objekt in einer Schleife durch einige Seiten und speichern Sie die Antworten:
while pageRight:
browser.follow_link(pageright[0])
browser
page = browser.response
pages.append(page)
pageRight= browser.select(".pageright")
Dieser oben genannte Teil scheint zu funktionieren gut, aber wenn ich versuche:
ag = "myagent"
browser = RoboBrowser(user_agent=ag)
for page in pages:
browser.open(page.content)
for listing in browser.select('.listingInfo'): #a list
pl = getParsedListing(listing)
listings.append(pl)
in meinem django-index-Datei, ich bin immer der Fehler:
InvalidSchema at /index/
No connection adapters were found for..
traceback:
Traceback:
File "C:\envs\r1\lib\site-packages\django\core\handlers\base.py" in get_response
114. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\envs\r1\lib\site-packages\django\views\decorators\csrf.py" in wrapped_view
57. return view_func(*args, **kwargs)
File "C:\envs\r1\masslist\ml1\views.py" in index
29. Sites = getSitesInArea(Area)
File "C:\envs\r1\masslist\ml1\views.py" in getSitesInArea
91. browser.open(page.content)
File "C:\envs\r1\lib\site-packages\robobrowser\browser.py" in open
200. verify=verify if verify is not None else self.verify,
File "C:\envs\r1\lib\site-packages\requests\sessions.py" in get
468. return self.request('GET', url, **kwargs)
File "C:\envs\r1\lib\site-packages\requests\sessions.py" in request
456. resp = self.send(prep, **send_kwargs)
File "C:\envs\r1\lib\site-packages\requests\sessions.py" in send
553. adapter = self.get_adapter(url=request.url)
File "C:\envs\r1\lib\site-packages\requests\sessions.py" in get_adapter
608. raise InvalidSchema("No connection adapters were found for '%s'" % url)
Exception Type: InvalidSchema at /index/
Exception Value: No connection adapters were found for '
Was mache ich falsch?
- Bitte zeigen Sie den vollständigen traceback
- Wie sind Sie mit der Generierung der Anfragen? Haben Sie vielleicht das Protokoll in den Anforderungen.
http://www.google.com
- Ich habe einige änderungen. - Bill
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht es aus wie
pages
ist eine Liste von Response-Objekten, und Sie fordernbrowser.open
auf diecontent
Attribut für jede Antwort. Aber dieopen
Methode nimmt eine URL, nicht den Inhalt der Antwort. Wenn Sie schauen, um öffnen Sie jede Seite in Ihrempages
Liste, versuchen Sie dies:Ich glaube, dass es funktionieren wird, aber es wird ineffizient sein, da es bedeutet, jeder Besuch Seite auf Ihrer Liste zweimal (einmal in Ihrem
while pageRight
Schleife, und wieder in Ihrefor page in pages
loop). Um diese effizienter zu gestalten, könnte man beides miteinander verbinden-loops in einem:Dies ist ein Fehler in Robobrowser (wie es scheint). Es ist wahrscheinlich auf der Suche nach
<a href="...">Link Name</a>
und einfach zu nehmen, was in der"..."
Teil. Auf der Grundlage der einschlägigen RFCs (speziell 3986) dies kann entweder//example.com/path/to/resource
oderhttp://example.com/path/to/resource
oder nur/path/to/resource
. Was Sie sehen, ist, dass es etwas mit einem Pfad-segment nur/index/
und meint Sie können es einfach verwenden. Was robobrowser tun sollten (was Browser tun) ist die Bestimmung der vollständigen URI ist auf der Grundlage von Abschnitt 5 von RFC 3986. Zum Glück für Sie, gibt es eine Bibliothek sehr bald in der Lage sein, dies zu tun für Sie.