Python-Scrapy: wie eine URL (nicht über folgende Links) innerhalb einer Spinne holen?

StackOverflow https://stackoverflow.com/questions/4640804

  •  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'
War es hilfreich?

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
scroll top