MechanicalSoup

可能你看到MechanicalSoup,就会想起BeautifulSoup,是的,这两个的功能用起来差不多,只是MechanicalSoup做的更多一点。

MechanicalSoup 更像一个浏览器一样,但是他不执行’JavaScript’,在浏览器中当我们获取了一个网站的内容以后,MechanicalSoup 就可以像JavaScript一样,查找和获取网站的指定内容了。


github的地址在这里。

安装

PyPy3 也受支持(并经过测试)。

PyPI下载并安装最新发布的版本:

pip install MechanicalSoup

从GitHub下载并安装开发版本:

pip install git+https://github.com/MechanicalSoup/MechanicalSoup

从源代码安装(在当前工作目录中安装版本):

python setup.py install

使用MechanicalSoup

获取搜索结果

通过MechanicalSoup,访问Qwant 搜索MechanicalSoup,并打印搜索的结果。例子用起来非常的简单,和以前的不一样的地方就是变得更方便了,我们一口气就进行了网站的获取和解析了,最关键的是解析的规则还是很规范的,轻松的获得了我们需要的内容。

"""Example usage of MechanicalSoup to get the results from the Qwant
search engine.
"""import re
import mechanicalsoup
import html
import urllib.parse# Connect to Qwant
browser = mechanicalsoup.StatefulBrowser(user_agent='MechanicalSoup')
browser.open("https://lite.qwant.com/")# Fill-in the search form
browser.select_form('#search-form')
browser["q"] = "MechanicalSoup"
browser.submit_selected()# Display the results
for link in browser.page.select('.result a'):# Qwant shows redirection links, not the actual URL, so extract# the actual URL from the redirect link:href = link.attrs['href']m = re.match(r"^/redirect/[^/]*/(.*)$", href)if m:href = urllib.parse.unquote(m.group(1))print(link.text, '->', href)

结果如下:

Welcome to MechanicalSoup’s documentation! — MechanicalSoup 1.1.0 ...  -> aHR0cHMlM0ElMkYlMkZtZWNoYW5pY2Fsc291cC5yZWFkdGhlZG9jcy5pbyUyRmVuJTJGc3RhYmxlJTJGMechanicalSoup · PyPI  -> aHR0cHMlM0ElMkYlMkZweXBpLm9yZyUyRnByb2plY3QlMkZNZWNoYW5pY2FsU291cCUyRg==推荐一款小众且好用的 Python 库 - MechanicalSoup - 简书  -> aHR0cHMlM0ElMkYlMkZ3d3cuamlhbnNodS5jb20lMkZwJTJGZGNmZjgzNGQxNzQ4神器-MechanicalSoup - 腾讯云开发者社区-腾讯云  -> aHR0cHMlM0ElMkYlMkZjbG91ZC50ZW5jZW50LmNvbSUyRmRldmVsb3BlciUyRm5ld3MlMkYzNjg4NjA=简书 - 创作你的创作  -> aHR0cHMlM0ElMkYlMkZ3d3cuamlhbnNodS5jb20lMkZwJTJGNDQ2YzJmODdiNzEypython之mechanicalsoup:官方也有两个坑 - 知乎  -> aHR0cHMlM0ElMkYlMkZ6aHVhbmxhbi56aGlodS5jb20lMkZwJTJGMjkyNTMyMDQ=GitHub上3k+star的python库你了解吗?详解 ...  -> aHR0cHMlM0ElMkYlMkZibG9nLmNzZG4ubmV0JTJGd2VpeGluXzQxODQ2NzY5JTJGYXJ0aWNsZSUyRmRldGFpbHMlMkYxMDQzNTU1MDM=GitHub上3k+star的python库你了解吗?详解 ...  -> aHR0cHMlM0ElMkYlMkZ6aHVhbmxhbi56aGlodS5jb20lMkZwJTJGMTA3MzQ3MTE3再推荐一款小众且好用的 Python 库_Python数据之道的 ...  -> aHR0cHMlM0ElMkYlMkZibG9nLmNzZG4ubmV0JTJGbGVtb25iaXQlMkZhcnRpY2xlJTJGZGV0YWlscyUyRjExNTMyNzA0Nw==再推荐一款小众且好用的 Python 库 - MechanicalSoup ...  -> aHR0cHMlM0ElMkYlMkZqdWVqaW4uY24lMkZwb3N0JTJGNjk0MjgwOTM4MjU0NzYxOTg3Ng==

我们打印出的是我们通过规则和正则解析出的,我们需要的内容,包含了网页的名称和地址。

登录 GitHub

使用 MechanicalSoup 最简单的方法是使用该类(此示例 在 MechanicalSoup 的源代码中StatefulBrowser作为示例example.py提供):

"""Example app to login to GitHub using the StatefulBrowser class.NOTE: This example will not work if the user has 2FA enabled."""import argparse
from getpass import getpassimport mechanicalsoupparser = argparse.ArgumentParser(description="Login to GitHub.")
parser.add_argument("username")
args = parser.parse_args()args.password = getpass("Please enter your GitHub password: ")browser = mechanicalsoup.StatefulBrowser(soup_config={'features': 'lxml'},raise_on_404=True,user_agent='MyBot/0.1: mysite.example.com/bot_info',
)
# Uncomment for a more verbose output:
# browser.set_verbose(2)browser.open("https://github.com")
browser.follow_link("login")
browser.select_form('#login form')
browser["login"] = args.username
browser["password"] = args.password
resp = browser.submit_selected()# Uncomment to launch a web browser on the current page:
# browser.launch_browser()# verify we are now logged in
page = browser.page
messages = page.find("div", class_="flash-messages")
if messages:print(messages.text)
assert page.select(".logout-form")print(page.title.text)# verify we remain logged in (thanks to cookies) as we browse the rest of
# the site
page3 = browser.open("https://github.com/MechanicalSoup/MechanicalSoup")
assert page3.soup.select(".logout-form")

看了整个登入的代码流程,登入到github的流程是一气呵成的,就像我们在网页上输入账号密码,点击按钮进行登入一样,方便快捷,这也是我觉得MechanicalSoup值得推荐的原因了。

Github每日精选(第24期):python的浏览器MechanicalSoup相关推荐

  1. Github每日精选(第56期):支持多语言的文字识别EasyOCR

    EasyOCR EasyOCR一款好用的OCR,支持80多种语言和所有流行的书写脚本,包括拉丁语.汉语.阿拉伯语.德瓦纳加里语.西里尔语等. OCR (Optical Character Recogn ...

  2. Github每日精选(第79期):虚拟数据生成库faker

    faker Faker是一个Python包,可以为你生成假数据.无论您是需要引导您的数据库.创建美观的 XML 文档.填写您的持久性以对其进行压力测试,还是对从生产服务中获取的数据进行匿名化,Fake ...

  3. Github每日精选(第33期):Screenshot-to-code训练 AI 将设计模型转换为 HTML 和 CSS

    Screenshot-to-code Screenshot-to-code 深度学习将改变前端开发.它将增加原型设计速度并降低构建软件的门槛. github上的地址在这里. 当 Tony Beltra ...

  4. Github每日精选(第66期):擦图老照片修复神器--Lama Cleaner

    Lama Cleaner 不得不佩服,现在机器学习的发展,特别是对于图片的处理,那效果好得,想都不敢想.今天介绍的是一款带模型的机器学习图片处理程序Lama Cleaner. 先看看他的功能再说,最重 ...

  5. Github每日精选(第68期):HTTP客户端哪家强-reqwest

    reqwest reqwest 又是一个http的客户端,基本上来说,每一种语言都会开发出http的客户端,这些库好不好用其实是另一回事,有才是关键. 一个简单而强大的 Rust HTTP 客户端. ...

  6. Github每日精选(第18期):聊天机器人ChatterBot

    ChatterBot 是一个基于机器学习的对话对话引擎,使用 Python 构建,可以根据已知对话的集合生成响应.ChatterBot 的语言独立设计允许它被训练说任何语言. github的地址在这里 ...

  7. Github每日精选(第48期):SQLite下的知识库memos

    memos memos 是一个开源的.自托管的知识库,可与 SQLite db 文件一起使用. 使用SQLite db还是很有必要的,因为有的时候我们需要把我们的日志进行转移,直接把数据库拷走就可以了 ...

  8. Github每日精选(第77期):Go (Golang) 编写的 HTTP Web 框架gin

    Gin Gin 是一个用 Go (Golang) 编写的 Web 框架.由于httprouter,它具有类似 martini 的 API,性能提高了 40 倍.如果您需要性能和良好的生产力,您一定会喜 ...

  9. Github每日精选:将近4万Star的Java、Python面试指南献给大家!

    1.Flutter for web Flutter for Web 是 Flutter 的代码兼容( code-compatible)实现版本,使用基于标准的Web 技术(HTML, CSS 和 Ja ...

最新文章

  1. 一天狂揽2000+星,微软面向初学者ML课程来了,完全免费
  2. 什么?iPhone 8发布会当晚,杭州竟然有土豪摔手机砸场子!
  3. .NET设计模式(19):观察者模式(Observer Pattern)
  4. POPUP_TO_CONFIRM
  5. jca oracle官方文档,Oracle 官方文档说明
  6. 史上最萌最认真的机器学习/深度学习/模式识别入门指导手册(二)
  7. 系统架构师学习笔记-系统开发基础知识(一)
  8. OpenGL基础31:混合
  9. Spring-statemachine有限状态机(FSM)使用教程详解
  10. LOGO以及手绘签名完美导入CAD
  11. Microchip具有SDI和SQI接口串行SRAM存储器23LC512
  12. MB/T 2020/4/9-技术创新方法·概述
  13. python预测你的小孩身高_Python 孩子身高预测
  14. 长方形面积计算机方式,《长方形面积的计算》教学设计
  15. python使用numba库实现gpu加速
  16. 高级查询(mysql)
  17. Tomcat调优指南
  18. css 平移到某个位置_平移:translate() - CSS3 | 绿叶学习网
  19. (最全干货分享)渗透测试全流程归纳总结之二
  20. unity塔防游戏怪物转向_怪兽塔防手机版下载-怪兽塔防游戏下载v1.4 安卓版

热门文章

  1. ad 新建一个componen的类_Glyphs智能母件:字体设计师的好帮手 Glyphs smart Component: a good helper font designer...
  2. 2.Nacos 服务注册的原理
  3. 机器人社社长事迹_社团先进个人事迹材料
  4. 神码ai人工智能写作机器人_AI启动协变量AI为机器人构建通用AI
  5. 微信点击链接或者扫描二维码通过默认浏览器打开指定链接是如何实现的
  6. Androi开发基础
  7. 如何判断一个技术(中间件/库/工具)的靠谱程度?
  8. HTML——多媒体语义化标签
  9. 银行贷款,求每月等额还款金额
  10. 技能提升--1枚程序员的普通话练习