11일차 과제 - rlatkddbs99/Flutter GitHub Wiki

  1. 크롤링 웹 크롤러는 스파이더 또는 검색 엔진 [봇]이라고도 하며, 전체 인터넷에서 콘텐츠를 다운로드하고 색인을 생성합니다. 이러한 봇의 목표는 웹 상의 (거의) 모든 웹페이지가 무엇에 대한 것인지 파악하여 필요할 때 정보를 추출할 수 있도록 하는 것입니다. 이를 "웹 크롤러"라고 부르는 것은, 소프트웨어 프로그램을 통해 자동으로 웹사이트에 액세스하여 데이터를 얻는 일을 기술 용어로 "크롤링"이라 한다.

검색 엔진은 웹 크롤러가 수집한 데이터에 검색 알고리즘을 적용함으로써, 사용자의 검색 질의에 대한 응답으로 관련 링크를 제공, 사용자의 검색 질의에 대한 응답으로 관련 링크를 제공합니다. 이를 통해, Google 또는 Bing 등의 검색 엔진에 검색을 입력하고 나면, 웹페이지 목록이 표시되는 것.

웹 크롤링은 클라이언트가 웹 서버에 데이터를 요청(Request)하고, 웹 서버가 해당 요청에 대한 결과를 응답(Response)하면서 이루어집니다. 웹 크롤링 과정은 다음과 같습니다.

HTTP Request & HTTP Response HTTP 요쳥 및 HTTP 응답 결과 확인 HTML Parsing 응답 받은 객체를 HTML/JSON로 변환 Extract & Preprocessing Data CSS Selector, XPath 등을 이용하여 HTML로부터 수집하고자 하는 데이터 추출 및 전처리 Save Data

2-1

int i =0;
  for(i;i<1000;i++){
    if(i==0){
      continue;
    }
    if(i%49==0){
      print(i);
    }
  }

2-2

int i =0;
  for(i;i<1000;i++){
    if(i==0){
      continue;
    }
    if(i%2==0){
      print(i);
    }
  }

2-3

  for(int i = 2;i<=9;i++){
    for(int j = 1;j<=9;j++){
      print("$i * $j = ${i*j}");
    }
  }

2-4

for(int i=1;i<=10;i++){
    print("*" * i);
  }

2-5

bool startCrawling(String url){
  //...크롤링 하는 코드... //
	var	data = url;
  print(url+'에 크롤링 성공함');
	return true;
}

var url = "https://example.sniperfactory.com/board?pages=";
void main() {
  
  for(int i=1;i<=1000;i++){
    startCrawling(url + i.toString());
  }
}

2-6

for(int i=0;i<=1000;i=i+2)
    print(i);

2-7

 List myVars = [1,2,3,4,5,6,7];
  List myVars2 = [];
  for(int i =0; i<=myVars.length;i++){
    myVars2.add(myVars[i]*5);
  }
  print(myVars2);

2-8

캡처 캡처1

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: SafeArea(
          child: SingleChildScrollView(
            scrollDirection: Axis.vertical,
            child: Column(
              children: [
                Text('0'),
                for (var i = 1; i < 100; i++) Text(i.toString()),
                Text('101'),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

3-1

print(mathData.where((e) => e >50).length);

3-2

List mathData2 = mathData.where((e) => e > 80)
                          .map((e) => e*2)
                          .toList();
  
  print(mathData2);

3-3

void main() {
  List rand_num = [];
  for(int i = 0; i<=99;i++){
    rand_num.add(randomData[i]+mathData[i].toString()); 
  }
  print(rand_num);
}

4-1 캡처2

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    var mathData = [26,2,9,47,98,24,43,99,96,45,35,19,37,60,31,74,26,4,28,19,59,14,75,13,93,88,64,15,68,34,96,48,1,44,14,11,31,39,28,100,22,73,78,98,36,49,74,16,35,91,14,73,93,49,3,99,4,29,86,56,17,13,97,55,94,7,100,66,59,85,94,11,16,48,16,44,75,14,17,88,92,12,49,35,42,82,19,27,11,21,34,27,47,40,66,90,99,93,63,90
    ];
    return MaterialApp(home: Scaffold(  body: SafeArea(
            child: GridView.builder(
                gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
                    crossAxisCount: 4),
                itemCount: mathData.length,
                itemBuilder: ((context, index) {
                  return Padding(
                    padding: const EdgeInsets.all(8.0),
                    child: Card(
                        color: Colors.amber,
                        child: Center(
                          child: Text(mathData[index].toString()),
                        )),
                  );
                }))),
      ),
    );
  }
}

4-2 캡처3

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    var mathData = [26,2,9,47,98,24,43,99,96,45,35,19,37,60,31,74,26,4,28,19,59,14,75,13,93,88,64,15,68,34,96,48,1,44,14,11,31,39,28,100,22,73,78,98,36,49,74,16,35,91,14,73,93,49,3,99,4,29,86,56,17,13,97,55,94,7,100,66,59,85,94,11,16,48,16,44,75,14,17,88,92,12,49,35,42,82,19,27,11,21,34,27,47,40,66,90,99,93,63,90
    ];
    List whereData = mathData.where((element) => element < 10).toList();
    return MaterialApp(
      home: Scaffold(
        body: SafeArea(
            child: GridView.builder(
                gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
                    crossAxisCount: 4),
                itemCount: whereData.length,
                itemBuilder: ((context, index) {
                  return Padding(
                    padding: const EdgeInsets.all(8.0),
                    child: Card(
                        color: Colors.white,
                        child: Center(
                          child: Text(whereData[index].toString()),
                        )),
                  );
                }))),
      ),
    );
  }
}