Python으로 웹 페이지의 모든 텍스트 찾기
10730 단어 pythondatascience
이를 구현하기 위해 Beautiful Soup 및 요청이라는 놀라운 파이썬 라이브러리를 사용할 것입니다.
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
Reference
이 문제에 관하여(Python으로 웹 페이지의 모든 텍스트 찾기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/treadalex/find-all-texts-of-a-webpage-with-python-2da3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)