2016-10-18 1 views
0

Ich arbeite an einigen Code, der eine HTML Zeichenfolge (my_html) zurückgibt. Ich möchte sehen, wie dies in einem Browser mit https://doc.scrapy.org/en/latest/topics/debug.html#open-in-browser aussieht. Um dies zu tun, habe ich versucht, ein Antwortobjekt mit dem Body-Set auf 'my_html' zu erstellen. Ich habe ein paar Dinge, einschließlich versucht:Scrapy - Wie HTML-String in open_in_browser Funktion laden

new_response = TextResponse(body=my_html) 
open_in_browser(new_response) 

auf der Grundlage der Antwort-Klasse (https://doc.scrapy.org/en/latest/topics/request-response.html#response-objects). Ich bekomme:

new_response = TextResponse(body=my_html) 
    File "c:\scrapy\http\response\text.py", line 27, in __init__ 
    super(TextResponse, self).__init__(*args, **kwargs) 
TypeError: __init__() takes at least 2 arguments (2 given) 

Wie kann ich das funktioniert?

+0

* ... dauert mindestens zwei Argumente (2 angegeben) * WTF? – linusg

Antwort

1

TextResponse expects a URL as first argument:

>>> scrapy.http.TextResponse('http://www.example.com') 
<200 http://www.example.com> 
>>> 

Wenn Sie einen Körper übergeben möchten, müssen Sie noch eine URL als erstes Argument:

>>> scrapy.http.TextResponse(body='<html><body>Oh yeah!</body></html>') 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "/home/paul/.virtualenvs/scrapy12/local/lib/python2.7/site-packages/scrapy/http/response/text.py", line 27, in __init__ 
    super(TextResponse, self).__init__(*args, **kwargs) 
TypeError: __init__() takes at least 2 arguments (2 given) 
>>> scrapy.http.TextResponse('http://www.example.com', body='<html><body>Oh yeah!</body></html>') 
<200 http://www.example.com> 
+0

Danke, ich versuche, besser zu sein, die Dokumente zu überprüfen und so Ihren Punkt über die URL, die benötigt wird (Klasse scrapy.http.Response (url [, Status = 200, Header = None, Körper = b '', Flags = None, request = None])) ist etwas, auf das ich in Zukunft achten soll. – user61629

1

Ihr Fehler scheint mit der TextResponse Initialisierung zu sein, according to the docs, Sie es mit einer URL initialisieren müssen, TextResponse("http://www.expample.com") sollte es tun.

Es sieht aus wie man sich das Response Objekt docs suchen und versuchen, TextResponse wie würden Sie Response zu verwenden, durch die Blicke Ihres optionalen Arguments und Link zu dem Doc.

+0

Danke für Ihre Hilfe zu diesem Thema. – user61629