Python을 사용하여 음성으로 웹 스크레이퍼 구축
프로젝트 작동 방식은 간단합니다.
Python, FastAPI 및 Deepgram 음성 텍스트 변환을 사용하여 이 프로젝트를 구축한 방법을 자세히 살펴보겠습니다.
Speech-to-Text와 함께 음성 명령을 사용하는 Python 코드 웹 스크레이퍼
이 음성 명령 스크레이퍼에는 Python의 최신 웹 프레임워크 중 하나인 FastAPI를 사용했습니다. get up and running with FastAPI and Deepgram’s live transcription using the Python SDK 방법에 대한 블로그 게시물을 이미 작성했습니다.
Deepgram의 블로그에 FastAPI에 대한 자습서가 이미 작성되어 있으므로 내original post가 대부분의 Python 코드를 다루므로 자세한 내용은 다루지 않겠습니다.
설치부터 시작하겠습니다.
가상 환경 내 터미널에서 두 개의 추가 Python 라이브러리를 설치했습니다.
pip install beautifulsoup4
pip install requests
그런 다음 import 문을 main.py 파일에 추가했습니다.
from bs4 import BeautifulSoup
import requests
import re
BeautifuSoup
는 웹 스크래핑용입니다.requests
라이브러리는 페이지 소스에서 텍스트를 가져오는 것입니다.re
가져오기는 특정 형식으로 링크를 가져오는 것입니다.이 파일의 유일한 새 기능은
scrape_links
입니다. 또한 웹 페이지에서 추출된 모든 링크를 보유할 hold_links
라는 새 목록을 정의했습니다. requests.get
에 스크랩할 URL을 전달하고 BeautifulSoup 개체를 반복합니다. 루프를 통과할 때마다 웹 페이지의 링크가 목록에 추가됩니다.hold_links = []
def scrape_links():
url = "https://xkcd.com/"
r = requests.get(url)
soup = BeautifulSoup(r.text, "html.parser")
for link in soup.find_all("a", attrs={'href': re.compile("^https://")}):
hold_links.append(link.get('href'))
return hold_links
다음은
get_transcript
내부 함수입니다.async def process_audio(fast_socket: WebSocket):
async def get_transcript(data: Dict) -> None:
if 'channel' in data:
transcript = data['channel']['alternatives'][0]['transcript']
if transcript and transcript == 'scrape':
scrape_links()
await fast_socket.send_text(transcript)
deepgram_socket = await connect_to_deepgram(get_transcript)
return deepgram_socket
여기서 유일한 변경 사항은 스크립트가 있는지 확인하고 스크립트 또는 음성 명령이 "scrape"인지 확인한 다음
scrape_links
함수를 호출하는 다음 행입니다.if transcript and transcript == 'scrape':
scrape_links()
마지막으로 템플릿을 렌더링할 때 HTML 페이지가 Jinja를 사용하여 링크를 표시할 수 있도록 컨텍스트 개체로
hold_links
목록을 전달했습니다.@app.get("/", response_class=HTMLResponse)
def get(request: Request):
return templates.TemplateResponse("index.html", {"request": request, "hold_links": hold_links})
index.html 파일에서
<head></head>
섹션에 다음 줄을 추가하여 5초마다 페이지를 새로 고칩니다.<meta http-equiv="refresh" content="5" />
추출된 링크를 표시하려면 "scrape"음성 명령을 말한 후 페이지를 새로고침해야 합니다.
마지막으로
<body></body>
에서 웹 페이지에서 추출된 링크를 반복하고 HTML 페이지로 렌더링하는 다음 줄을 추가합니다index.html
.<body>
<p>
{% for link in hold_links %}
{{ link }}</br>
{% endfor %}
</p>
</body>
마지막으로 FastAPI Python 음성-텍스트 웹 스크레이퍼를 실행하려면 터미널에서
uvicorn main:app --reload
를 입력하고 http://127.0.0.1:8000/
로 이동합니다.내 컴퓨터의 마이크에 "scrape"라는 단어를 말하면 지정된 URL에 대한 추출된 링크 목록이 웹 페이지에 나타납니다.
내 프로젝트가 흥미로웠거나 질문이 있으면 언제든지 ! 기꺼이 도와드리겠습니다!
Reference
이 문제에 관하여(Python을 사용하여 음성으로 웹 스크레이퍼 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/deepgram/build-a-web-scraper-with-your-voice-using-python-3n09텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)