Scrapy와 Jupyter Notebook은 둘 다 파이썬 개발자들에게 매우 유용한 도구입니다. Scrapy는 웹 크롤링과 스크래핑을 위한 강력한 프레임워크이며, Jupyter Notebook은 데이터 분석과 시각화를 위한 인터랙티브한 환경을 제공합니다. 이 글에서는 Scrapy와 Jupyter Notebook을 통합하여 더 효율적인 웹 스크래핑과 데이터 분석 작업을 수행하는 방법에 대해 알아보겠습니다.
Scrapy와 Jupyter Notebook 설치
먼저, Scrapy와 Jupyter Notebook을 설치해야 합니다. 아래의 명령어를 사용하여 설치할 수 있습니다.
pip install scrapy
pip install jupyter notebook
Scrapy 프로젝트 생성
다음으로, Scrapy 프로젝트를 생성해야 합니다. 아래의 명령어를 실행하여 Scrapy 프로젝트를 생성하십시오.
scrapy startproject myproject
Jupyter Notebook 실행
Jupyter Notebook을 실행해야 Scrapy와 통합할 수 있습니다. 아래의 명령어를 실행하여 Jupyter Notebook을 실행하십시오.
jupyter notebook
Scrapy 코드 작성
Scrapy 프로젝트를 생성하고 Jupyter Notebook을 실행했다면, 이제 Scrapy 코드를 작성할 차례입니다. 주피터 노트북을 사용하면 Scrapy 코드를 쉽게 작성하고 실행할 수 있습니다.
아래는 Scrapy의 예시 코드입니다. 이 예시 코드는 http://quotes.toscrape.com 사이트에서 명언들을 스크래핑하는 코드입니다.
import scrapy
class QuotesSpider(scrapy.Spider):
name = "quotes"
start_urls = ['http://quotes.toscrape.com/page/1/',
'http://quotes.toscrape.com/page/2/']
def parse(self, response):
for quote in response.css('div.quote'):
yield {
'text': quote.css('span.text::text').get(),
'author': quote.css('span small::text').get(),
}
next_page = response.css('li.next a::attr(href)').get()
if next_page is not None:
yield response.follow(next_page, self.parse)
Scrapy 코드 실행
Scrapy 코드를 작성했다면, 이제 해당 코드를 실행할 차례입니다. 주피터 노트북을 사용하여 Scrapy 코드를 실행하는 것은 간단합니다. 아래의 코드를 실행하여 Scrapy 코드를 실행하십시오.
from scrapy.crawler import CrawlerProcess
from myproject.spiders.quotes_spider import QuotesSpider
process = CrawlerProcess()
process.crawl(QuotesSpider)
process.start()
데이터 분석과 시각화
Scrapy를 사용하여 웹 스크래핑한 데이터를 Jupyter Notebook에서 바로 데이터 분석과 시각화 작업을 할 수 있습니다. Scrapy로 스크랩한 데이터를 Pandas 데이터프레임으로 변환한 후, 데이터를 분석하고 시각화하는 작업을 수행할 수 있습니다.
아래는 예시 코드입니다. 이 코드는 스크랩한 명언 데이터를 데이터프레임으로 변환하고, 가장 많이 나온 저자를 막대 그래프로 시각화합니다.
import pandas as pd
import matplotlib.pyplot as plt
data = [
{'text': 'quote1', 'author': 'author1'},
{'text': 'quote2', 'author': 'author2'},
{'text': 'quote3', 'author': 'author3'},
...
]
df = pd.DataFrame(data)
author_counts = df['author'].value_counts()
plt.figure(figsize=(10, 6))
author_counts.plot(kind='bar')
plt.xlabel('Author')
plt.ylabel('Count')
plt.title('Most Popular Authors')
plt.show()
마무리
이렇게 Scrapy와 Jupyter Notebook을 통합하여 웹 스크래핑과 데이터 분석 작업을 더 효율적이고 편리하게 수행할 수 있습니다. Scrapy로 데이터를 수집하고 Jupyter Notebook으로 데이터를 분석하면, 데이터 기반의 의사 결정을 빠르게 할 수 있습니다. 이를 통해 개발자들은 보다 재미있고 효과적인 웹 스크래핑 및 데이터 분석 경험을 얻을 수 있습니다.