Python-Scrapy: wie eine URL (nicht über folgende Links) innerhalb einer Spinne holen?
-
09-10-2019 - |
Frage
Wie kann ich in meiner Spinne etwas, das eine URL zu extrahieren etwas von einer Seite über HtmlXPathSelector holen wird? Aber die URL ist etwas, was ich in dem Code als String liefern will, keinen Link zu folgen.
Ich habe versucht, so etwas wie folgt aus:
req = urllib2.Request('http://www.example.com/' + some_string + '/')
req.add_header('User-Agent', 'Mozilla/5.0')
response = urllib2.urlopen(req)
hxs = HtmlXPathSelector(response)
aber in diesem Moment wirft es eine Ausnahme mit:
[Failure instance: Traceback: <type 'exceptions.AttributeError'>: addinfourl instance has no attribute 'encoding'
Lösung
Sie müssen ein scrapy.http.HtmlResponse Objekt mit dem Körper konstruieren = urllib2.urlopen (erf) .mehr (?) - aber warum Sie genau tun müssen, mit einem Rückruf verwenden urllib2 stattdessen die Anfrage der Rückkehr
Andere Tipps
scrapy ist nicht explizit zu zeigen, wie Unittest zu tun, ich Verwendung scrapy zu kriechen Daten nicht empfehlen, wenn Sie tun wollen Unittest für jede Spinne.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow