공개 데이터 크롤링: Python을 사용하여 통계 얻기

이 블로그에서는 Python을 사용하여 웹 크롤러를 작성하여 정부 공개 데이터 웹사이트(예: 미국 정부 데이터 웹사이트 data.gov)에서 통계를 얻는 방법을 배웁니다. requests, BeautifulSoup 및  라이브러리를 사용하여  pandas 이 기능을 구현합니다. 기사에는 다음이 포함됩니다.

목차

1. 파충류의 기본 개념

2. 요청 라이브러리를 사용하여 웹 페이지의 콘텐츠 가져오기

3. BeautifulSoup을 사용하여 HTML 구문 분석

4. 정부 공개데이터 사이트에서 통계 추출

5. 취득한 데이터를 CSV 파일로 저장

6. 크롤러 최적화 및 개선


1. 파충류의 기본 개념

웹 크롤러는 자동으로 인터넷에 접속하여 정보를 얻는 프로그램입니다. 간단히 말해서, 필요한 데이터를 얻기 위해 한 링크에서 다른 링크로 인터넷의 "웹"을 크롤링하는 가상 "거미"와 같습니다. 이 예에서는 Python을 사용하여 정부 공개 데이터 웹사이트에서 통계를 가져오는 웹 크롤러를 작성합니다.

2.  requests 라이브러리를 사용하여 웹 페이지의 콘텐츠 가져오기

requests 먼저 웹 페이지의 콘텐츠를 가져오려면 Python의 라이브러리를 사용해야 합니다  . requestsHTTP 요청을 보내고 응답을 받는 데 도움이 되는 간단하고 사용하기 쉬운 HTTP 라이브러리입니다. requests 먼저 라이브러리를 설치해야 합니다  .

pip install requests

설치가 완료되면 다음 코드를 사용하여 웹 페이지의 콘텐츠를 가져올 수 있습니다.

import requests

url = 'https://www.example.gov/data'
response = requests.get(url)

if response.status_code == 200:
    html_content = response.text
else:
    print(f'Error {response.status_code}: Could not fetch the webpage.')

3. 다음  을 사용하여 BeautifulSoup HTML 구문 분석

다음으로 가져온 HTML 콘텐츠를 구문 분석해야 합니다. BeautifulSoup 이를 위해 라이브러리를 사용합니다  . beautifulsoup4 먼저 다음을  설치해야 합니다  lxml.

pip install beautifulsoup4 lxml

일단 설치되면 다음 코드를 사용하여 HTML을 구문 분석할 수 있습니다.

from bs4 import BeautifulSoup

soup = BeautifulSoup(html_content, 'lxml')

4. 정부 공개데이터 사이트에서 통계 추출

이제 웹 콘텐츠를 가져오고 구문 분석했으므로 여기에서 통계를 추출해야 합니다. 이를 위해서는 대상 웹 사이트의 HTML 구조를 분석하고 통계 정보가 포함된 요소를 찾아야 합니다. 다음은 데이터 세트 이름, 설명, 릴리스 날짜 및 다운로드 링크를 추출하는 샘플 코드입니다.

def extract_datasets(soup):
    dataset_list = []
    for dataset in soup.find_all('li', class_='dataset'):
        title = dataset.find('h2', class_='title').text.strip()
        description = dataset.find('p', class_='description').text.strip()
        release_date = dataset.find('span', class_='release-date').text.strip()
        download_link = dataset.find('a', class_='download')['href']

        dataset_data = {
            'title': title,
            'description': description,
            'release_date': release_date,
            'download_link': download_link
        }
        dataset_list.append(dataset_data)
    return dataset_list

datasets = extract_datasets(soup)

5. 취득한 데이터를 CSV 파일로 저장

통계를 얻으면 CSV 파일에 저장할 수 있습니다. 다음은 데이터를 CSV 파일에 쓰는 샘플 코드입니다.

import csv

def write_datasets_to_csv(datasets, filename):
    with open(filename, 'w', newline='', encoding='utf-8') as csvfile:
        fieldnames = ['title', 'description', 'release_date', 'download_link']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

        writer.writeheader()
        for dataset in datasets:
            writer.writerow(dataset)

write_datasets_to_csv(datasets, 'gov_datasets.csv')

6. 크롤러 최적화 및 개선

실제 애플리케이션에서는 크롤러를 최적화하고 개선하여 효율성을 높이고 차단을 방지해야 할 수 있습니다. 몇 가지 제안이 있습니다 :

  • 요청 속도 제한: 웹 사이트의 크롤러 프로토콜을 준수하고 서버의 과도한 부하를 피하기 위해 요청 전송 사이에 특정 시간 간격을 설정할 수 있습니다. time.sleep() 함수를 사용하여 이 기능을 달성 할 수  있습니다.

  • 프록시 서버 사용: 빈번한 방문으로 인해 웹 사이트가 차단되는 것을 방지하기 위해 프록시 서버를 사용하여 요청을 보낼 수 있습니다. 이 기능은 requests 라이브러리의  매개변수를 사용하여 달성할 수 있습니다  .proxies

  • 오류 처리 및 재시도: 네트워크 요청 프로세스 중에 다양한 오류가 발생할 수 있습니다(예: 네트워크 연결 시간 초과, 서버 오류 등). 이러한 오류에 대한 예외 처리를 추가하고 오류가 발생하면 요청을 다시 보낼 수 있습니다.

  • 페이지 매김 및 페이지 넘기기: 많은 양의 데이터를 크롤링할 때 페이지 매김 및 페이지 넘기기를 처리해야 할 수 있습니다. 웹 페이지의 페이지 넘기기 링크를 분석한 다음 페이지별로 데이터를 가져올 수 있습니다.

  • 다중 스레딩 또는 비동기: 크롤러의 효율성을 개선하기 위해 다중 스레딩 또는 비동기 기술을 사용하여 요청을 병렬로 보내는 것을 고려할 수 있습니다. threading 이 기능은 Python 라이브러리를  사용하여 구현할 수 있습니다  asyncio .

요약하자면, 우리는 Python을 사용하여 웹 크롤러를 작성하여 정부 공공 데이터 웹 사이트에서 통계 정보를 얻는 방법을 배웠습니다. 실제 응용 프로그램에서 크롤러는 자체 요구 사항에 따라 최적화되고 개선될 수 있습니다. 이 기사가 도움이 되길 바라며 데이터 스크래핑의 길에서 최선을 다하기를 바랍니다!

Supongo que te gusta

Origin blog.csdn.net/m0_68036862/article/details/130959023
Recomendado
Clasificación