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