
Python으로 웹 페이지의 모든 텍스트 찾기
2022-10-19 last update
10 minutes reading python datascience이 기사에서는 파이썬으로 웹사이트의 모든 텍스트를 찾는 작은 스크립트를 만들 것입니다.
이것을 구현하기 위해 Beautiful Soup and requests라는 놀라운 파이썬 라이브러리를 사용할 것입니다.
Beautiful Soup은 HTML 및 XML 파일에서 데이터를 가져오기 위한 Python 라이브러리입니다. 즐겨 찾는 파서와 함께 작동하여 구문 분석 트리를 탐색, 검색 및 수정하는 관용적 방법을 제공합니다. 그것은 일반적으로 프로그래머의 작업 시간 또는 일을 절약합니다.
시작하겠습니다...
먼저 가상 환경을 만듭니다.
그런 다음 이 환경을 활성화합니다.
Beautiful Soup 라이브러리를 설치합니다
요청 라이브러리를 설치합니다.
그런 다음 main.py라는 파일을 만듭니다.
이 파일에서 먼저 BeautifulSoup 라이브러리를 가져오고 라이브러리를 요청합니다.
Medium.com과 같은 웹사이트의 예를 들어보겠습니다.
먼저 요청 라이브러리가 있는 웹사이트의 콘텐츠를 가져오는 함수를 만듭니다.
우리는 이런 내용을 얻을 수 있습니다
텍스트를 구문 분석하려면 다음과 같은 수프 개체를 만들어야 합니다.
다음과 같은 방식으로 텍스트가 있는 모든 요소를 찾습니다.
그런 다음 텍스트 목록을 얻을 수 있습니다.
그러면 다음과 같은 텍스트 목록이 반환됩니다.
여기에서 우리가 원하지 않는 많은 스크립트 텍스트와 텍스트가 있음을 알 수 있습니다.
일부 태그는 무시해야 합니다.
이 하나의 라이너로 모든 텍스트를 얻습니다.
페이지에서 모든 텍스트를 가져오는 함수를 만들 수 있습니다. 다음과 같습니다.
그리고 전체 파일 main.py
즐겨!
참조:
pybuddy.com
이것을 구현하기 위해 Beautiful Soup and requests라는 놀라운 파이썬 라이브러리를 사용할 것입니다.
Beautiful Soup은 HTML 및 XML 파일에서 데이터를 가져오기 위한 Python 라이브러리입니다. 즐겨 찾는 파서와 함께 작동하여 구문 분석 트리를 탐색, 검색 및 수정하는 관용적 방법을 제공합니다. 그것은 일반적으로 프로그래머의 작업 시간 또는 일을 절약합니다.
시작하겠습니다...
먼저 가상 환경을 만듭니다.
mkdir TextExtractor && cd TextExtractor
pip3 venv .venv
그런 다음 이 환경을 활성화합니다.
source .venv/bin/activate
Beautiful Soup 라이브러리를 설치합니다
pip install beautifulsoup4==4.11.1
요청 라이브러리를 설치합니다.
pip install requests
그런 다음 main.py라는 파일을 만듭니다.
이 파일에서 먼저 BeautifulSoup 라이브러리를 가져오고 라이브러리를 요청합니다.
import requests
from bs4 import BeautifulSoup
Medium.com과 같은 웹사이트의 예를 들어보겠습니다.
먼저 요청 라이브러리가 있는 웹사이트의 콘텐츠를 가져오는 함수를 만듭니다.
def get_page_content(page_url):
response = requests.get(page_url)
if response.status_code == 200:
return response.content
return None
우리는 이런 내용을 얻을 수 있습니다
content = get_page_content('https://medium.com/')
텍스트를 구문 분석하려면 다음과 같은 수프 개체를 만들어야 합니다.
soup = BeautifulSoup(html)
다음과 같은 방식으로 텍스트가 있는 모든 요소를 찾습니다.
tags_with_text = soup.find_all(text=True)
그런 다음 텍스트 목록을 얻을 수 있습니다.
texts = [tag.text for tag in tags_with_text]
그러면 다음과 같은 텍스트 목록이 반환됩니다.
['', 'Medium – Where good ... find you.', '{"@context":"http:\\u...ght":168}}',...]
여기에서 우리가 원하지 않는 많은 스크립트 텍스트와 텍스트가 있음을 알 수 있습니다.
일부 태그는 무시해야 합니다.
TAGS_TO_IGNORE = ['script','style', 'meta']
이 하나의 라이너로 모든 텍스트를 얻습니다.
texts = [tag.text.strip() for tag in tags_with_text if (tag.text and tag.name not in TAGS_TO_IGNORE)]
페이지에서 모든 텍스트를 가져오는 함수를 만들 수 있습니다. 다음과 같습니다.
def get_texts_from_page(page_url):
content = get_page_content(page_url)
soup = BeautifulSoup(content, "html.parser")
tags_with_text = soup.findAll(text=True)
TAGS_TO_IGNORE = ['script','style', 'meta']
texts = [tag.text.strip() for tag in tags_with_text if (tag.text and tag.name not in TAGS_TO_IGNORE)]
return list(set(texts))
그리고 전체 파일 main.py
import requests
from bs4 import BeautifulSoup
def get_page_content(page_url):
response = requests.get(page_url)
if response.status_code == 200:
return response.content
return None
def get_texts_from_page(page_url):
content = get_page_content(page_url)
soup = BeautifulSoup(content, "html.parser")
tags_with_text = soup.findAll(text=True)
TAGS_TO_IGNORE = ['script','style', 'meta']
texts = [tag.text.strip() for tag in tags_with_text if (tag.text and tag.name not in TAGS_TO_IGNORE)]
return list(set(texts))
# USAGE
content = get_texts_from_page('https://medium.com/')
즐겨!
참조:
pybuddy.com