Пример #1
0
 def from_frontier(self, response):
     """response: Frontier > Scrapy"""
     return ScrapyResponse(url=response.url,
                           status=response.status_code,
                           headers=response.headers,
                           body=response.body,
                           request=self._request_converter.from_frontier(response.request))
Пример #2
0
 def from_frontier(cls, response):
     """response: Frontier > Scrapy"""
     return ScrapyResponse(url=response.url,
                           status=response.status,
                           headers=response.headers,
                           body=response.body,
                           request=RequestConverter.from_frontier(
                               response.request))
Пример #3
0
def test_request_response_converters():
    spider = TestSpider()
    rc = RequestConverter(spider)
    rsc = ResponseConverter(spider, rc)

    url = "http://test.com/test?param=123"
    request = ScrapyRequest(url=url,
                            callback=spider.callback,
                            errback=spider.errback,
                            body=REQUEST_BODY)
    request.meta['test_param'] = 'test_value'
    request.headers.appendlist("TestKey", "test value")
    request.cookies['MyCookie'] = 'CookieContent'

    frontier_request = rc.to_frontier(request)
    assert frontier_request.meta['scrapy_callback'] == 'callback'
    assert frontier_request.meta['scrapy_errback'] == 'errback'
    assert frontier_request.body == REQUEST_BODY
    assert frontier_request.url == url
    assert frontier_request.method == 'GET'
    assert frontier_request.headers['Testkey'] == 'test value'
    assert frontier_request.cookies['MyCookie'] == 'CookieContent'
    assert 'frontier_request' not in frontier_request.meta['scrapy_meta']

    request_converted = rc.from_frontier(frontier_request)
    assert request_converted.meta['test_param'] == 'test_value'
    assert request_converted.body == REQUEST_BODY
    assert request_converted.url == url
    assert request_converted.method == 'GET'
    assert request_converted.cookies['MyCookie'] == 'CookieContent'
    assert request_converted.headers.get('Testkey') == 'test value'

    # Some middleware could change .meta contents
    request_converted.meta['middleware_stuff'] = 'appeared'

    response = ScrapyResponse(url=url,
                              request=request_converted,
                              body=RESPONSE_BODY,
                              headers={'TestHeader': 'Test value'})

    frontier_response = rsc.to_frontier(response)
    assert frontier_response.body == RESPONSE_BODY
    assert frontier_response.meta['scrapy_meta']['test_param'] == 'test_value'
    assert frontier_response.meta['scrapy_meta'][
        'middleware_stuff'] == 'appeared'
    assert frontier_response.status_code == 200
    assert 'frontier_request' not in frontier_response.meta['scrapy_meta']

    response_converted = rsc.from_frontier(frontier_response)
    assert response_converted.body == RESPONSE_BODY
    assert response_converted.meta['test_param'] == 'test_value'
    assert response_converted.url == url
    assert response_converted.status == 200
    assert response_converted.headers['TestHeader'] == 'Test value'

    frontier_request = FrontierRequest(url)
    request_converted = rc.from_frontier(frontier_request)
    assert frontier_request.url == url
Пример #4
0
 def from_frontier(self, response):
     """response: Frontier > Scrapy"""
     if b'encoding' in response.meta:
         return TextResponse(url=response.url,
                             status=response.status_code,
                             headers=response.headers,
                             body=response.body,
                             request=self._request_converter.from_frontier(
                                 response.request),
                             encoding=response.meta[b'encoding'])
     else:
         return ScrapyResponse(
             url=response.url,
             status=response.status_code,
             headers=response.headers,
             body=response.body,
             request=self._request_converter.from_frontier(
                 response.request))