mirror of https://github.com/scrapy/scrapy.git
Merge pull request #5269 from Ankur19/allow-non-text-response-types-in-ItemLoader
Fix bug #5145 - Removing Selector for Response's that are not Http or Xml
This commit is contained in:
commit
5b13bfd14a
|
|
@ -83,6 +83,9 @@ class ItemLoader(itemloaders.ItemLoader):
|
|||
|
||||
def __init__(self, item=None, selector=None, response=None, parent=None, **context):
|
||||
if selector is None and response is not None:
|
||||
selector = self.default_selector_class(response)
|
||||
try:
|
||||
selector = self.default_selector_class(response)
|
||||
except AttributeError:
|
||||
selector = None
|
||||
context.update(response=response)
|
||||
super().__init__(item=item, selector=selector, parent=parent, **context)
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import attr
|
|||
from itemadapter import ItemAdapter
|
||||
from itemloaders.processors import Compose, Identity, MapCompose, TakeFirst
|
||||
|
||||
from scrapy.http import HtmlResponse
|
||||
from scrapy.http import HtmlResponse, Response
|
||||
from scrapy.item import Item, Field
|
||||
from scrapy.loader import ItemLoader
|
||||
from scrapy.selector import Selector
|
||||
|
|
@ -304,6 +304,12 @@ class SelectortemLoaderTest(unittest.TestCase):
|
|||
|
||||
l.add_css('name', 'div::text')
|
||||
self.assertEqual(l.get_output_value('name'), ['Marta'])
|
||||
|
||||
def test_init_method_with_base_response(self):
|
||||
"""Selector should be None after initialization"""
|
||||
response = Response("https://scrapy.org")
|
||||
l = TestItemLoader(response=response)
|
||||
self.assertIs(l.selector, None)
|
||||
|
||||
def test_init_method_with_response(self):
|
||||
l = TestItemLoader(response=self.response)
|
||||
|
|
|
|||
Loading…
Reference in New Issue