[flutter] 플러터에서의 웹 크롤링을 위한 라이브러리 및 방법
플러터(Flutter)는 다양한 플랫폼에서 실행되는 모바일 애플리케이션을 개발할 수 있는 프레임워크입니다. 하지만 플러터는 기본적으로 UI를 구축하는 데에 중점을 두고 있어 웹 크롤링과 같은 웹 데이터를 수집하는 작업은 기본적으로 지원하지 않습니다. 그렇지만 몇 가지 라이브러리를 활용하면 플러터에서도 웹 크롤링을 할 수 있습니다.
1. http
패키지 사용하기
http
패키지는 플러터에서 HTTP 요청을 보내고 응답을 받는 데 사용되는 패키지입니다. 이 패키지를 활용하여 웹 페이지에 접속하고 원하는 데이터를 크롤링할 수 있습니다. 아래는 http
패키지의 예제입니다.
import 'package:http/http.dart' as http;
void main() {
final response = await http.get('https://example.com');
if (response.statusCode == 200) {
// 데이터를 처리하는 로직을 작성합니다.
print(response.body);
} else {
print('Failed to load data. Error code: ${response.statusCode}');
}
}
위 예제에서는 http.get
메서드를 사용하여 https://example.com
주소에 GET 요청을 보내고, 응답을 처리합니다. 응답은 response.body
에 저장되어 있습니다.
2. html
패키지 사용하기
http
패키지를 사용하여 웹 페이지의 HTML 데이터를 가져왔다면, 이제 html
패키지를 사용하여 HTML 데이터를 파싱할 수 있습니다. html
패키지는 DOM(Document Object Model)을 플러터에서 사용할 수 있는 형태로 변환해주는 역할을 합니다. 아래는 html
패키지의 예제입니다.
import 'package:http/http.dart' as http;
import 'package:html/parser.dart' as parser;
import 'package:html/dom.dart';
void main() async {
final response = await http.get('https://example.com');
if (response.statusCode == 200) {
final document = parser.parse(response.body);
final element = document.querySelector('.title");
print(element.text);
} else {
print('Failed to load data. Error code: ${response.statusCode}');
}
}
위 예제에서는 html
패키지의 parser
와 dom
클래스를 사용하여 HTML 데이터를 파싱하고, 원하는 데이터를 추출합니다. 위 예제는 CSS 선택자를 사용해 .title
클래스를 가진 요소를 선택하여 그 안의 텍스트를 출력하는 예제입니다.
참고 자료
http
패키지: https://pub.dev/packages/httphtml
패키지: https://pub.dev/packages/html