机械汤
Version 1.3.0
https://mechanicalsup.readthedocs.io/
用于自动与网站交互的 Python 库。 MechanicalSoup 自动存储和发送 cookie、跟踪重定向、跟踪链接并提交表单。它不执行 JavaScript。
MechanicalSoup 由 M Hickford 创建,他是 Mechanize 库的忠实用户。不幸的是,Mechanize 直到 2019 年才与 Python 3 兼容,其开发停滞了几年。 MechanicalSoup 提供了类似的 API,基于 Python 巨头 Requests(用于 HTTP 会话)和 BeautifulSoup(用于文档导航)构建。自 2017 年以来,这是一个由 @hemberger 和 @moy 等小团队积极维护的项目。
PyPy3 也受支持(并进行了测试)。
从 PyPI 下载并安装最新发布的版本:
pip 安装 MechanicalSoup
从 GitHub 下载并安装开发版本:
pip install git+https://github.com/MechanicalSoup/MechanicalSoup
从源安装(在当前工作目录中安装版本):
python setup.py 安装
(在所有情况下,将--user
添加到install
命令以安装在当前用户的主目录中。)
完整文档可在 https://mechanicalsoup.readthedocs.io/ 上找到。您可能想直接跳转到自动生成的 API 文档。
从 example/expl_qwant.py 中获取 Qwant 搜索结果的代码:
"""使用 MechanicalSoup 从 Qwantsearch 引擎获取结果的示例。"""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()# 在浏览器中显示链接的结果 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)
示例/中提供了更多示例。
有关更复杂表单(复选框、单选按钮和文本区域)的示例,请阅读tests/test_browser.py 和tests/test_form.py。
构建、测试和贡献 MechanicalSoup 的说明:请参阅 CONTRIBUTING.rst。
阅读常见问题解答。