>백엔드 개발 >파이썬 튜토리얼 >Python 크롤러를 사용하여 BeautifulSoup 및 요청을 사용하여 웹 페이지 데이터를 크롤링하는 방법

Python 크롤러를 사용하여 BeautifulSoup 및 요청을 사용하여 웹 페이지 데이터를 크롤링하는 방법

WBOY
WBOY앞으로
2023-04-29 12:52:062329검색

1. 소개

웹 크롤러의 구현 원리는 다음 단계로 요약할 수 있습니다.

  • HTTP 요청 보내기: 웹 크롤러는 대상 웹 사이트에 HTTP 요청(일반적으로 GET 요청)을 보내 웹 콘텐츠를 얻습니다. Python에서는 요청 라이브러리를 사용하여 HTTP 요청을 보낼 수 있습니다.

  • HTML 구문 분석: 대상 웹사이트로부터 응답을 받은 후 크롤러는 유용한 정보를 추출하기 위해 HTML 콘텐츠를 구문 분석해야 합니다. HTML은 웹페이지의 구조를 설명하는 데 사용되는 마크업 언어입니다. 이는 일련의 중첩된 태그로 구성됩니다. 크롤러는 이러한 태그와 속성을 기반으로 필요한 데이터를 찾고 추출할 수 있습니다. Python에서는 BeautifulSoup 및 lxml과 같은 라이브러리를 사용하여 HTML을 구문 분석할 수 있습니다.

  • 데이터 추출: 크롤러는 HTML을 구문 분석한 후 미리 결정된 규칙에 따라 필요한 데이터를 추출해야 합니다. 이러한 규칙은 태그 이름, 속성, CSS 선택기, XPath 등을 기반으로 할 수 있습니다. Python에서 BeautifulSoup은 태그 및 속성 기반 데이터 추출 기능을 제공하며 lxml 및 cssselect는 CSS 선택기와 XPath를 처리할 수 있습니다.

  • 데이터 저장: 크롤러가 캡처한 데이터는 일반적으로 후속 처리를 위해 파일이나 데이터베이스에 저장해야 합니다. Python에서는 파일 I/O 작업, csv 라이브러리 또는 데이터베이스 연결 라이브러리(예: sqlite3, pymysql, pymongo 등)를 사용하여 데이터를 로컬 파일이나 데이터베이스에 저장할 수 있습니다.

  • 자동 순회: 많은 웹사이트의 데이터는 여러 페이지에 분산되어 있으며 크롤러는 자동으로 이러한 페이지를 순회하여 데이터를 추출해야 합니다. 순회 프로세스에는 일반적으로 새 URL 발견, 페이지 넘기기 등이 포함됩니다. 크롤러는 HTML을 구문 분석하는 동안 새 URL을 찾아 크롤링할 대기열에 추가하고 위의 단계를 계속할 수 있습니다.

  • 비동기 및 동시성: 크롤러 효율성을 향상시키기 위해 비동기 및 동시성 기술을 사용하여 여러 요청을 동시에 처리할 수 있습니다. Python에서는 멀티스레딩(threading), 멀티프로세스(multiprocessing), 코루틴(asyncio) 및 기타 기술을 사용하여 동시 크롤링을 달성할 수 있습니다.

  • 크롤러 방지 전략 및 대응: 많은 웹사이트가 액세스 속도 제한, 사용자 에이전트 감지, 인증 코드 등과 같은 크롤러 방지 전략을 채택했습니다. 이러한 전략을 처리하기 위해 크롤러는 프록시 IP를 사용하고, 브라우저 사용자 에이전트를 시뮬레이션하고, 확인 코드 및 기타 기술을 자동으로 식별해야 할 수 있습니다. Python에서는 fake_useragent 라이브러리를 사용하여 임의의 User-Agent를 생성하고 Selenium과 같은 도구를 사용하여 브라우저 작업을 시뮬레이션할 수 있습니다.

2. 웹 크롤러의 기본 개념

웹 스파이더, 웹 로봇으로도 알려진 웹 크롤러는 인터넷에서 웹 페이지 정보를 자동으로 크롤링하는 프로그램입니다. 크롤러는 일반적으로 특정 규칙에 따라 웹페이지를 방문하고 유용한 데이터를 추출합니다.

3. Beautiful Soup 및 요청 라이브러리 소개

  1. Beautiful Soup: 웹 페이지에서 데이터를 추출하는 간단한 방법을 제공하는 HTML 및 XML 문서 구문 분석용 Python 라이브러리입니다.

  2. 요청: 웹사이트에 요청을 보내고 응답 콘텐츠를 받기 위한 간단하고 사용하기 쉬운 Python HTTP 라이브러리입니다.

4. 대상 웹사이트 선택

이 글에서는 Wikipedia의 페이지를 예로 들어 페이지의 제목과 단락 정보를 캡처합니다. 예제를 단순화하기 위해 Python 언어(https://en.wikipedia.org/wiki/Python_(programming_언어))의 Wikipedia 페이지를 크롤링하겠습니다.

5. 요청을 사용하여 웹 콘텐츠 얻기

먼저 요청을 설치합니다. 라이브러리:

pip install requests

그런 다음 요청을 사용하여 대상 URL에 GET 요청을 보내고 웹페이지의 HTML 콘텐츠를 얻습니다.

import requests
 
url = "https://en.wikipedia.org/wiki/Python_(programming_language)"
response = requests.get(url)
html_content = response.text

6. Beautiful Soup을 사용하여 웹페이지 콘텐츠를 구문 분석합니다.

Beautiful Soup 설치:

pip install beautifulsoup4

Next , Beautiful Soup을 사용하여 웹페이지 콘텐츠를 구문 분석하고 필요한 데이터를 추출합니다.

from bs4 import BeautifulSoup
 
soup = BeautifulSoup(html_content, "html.parser")
 
# 提取标题
title = soup.find("h2", class_="firstHeading").text
 
# 提取段落
paragraphs = soup.find_all("p")
paragraph_texts = [p.text for p in paragraphs]
 
# 打印提取到的数据
print("Title:", title)
print("Paragraphs:", paragraph_texts)

7. 필요한 데이터를 추출하고 저장합니다.

추출된 데이터를 텍스트 파일에 저장합니다.

with open("wiki_python.txt", "w", encoding="utf-8") as f:
    f.write(f"Title: {title}\n")
    f.write("Paragraphs:\n")
    for p in paragraph_texts:
        f.write(p)
        f.write("\n")

위 내용은 Python 크롤러를 사용하여 BeautifulSoup 및 요청을 사용하여 웹 페이지 데이터를 크롤링하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제