https://mechanicalsoup.readthedocs.io/
웹사이트와의 상호작용을 자동화하기 위한 Python 라이브러리입니다. MechanicalSoup은 자동으로 쿠키를 저장하고 전송하며 리디렉션을 따르고 링크를 따라가며 양식을 제출할 수 있습니다. JavaScript를 수행하지 않습니다.
MechanicalSoup은 Mechanize 라이브러리를 좋아했던 M Hickford가 만들었습니다. 안타깝게도 Mechanize는 2019년까지 Python 3과 호환되지 않았으며 개발이 몇 년 동안 중단되었습니다. MechanicalSoup은 Python 거대 Requests(HTTP 세션용) 및 BeautifulSoup(문서 탐색용)을 기반으로 구축된 유사한 API를 제공합니다. 2017년부터 @hemberger, @moy 등 소규모 팀이 활발하게 유지하고 있는 프로젝트입니다.
PyPy3도 지원됩니다(및 테스트됨).
PyPI에서 최신 릴리스 버전을 다운로드하여 설치합니다.
pip 설치 MechanicalSoup
GitHub에서 개발 버전을 다운로드하고 설치합니다.
pip 설치 git+https://github.com/MechanicalSoup/MechanicalSoup
소스에서 설치(현재 작업 디렉터리에 버전 설치):
파이썬 setup.py 설치
(모든 경우에 install
명령에 --user
추가하여 현재 사용자의 홈 디렉터리에 설치합니다.)
전체 문서는 https://mechanicalsoup.readthedocs.io/에서 확인할 수 있습니다. 자동으로 생성된 API 문서로 바로 이동할 수 있습니다.
example/expl_qwant.py에서 Qwant 검색 결과를 가져오는 코드를 작성합니다.
"""Qwantsearch 엔진에서 결과를 얻기 위한 MechanicalSoup 사용 예."""import reimport Mechanicalsoupimport htmlimport urllib.parse# Qwantbrowser에 연결 = Mechanicalsoup.StatefulBrowser(user_agent='MechanicalSoup')browser.open("https:// lite.qwant.com/")# 검색어 입력 formbrowser.select_form('#search-form')browser["q"] = "MechanicalSoup"browser.submit_selected()# browser.page.select('.result a')에 링크에 대한 결과를 표시합니다:# Qwant는 리디렉션 링크를 표시합니다. , 실제 URL이 아니므로 # 리디렉션 링크에서 실제 URL을 추출합니다.href = link.attrs['href']m = re.match(r"^/redirect/[^/]*/(.*)$", href)if m:href = urllib.parse.unquote(m.group(1))print(link.text, ' ->', href)
더 많은 예제는 예제/에서 확인할 수 있습니다.
더 복잡한 형식(체크박스, 라디오 버튼, 텍스트 영역)의 예를 보려면 테스트/test_browser.py 및 테스트/테스트_폼.py를 읽어보세요.
MechanicalSoup 구축, 테스트 및 기여에 대한 지침: CONTRIBUTING.rst를 참조하세요.
FAQ를 읽어보세요.