का उपयोग करके रिक्त फ़ील्ड वाले आइटमों को अनदेखा करना है, मैं जानना चाहता हूं कि उन सभी वस्तुओं को अनदेखा कैसे करें जो सभी फ़ील्ड भरते हैं, कुछ प्रकार की ड्रॉपिंग, क्योंकि स्कैरेड के आउटपुट में मुझे ऐसे पृष्ठ मिल रहे हैं जो नहीं हैं सभी क्षेत्रों को भरें।स्क्रैकर लोडर
मुझे लगता है कि कोड है:
class Product(scrapy.Item):
source_url = scrapy.Field(
output_processor = TakeFirst()
)
name = scrapy.Field(
input_processor = MapCompose(remove_entities),
output_processor = TakeFirst()
)
initial_price = scrapy.Field(
input_processor = MapCompose(remove_entities, clear_price),
output_processor = TakeFirst()
)
main_image_url = scrapy.Field(
output_processor = TakeFirst()
)
पार्सर:
def parse_page(self, response):
try:
l = ItemLoader(item=Product(), response=response)
l.add_value('source_url', response.url)
l.add_css('name', 'h1.title-product::text')
l.add_css('main_image_url', 'div.pics a img.zoom::attr(src)')
l.add_css('initial_price', 'ul.precos li.preco_normal::text')
l.add_css('initial_price', 'ul.promocao li.preco_promocao::text')
return l.load_item()
except Exception as e:
print self.log("#1 ERRO: %s" % e), response.url
मैं अपने खुद के चयनकर्ता (प्रसंस्करण आइटम दो बार से बचने के लिए) के साथ बनाने के लिए आवश्यकता के बिना लोडर के साथ करना चाहते हैं। मुझे लगता है कि मैं उन्हें पाइपलाइन में छोड़ सकता हूं लेकिन शायद यह सबसे अच्छा तरीका नहीं है क्योंकि ये आइटम मान्य नहीं हैं।
पाइपलाइन में आइटम छोड़ना एक बुरा तरीका नहीं है, काफी विपरीत IMHO। –