Scrapy File : items.py

Web scraping adalah proses mengumpulkan data dari data yang tidak terstruktur (data HTML) menjadi data yang terstruktur.

Dengan menggunakan file items.py, data bisa dikembalikan dalam Python objects key-value pairs.

Walaupun kita bisa lakukan pada file crawler, namun pemisahan modul dengan menggunakan items.py akan membuat code lebih clean dan mudah dibaca.

Pada contoh modul sebelumnya, data langsung yield dari file spider (quotes.py), pada modul ini kita akan gunakan file items.py.

Buka file items.py, lalu ubah code menjadi seperti dibawah

import scrapy


class QuotesCrawlerItem(scrapy.Item):
    h1 = scrapy.Field()
    tags = scrapy.Field()

Buka file quotes.py, lalu ubah code menjadi seperti dibawah

from scrapy import Spider
from scrapy.loader import ItemLoader

from quotes_crawler.items import QuotesCrawlerItem

class QuotesSpider(Spider):
    name = 'quotes'
    allowed_domains = ['quotes.toscrape.com/']
    start_urls = ['http://quotes.toscrape.com//']

    def parse(self, response):
        l = ItemLoader(item=QuotesCrawlerItem(), response=response)
        h1 = response.xpath('//h1/a/text()').extract()
        tags = response.xpath('//*[@class="tag-item"]/a/text()').extract()
        
        l.add_value('h1', h1)
        l.add_value('tags', tags)

        return l.load_item()

Untuk testing code, jalankan perintah scrapy crawl quotes pada command prompt di project directory.

Jika berhasil, maka log akan tampil kurang lebih seperti beriktu

2021-02-04 14:46:01 [scrapy.core.engine] DEBUG: Crawled (404) <GET http://quotes.toscrape.com/robots.txt> (referer: None)
2021-02-04 14:46:01 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://quotes.toscrape.com//> (referer: None)
2021-02-04 14:46:01 [scrapy.core.scraper] DEBUG: Scraped from <200 http://quotes.toscrape.com//>
{'h1': ['Quotes to Scrape'],
 'tags': ['love',
          'inspirational',
          'life',
          'humor',
          'books',
          'reading',
          'friendship',
          'friends',
          'truth',
          'simile']}
2021-02-04 14:46:01 [scrapy.core.engine] INFO: Closing spider (finished)

Untuk dokumentasi lengkap penggunaan file items.py lihat di https://docs.scrapy.org/en/latest/topics/items.html

Sharing is caring:

Leave a Comment