웹사이트에서 데이터를 추출하는 프로세스인 웹 스크래핑은 광대한 인터넷에서 정보를 수집하는 강력한 기술로 등장했습니다. 이 튜토리얼에서는 웹 스크래핑에 일반적으로 사용되는 다양한 Python 라이브러리와 모듈을 살펴보고 이 작업에 Python 3가 선호되는 이유를 자세히 살펴보겠습니다.
자바 문자를 int로
Python 웹 스크래핑을 위한 필수 패키지 및 도구
최신 버전의 파이썬 는 웹 스크래핑을 위해 특별히 설계된 풍부한 도구 및 라이브러리 세트를 제공하여 웹에서 데이터를 효율적이고 효과적으로 검색하는 것을 그 어느 때보다 쉽게 만듭니다.
내용의 테이블
요청 모듈
요청 라이브러리는 특정 URL에 대한 HTTP 요청을 만들고 응답을 반환하는 데 사용됩니다. Python 요청은 요청과 응답을 모두 관리하기 위한 내장 기능을 제공합니다.
pip install requests>
예: 요청하기
Python 요청 모듈에는 GET, POST, PUT, PATCH 또는 HEAD 요청을 사용하여 지정된 URI에 대한 HTTP 요청을 만드는 여러 가지 내장 메서드가 있습니다. HTTP 요청은 지정된 URI에서 데이터를 검색하거나 서버에 데이터를 푸시하기 위한 것입니다. 클라이언트와 서버 간의 요청-응답 프로토콜로 작동합니다. 여기서는 GET 요청을 사용하겠습니다. 그만큼 GET 방식 주어진 URI를 사용하여 주어진 서버에서 정보를 검색하는 데 사용됩니다. GET 메소드는 페이지 요청에 추가된 인코딩된 사용자 정보를 보냅니다.
파이썬
import requests # Making a GET request r = requests.get('https://www.techcodeview.com) # check status code for response received # success code - 200 print(r) # print content of request print(r.content)> 산출

자세한 내용은 당사를 참조하세요. Python 요청 튜토리얼 .
BeautifulSoup 라이브러리
Beautiful Soup은 구문 분석 트리를 안내하고 검색하고 변경하기 위한 몇 가지 간단한 방법과 Python 구문을 제공합니다. 즉, 문서를 연구하고 필요한 것을 제거하기 위한 툴킷입니다. 애플리케이션을 문서화하는 데 많은 코드가 필요하지 않습니다.
Beautiful Soup은 들어오는 레코드를 유니코드로, 나가는 형식을 UTF-8로 자동 변환합니다. 문서가 인코딩을 정의하지 않고, Beautiful Soup이 인코딩을 포착할 수 없는 경우가 아니라면 인코딩에 대해 생각할 필요가 없습니다. 그런 다음 원래 인코딩을 선택하기만 하면 됩니다. Beautiful Soup은 LXML 및 HTML과 같은 유명한 Python 파서 위에 위치하므로 다양한 파싱 전략을 시도하거나 유연성을 위해 속도를 교환할 수 있습니다.
pip install beautifulsoup4>
예
- 라이브러리 가져오기: 코드는 HTTP 요청을 만들기 위한 요청 라이브러리와 HTML 구문 분석을 위한 bs4 라이브러리의 BeautifulSoup 클래스를 가져옵니다.
- GET 요청 만들기: 'https://www.techcodeview.com'로 GET 요청을 보냅니다.
- 상태 코드 확인 중: 응답의 상태 코드(일반적으로 성공의 경우 200)를 인쇄합니다.
- HTML 구문 분석 : 응답의 HTML 콘텐츠는 BeautifulSoup을 사용하여 구문 분석되고 변수 수프에 저장됩니다.
- 예쁜 HTML 인쇄하기: 가독성과 분석을 위해 구문 분석된 HTML 콘텐츠의 예쁜 버전을 인쇄합니다.
import requests from bs4 import BeautifulSoup # Making a GET request r = requests.get('https://www.techcodeview.com) # check status code for response received # success code - 200 print(r) # Parsing the HTML soup = BeautifulSoup(r.content, 'html.parser') print(soup.prettify())> 산출
int를 문자열로 변환

클래스별로 요소 찾기
이제 HTML 콘텐츠에서 유용한 데이터를 추출해 보겠습니다. 수프 개체에는 프로그래밍 방식으로 추출할 수 있는 중첩 구조의 모든 데이터가 포함되어 있습니다. 우리가 스크랩하려는 웹사이트에는 많은 텍스트가 포함되어 있으므로 이제 모든 콘텐츠를 스크랩해 보겠습니다. 먼저 스크랩하려는 웹페이지를 살펴보겠습니다.
위 이미지에서 페이지의 모든 콘텐츠가 항목 콘텐츠 클래스가 있는 div 아래에 있음을 알 수 있습니다. 우리는 find 클래스를 사용할 것입니다. 이 클래스는 주어진 속성을 가진 주어진 태그를 찾습니다. 우리의 경우 클래스가 항목 콘텐츠로 포함된 모든 div를 찾습니다.
페이지의 내용이 다음 아래에 있음을 알 수 있습니다.
꼬리표. 이제 이 클래스에 있는 모든 p 태그를 찾아야 합니다. 우리는find_all BeautifulSoup 클래스.
파이썬 import requests from bs4 import BeautifulSoup # Making a GET request r = requests.get('https://www.techcodeview.com) # Parsing the HTML soup = BeautifulSoup(r.content, 'html.parser') s = soup.find('div', class_='entry-content') content = s.find_all('p') print(content)> 산출:

버킷 정렬
자세한 내용은 당사를 참조하세요. Python BeautifulSoup .
셀렌
Selenium은 웹 브라우저 자동화에 사용되는 인기 있는 Python 모듈입니다. 이를 통해 개발자는 프로그래밍 방식으로 웹 브라우저를 제어하여 웹 스크래핑, 자동화된 테스트 및 웹 애플리케이션 상호 작용과 같은 작업을 수행할 수 있습니다. Selenium은 Chrome, Firefox, Safari, Edge를 포함한 다양한 웹 브라우저를 지원하므로 브라우저 자동화를 위한 다목적 도구입니다.
예 1: 파이어폭스의 경우
이 특정 예에서는 쿼리 매개변수 geeksforgeeks를 사용하여 브라우저를 Google 검색 페이지로 연결합니다. 브라우저가 이 페이지를 로드하면 Selenium을 사용하여 프로그래밍 방식으로 페이지와 상호 작용할 수 있습니다. 이러한 상호 작용에는 검색 결과 추출, 링크 클릭, 페이지에서 특정 콘텐츠 스크랩 등의 작업이 포함될 수 있습니다.
파이썬 # import webdriver from selenium import webdriver # create webdriver object driver = webdriver.Firefox() # get google.co.in driver.get('https://google.co.in / search?q = geeksforgeeks')> 산출

예 2: Chrome의 경우
- Selenium 라이브러리에서 webdriver 모듈을 가져옵니다.
- 웹 드라이버 실행 파일의 경로를 지정합니다. 브라우저에 적합한 드라이버를 다운로드하고 해당 드라이버에 대한 경로를 제공해야 합니다. 이 예에서는 Chrome 드라이버를 사용하고 있습니다.
- webdriver.Chrome()을 사용하여 웹 브라우저의 새 인스턴스를 생성하고 Chrome 드라이버 실행 파일의 경로를 인수로 전달합니다.
- 브라우저 개체에서 get() 메서드를 호출하고 웹페이지의 URL을 전달하여 웹페이지로 이동합니다.
- Selenium에서 제공하는 다양한 방법을 사용하여 웹페이지에서 정보를 추출합니다. 이 예에서는 브라우저 개체의 제목 속성을 사용하여 페이지 제목을 검색합니다.
- 마지막으로 quit() 메소드를 사용하여 브라우저를 닫습니다.
# importing necessary packages from selenium import webdriver from selenium.webdriver.common.by import By from webdriver_manager.chrome import ChromeDriverManager # for holding the resultant list element_list = [] for page in range(1, 3, 1): page_url = 'https://webscraper.io/test-sites/e-commerce/static/computers/laptops?page=' + str(page) driver = webdriver.Chrome(ChromeDriverManager().install()) driver.get(page_url) title = driver.find_elements(By.CLASS_NAME, 'title') price = driver.find_elements(By.CLASS_NAME, 'price') description = driver.find_elements(By.CLASS_NAME, 'description') rating = driver.find_elements(By.CLASS_NAME, 'ratings') for i in range(len(title)): element_list.append([title[i].text, price[i].text, description[i].text, rating[i].text]) print(element_list) #closing the driver driver.close()>
산출

자세한 내용은 당사를 참조하세요. 파이썬 셀레늄 .
호주의 도시들
Lxml
Python의 lxml 모듈은 XML 및 HTML 문서를 처리하기 위한 강력한 라이브러리입니다. 간단한 Pythonic API와 함께 고성능 XML 및 HTML 구문 분석 기능을 제공합니다. lxml은 속도, 유연성 및 사용 용이성으로 인해 Python 웹 스크래핑에 널리 사용됩니다.
pip install lxml>
예
다음은 Python 웹 스크래핑에 lxml 모듈을 사용하는 방법을 보여주는 간단한 예입니다.
- HTTP 요청을 보내기 위한 요청 모듈과 함께 lxml에서 html 모듈을 가져옵니다.
- 우리는 스크랩하려는 웹사이트의 URL을 정의합니다.
- request.get() 함수를 사용하여 웹사이트에 HTTP GET 요청을 보내고 페이지의 HTML 콘텐츠를 검색합니다.
- HTML 요소 트리를 반환하는 lxml의 html.fromstring() 함수를 사용하여 HTML 콘텐츠를 구문 분석합니다.
- XPath 표현식을 사용하여 HTML 트리에서 특정 요소를 추출합니다. 이 경우 모든 텍스트 내용을 추출합니다. (앵커) 페이지의 요소.
- 추출된 링크 제목을 반복하여 인쇄합니다.
from lxml import html import requests # Define the URL of the website to scrape url = 'https://example.com' # Send an HTTP request to the website and retrieve the HTML content response = requests.get(url) # Parse the HTML content using lxml tree = html.fromstring(response.content) # Extract specific elements from the HTML tree using XPath # For example, let's extract the titles of all the links on the page link_titles = tree.xpath('//a/text()') # Print the extracted link titles for title in link_titles: print(title)> 산출
More information...>
Urllib 모듈
Python의 urllib 모듈은 URL 작업을 위한 함수를 제공하는 내장 라이브러리입니다. 이를 통해 URL(Uniform Resource Locator)을 가져오고, URL에서 데이터를 열고 읽고, 인코딩 및 구문 분석과 같은 기타 URL 관련 작업을 수행하여 웹 페이지와 상호 작용할 수 있습니다. Urllib는 URL 작업을 위해 다음과 같은 여러 모듈을 수집하는 패키지입니다.
- 열기 및 읽기를 위한 urllib.request.
- URL 구문 분석을 위한 urllib.parse
- 발생한 예외에 대한 urllib.error
- robots.txt 파일을 구문 분석하기 위한 urllib.robotparser
귀하의 환경에 urllib가 없으면 아래 코드를 실행하여 설치하십시오.
pip install urllib3>
예
다음은 urllib 모듈을 사용하여 웹 페이지의 콘텐츠를 가져오는 방법을 보여주는 간단한 예입니다.
- 가져오려는 웹페이지의 URL을 정의합니다.
- 우리는 urllib.request.urlopen() 함수를 사용하여 URL을 열고 응답 객체를 얻습니다.
- read() 메소드를 사용하여 응답 객체의 내용을 읽습니다.
- 내용은 바이트로 반환되므로 'utf-8' 인코딩을 사용하는 decode() 메서드를 사용하여 문자열로 디코딩합니다.
- 마지막으로 웹페이지의 HTML 콘텐츠를 인쇄합니다.
import urllib.request # URL of the web page to fetch url = 'https://www.example.com' try: # Open the URL and read its content response = urllib.request.urlopen(url) # Read the content of the response data = response.read() # Decode the data (if it's in bytes) to a string html_content = data.decode('utf-8') # Print the HTML content of the web page print(html_content) except Exception as e: print('Error fetching URL:', e)> 산출
자바에서 맵 반복

파이오토GUI
Python의 pyautogui 모듈은 개발자가 마우스와 키보드를 제어하여 작업을 자동화할 수 있는 크로스 플랫폼 GUI 자동화 라이브러리입니다. 웹 스크래핑을 위해 특별히 설계된 것은 아니지만 Selenium과 같은 다른 웹 스크래핑 라이브러리와 함께 사용하여 사용자 입력이 필요한 웹 페이지와 상호 작용하거나 인간 작업을 시뮬레이션할 수 있습니다.
pip3 install pyautogui>
예
이 예에서는 pyautogui를 사용하여 스크롤을 수행하고 검색 입력 필드에 쿼리를 입력하고 Selenium을 사용하여 검색 버튼을 클릭하여 얻은 검색 결과 페이지의 스크린샷을 찍습니다.
파이썬 import pyautogui # moves to (519,1060) in 1 sec pyautogui.moveTo(519, 1060, duration = 1) # simulates a click at the present # mouse position pyautogui.click() # moves to (1717,352) in 1 sec pyautogui.moveTo(1717, 352, duration = 1) # simulates a click at the present # mouse position pyautogui.click()>
산출

일정
Python의 일정 모듈은 Python 함수가 지정된 간격으로 실행되도록 예약할 수 있는 간단한 라이브러리입니다. 이는 매시간, 매일 또는 매주와 같이 미리 정의된 간격으로 웹사이트에서 정기적으로 데이터를 스크랩해야 하는 경우 Python의 웹 스크래핑에 특히 유용합니다.
예
- bs4 패키지에서 일정, 시간, 요청, BeautifulSoup 등 필요한 모듈을 가져옵니다.
- 웹 스크래핑 작업을 수행하는 scrape_data() 함수를 정의합니다. 이 함수 내에서 웹사이트에 GET 요청을 보내고('https://example.com'을 스크래핑하려는 웹사이트의 URL로 대체) BeautifulSoup을 사용하여 HTML 콘텐츠를 구문 분석하고 원하는 데이터를 추출한 후 인쇄합니다. .
- Schedule.every().hour.do(scrape_data)를 사용하여 scrape_data() 함수가 매시간 실행되도록 예약합니다.
- 우리는 Schedule.run_pending()을 사용하여 보류 중인 예약된 작업을 지속적으로 확인하고 루프가 너무 많은 CPU를 소비하는 것을 방지하기 위해 반복 사이에 1초 동안 휴면하는 메인 루프에 들어갑니다.
import schedule import time def func(): print('Geeksforgeeks') schedule.every(1).minutes.do(func) while True: schedule.run_pending() time.sleep(1)> 산출

웹 스크래핑에 Python3을 사용하는 이유는 무엇입니까?
웹 스크래핑에 대한 Python의 인기는 다음과 같은 몇 가지 요인에서 비롯됩니다.
- 사용의 용이성 : Python의 깔끔하고 읽기 쉬운 구문을 사용하면 초보자도 쉽게 코드를 이해하고 작성할 수 있습니다. 이러한 단순성은 개발 프로세스를 가속화하고 웹 스크래핑 작업에 대한 학습 곡선을 줄여줍니다.
- 풍부한 생태계 : Python은 웹 스크래핑에 맞춰진 라이브러리와 프레임워크로 구성된 방대한 생태계를 자랑합니다. BeautifulSoup, Scrapy 및 Requests와 같은 라이브러리는 HTML 구문 분석 프로세스를 단순화하여 데이터 추출을 쉽게 만듭니다.
- 다재 : 파이썬은 웹 스크래핑을 넘어 폭넓은 작업에 사용할 수 있는 다재다능한 언어입니다. 유연성을 통해 개발자는 웹 스크래핑을 데이터 분석, 기계 학습 또는 웹 개발과 같은 대규모 프로젝트에 원활하게 통합할 수 있습니다.
- 커뮤니티 지원 : Python에는 라이브러리에 기여하고 포럼, 튜토리얼 및 문서를 통해 지원을 제공하는 크고 활동적인 개발자 커뮤니티가 있습니다. 이러한 풍부한 리소스를 통해 개발자는 웹 스크래핑 문제를 해결할 때 지원과 지침에 액세스할 수 있습니다.