Python BeautifulSoup을 사용한 웹 스크래핑
웹 스크래핑이란 무엇입니까?
웹사이트에서 데이터를 추출하는 방법에는 주로 두 가지가 있습니다.
이 블로그에서는 Beautiful Soup이라는 Python의 웹 스크래핑 프레임워크 구현을 사용하여 웹 스크래핑과 관련된 단계에 대해 설명합니다.
시작하기:
우리는 BeautifulSoup이라는 간단하고 강력한 라이브러리와 함께 Python을 스크래핑 언어로 사용할 것입니다.
명령 프롬프트에 다음을 입력합니다.
pip install BeautifulSoup4
참고: 위의 명령줄 실행에 실패하면 각 줄 앞에 sudo를 추가해 보십시오.
폐기 규칙 및 규정:
스크랩을 시작하기 전에 사이트를 스크랩할 수 있는 몇 가지 규칙과 규정에 대해 알아야 합니다. 모든 사이트에서 데이터를 스크랩하는 것은 합법적이지 않으므로 임의의 사이트 스크래핑을 시작하기 전에 아래 사항을 읽으십시오. 따라서 아래 사항을 따르십시오.
웹 스크래핑에 필요한 단계:
액세스하려는 웹 페이지의 URL로 HTTP 요청을 보냅니다. 서버는 웹 페이지의 HTML 콘텐츠를 반환하여 요청에 응답합니다. 이 작업에서는 python-requests.Install 요청에 대해 타사 HTTP 라이브러리를 사용합니다. cmd를 사용합니다.
pip install requests
HTML 콘텐츠에 액세스하면 데이터를 구문 분석하는 작업이 남습니다. 대부분의 HTML 데이터는 중첩되어 있기 때문에 단순히 문자열 처리만으로는 데이터를 추출할 수 없습니다. HTML 데이터의 중첩/트리 구조를 생성할 수 있는 파서가 필요합니다. 사용할 수 있는 많은 HTML 파서 라이브러리가 있지만 가장 진보된 라이브러리는 html5lib입니다. cmd를 사용하여 html5lib를 설치합니다.
pip install html5lib
폐기가 작동하는 방식을 이해하려면 아래 이미지를 참조하십시오.
Covid-19 데이터 폐기:
우리는 사이트 worldometers에서 테이블 형태로 데이터를 추출할 것입니다. 코드는 설명과 함께 단계별로 아래에 표시됩니다.
암호
# importing modules
import requests
from bs4 import BeautifulSoup
# URL for scrapping data
url = 'https://www.worldometers.info/coronavirus/countries-where-coronavirus-has-spread/'
# get URL html
page = requests.get(url)
soup = BeautifulSoup(page.text, 'html.parser')
data = []
# soup.find_all('td') will scrape every element in the url's table
data_iterator = iter(soup.find_all('td'))
# data_iterator is the iterator of the table
# This loop will keep repeating till there is data available in the iterator
while True:
try:
country = next(data_iterator).text
confirmed = next(data_iterator).text
deaths = next(data_iterator).text
continent = next(data_iterator).text
# For 'confirmed' and 'deaths', make sure to remove the commas and convert to int
data.append((
country,
int(confirmed.replace(', ', '')),
int(deaths.replace(', ', '')),
continent
))
# StopIteration error is raised when there are no more elements left to iterate through
except StopIteration:
break
# Sort the data by the number of confirmed cases
data.sort(key = lambda row: row[1], reverse = True)
# create texttable object
table = tt.Texttable()
table.add_rows([(None, None, None, None)] + data) # Add an empty row at the beginning for the headers
table.set_cols_align(('c', 'c', 'c', 'c')) # 'l' denotes left, 'c' denotes center, and 'r' denotes right
table.header((' Country ', ' Number of cases ', ' Deaths ', ' Continent '))
print(table.draw())
코드의 출력은 다음과 같습니다.
결론
BeautifulSoup 라이브러리의 정말 좋은 점은 html5lib, lxml, html.parser 등과 같은 HTML 파싱 라이브러리 위에 구축된다는 것입니다. 따라서 BeautifulSoup 개체와 지정 파서 라이브러리를 동시에 생성할 수 있습니다.
그래서 이것은 Python에서 웹 스크레이퍼를 만드는 방법에 대한 간단한 예였습니다. 여기에서 선택한 다른 웹사이트를 스크랩할 수 있습니다. 질문이 있는 경우 아래 댓글 섹션에 게시하십시오.
아래 링크에서 볼 수 있는 내 다른 블로그:
행복한 코딩! 건배.
Reference
이 문제에 관하여(Python BeautifulSoup을 사용한 웹 스크래핑), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/ramakm/web-scrapping-using-python-beautifulsoup-3kk2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Python BeautifulSoup을 사용한 웹 스크래핑), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ramakm/web-scrapping-using-python-beautifulsoup-3kk2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)