이번에는 Flutter 앱에서 get_it 패키지를 사용하여 간단한 웹 스크래핑 기능을 구현하는 방법에 대해 알아보겠습니다. get_it은 종속성 주입을 위한 패키지로, 앱 내에서 인스턴스화된 객체를 쉽게 참조할 수 있도록 도와줍니다. 이를 활용하여 웹 스크래핑을 구현해보겠습니다.
1. get_it 패키지 추가
먼저, pubspec.yaml
파일에 get_it 패키지를 추가해야 합니다. 아래와 같이 dependencies 섹션에 추가해주세요.
dependencies:
flutter:
sdk: flutter
get_it: ^7.2.0
이후, 터미널에서 flutter pub get
명령을 실행하여 패키지를 다운로드 받습니다.
2. 스크랩퍼 클래스 생성
다음으로, 웹 스크랩퍼 기능을 구현할 클래스를 생성합니다. 아래는 예시 코드입니다.
import 'package:html/parser.dart' as parser;
import 'package:http/http.dart' as http;
class WebScraper {
Future<String> getTitle(String url) async {
final response = await http.get(Uri.parse(url));
if (response.statusCode == 200) {
final document = parser.parse(response.body);
final titleElement = document.querySelector("title");
return titleElement?.text ?? "";
} else {
throw Exception("Failed to get title from $url");
}
}
}
위 코드에서는 http
패키지를 사용하여 웹 페이지의 HTML을 가져오고, parser
패키지를 사용하여 HTML 에서 원하는 정보를 추출합니다. getTitle 함수는 주어진 URL의 웹 페이지에서 <title>
태그의 내용을 추출하여 반환합니다.
3. get_it을 사용하여 스크랩퍼 인스턴스 참조
이제, get_it을 사용하여 스크랩퍼 인스턴스를 참조하는 방법에 대해 알아보겠습니다.
import 'package:flutter/material.dart';
import 'package:get_it/get_it.dart';
import 'web_scraper.dart';
void main() {
GetIt.instance.registerSingleton<WebScraper>(WebScraper());
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Web Scraper Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
final _webScraper = GetIt.instance<WebScraper>();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Web Scraper Demo'),
),
body: Center(
child: RaisedButton(
onPressed: () async {
final url = 'https://www.example.com';
final title = await _webScraper.getTitle(url);
print('Title: $title');
},
child: Text('Scrape Title'),
),
),
);
}
}
위 코드에서는 GetIt.instance.registerSingleton()
함수를 사용하여 WebScraper 클래스의 인스턴스를 get_it에 등록합니다. 이렇게 하면 앱 전체에서 동일한 인스턴스를 사용할 수 있습니다. 그리고 _webScraper 변수를 사용하여 등록한 스크랩퍼 인스턴스를 참조합니다. RaisedButton을 누를 때마다 스크랩퍼 인스턴스를 사용하여 webScraper.getTitle() 함수를 호출하고, 반환된 결과를 출력합니다.
이제 앱을 실행하고 “Scrape Title” 버튼을 클릭하면, 지정된 URL의 웹 페이지에서 타이틀을 가져와 출력되는 것을 확인할 수 있습니다.
결론
get_it 패키지를 사용하여 플러터 앱에서 웹 스크래핑 기능을 구현하는 방법에 대해 알아보았습니다. get_it을 활용하면 주입할 인스턴스에 쉽게 접근할 수 있기 때문에, 앱에서 다양한 종속성을 관리하고 재사용하기에 용이합니다. get_it을 사용하여 플러터 앱을 더 모듈화하고 확장성 있게 만들어보세요.