小众实用的Python 爬虫库RoboBrowser推荐

news2025/1/11 7:53:05

文章目录

  • 前言
  • 安装及用法
  • 实战一下
      • 1 打开目标网站
      • 2 自动化表单提交
      • 3 数据爬取
  • 最后
      • 关于Python技术储备
        • 一、Python所有方向的学习路线
        • 二、Python基础学习视频
        • 三、精品Python学习书籍
        • 四、Python工具包+项目源码合集
        • ①Python工具包
        • ②Python实战案例
        • ③Python小游戏源码
        • 五、面试资料
        • 六、Python兼职渠道


前言

在这里插入图片描述

今天推荐一款小众轻量级的爬虫库:RoboBrowser

RoboBrowser,Your friendly neighborhood web scraper!由纯 Python 编写,运行无需独立的浏览器,它不仅可以做爬虫,还可以实现 Web 端的自动化

项目地址:

​https://github.com/jmcarp/robobrowser

安装及用法


在实战之前,我们先安装依赖库及解析器

PS:官方推荐的解析器是 「lxml」

\# 安装依赖
pip3 install robobrowser

# lxml解析器(官方推荐)
pip3 install lxml

RoboBrowser 常见的 2 个功能为:

  • 模拟表单 Form 提交
  • 网页数据爬取

使用 RoboBrowser 进行网页数据爬取,常见的 3 个方法如下:

  • find

查询当前页面满足条件的第一个元素

  • find_all

查询当前页面拥有共同属性的一个列表元素

  • select

通过 CSS 选择器,查询页面,返回一个元素列表

需要指出的是,RoboBrowser 依赖于 BS4,所以它的使用方法和 BS4 类似

更多功能可以参考:

https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/

实战一下


我们以「 百度搜索及爬取搜索结果列表 」为例

1 打开目标网站

首先,我们实例化一个 RoboBrowser 对象

from time import sleep

from robobrowser import RoboBrowser

home\_url = 'https://baidu.com'

# parser: 解析器,HTML parser; used by BeautifulSoup
# 官方推荐:lxml
rb = RoboBrowser(history=True, parser='lxml')

# 打开目标网站
rb.open(home\_url)

然后,使用 RoboBrowser 实例对象中的 open() 方法打开目标网站

2 自动化表单提交

首先,使用 RoboBrowser 实例对象获取网页中的表单 Form

然后,通过为表单中的输入框赋值模拟输入操作

最后,使用 submit_form() 方法进行表单提交,模拟一次搜索操作

\# 获取表单对象
bd\_form = rb.get\_form()

print(bd\_form)

bd\_form\['wd'\].value = "AirPython"

# 提交表单,模拟一次搜索
rb.submit\_form(bd\_form)

3 数据爬取

分析搜索页面的网页结构,利用 RoboBrowser 中的 select() 方法匹配出所有的搜索列表元素

遍历搜索列表元素,使用 find() 方法查询出每一项的标题及 href 链接地址

\# 查看结果
result\_elements = rb.select(".result")

# 搜索结果
search\_result = \[\]

# 第一项的链接地址
first\_href = ''

for index, element in enumerate(result\_elements):
 title = element.find("a").text
 href = element.find("a")\['href'\]
 search\_result.append(title)

 if index == 0:
  first\_href = element.find("a")
  print('第一项地址为:', href)

print(search\_result)

最后,使用 RoboBrowser 中的 follow_link() 方法模拟一下「点击链接,查看网页详情」的操作

\# 跳转到第一个链接
rb.follow\_link(first\_href)

# 获取历史
print(rb.url)

需要注意的是,follow_link() 方法的参数为带有 href 值的 a 标签

最后

文中结合百度搜索实例,使用 RoboBrowser 完成了一次自动化及爬虫操作

相比 Selenium、Helium 等,RoboBrowser 更轻量级,不依赖独立的浏览器及驱动

如果想处理一些简单的爬虫或 Web 自动化,RoboBrowser 完全够用;但是面对一些复杂的自动化场景,更建议使用 Selenium、Pyppeteer、Helium 等


关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

保存图片微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、Python基础学习视频

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~在这里插入图片描述
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述
因篇幅有限,仅展示部分资料

三、精品Python学习书籍

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述

四、Python工具包+项目源码合集
①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

六、Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述
在这里插入图片描述
这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以保存图片微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1274983.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JSP格式化标签 formatDate日期格式转换

我们继续来讲格式化标签 formatDate 这个标签 作用是 将一个date时间类型的值转成指定格式的字符串 语法格式如下 value 是需要格式化的数据 type 是确定你要转什么类型的数据 这里有 日期型 时间型 日期时间型 dateStyle 专门用来设置日期格式 timestyle 的话 是专门用来设…

STM32 自定义UART数据格式(串口通信点亮LED实验)

起始位:0xaa告诉机器我们要开始传输数据了。 校验位:等于前几项数据位的相加。 结束位:结束传输。 自定义UART数据格式: 1》CPU与CPU之间 2》外设与CPU之间 这里举例,利用串口调试助手发送一串数据,…

Qt实现右键菜单

一、实现方法 QWidget提供了虚函数: virtual void contextMenuEvent(QContextMenuEvent*event);覆写该函数,即可。 二、Example 创建一个基本的mainwindow项目, 头文件: class MainWindow : public QMainWindow {Q_OBJECTpublic:MainWin…

在AI时代我们的必修课,从提示词工程到大语言模型,进行多场景实战的经验分享总结

在AI时代,我们正面临着与人工智能技术日益紧密相连的需求和挑战。无论是从事计算机科学、数据科学还是其他相关领域的人员,都需要掌握AI技术,并将其应用到不同的场景中。本文将分享一些经验总结,帮助读者在多种场景下进行AI实战。…

linux NAT网卡配置static

由于是内网,资料无法拷贝,借助参考资料,整理发出。 镜像安装 基本操作。 查看VM配置 图1,有几个信息。一个是NAT借用了网卡里的VMnet8适配器。 子网IP是从192.168.142.0 子网掩码255.255.255.255,对应下面配置的N…

后端项目操作数据库增删改查-使用MyBatis配置实现数据操作

一、创建一个数据表对应的实体类 在src/main/java/包名/路径下新建pojo.entity文件夹,如com.luoyang.small.pojo.entity,并在该文件夹下新增实体类java文件:如相册Album.java 该实体类的属性应与数据表的字段对应 数据表样例如下&#xff1a…

Quest 3圆满结束,500万SUI正在送出!

的最后审核阶段于北京时间今日凌晨结束并公布了获奖情况,此次总奖池金额达到了500万SUI,共有16.4万参与者获得了奖励。参与Quest 3的人们可以在Sui网络上的九款游戏中进行选择,并利用促销活动注册SuiNS域名。 Quest 3以游戏为重点&#xff0…

spring boot 2 升级到 spring boot 3 后文件上传失败

背景 项目需要,要求升级 spring boot 2.7 到 spring boot 3.2,升级过程中发现很多不兼容问题,下面说明文件上传失败的解决方案。 问题 spring boot 2 中不需要额外的配置,直接在 Controller 中配置 MultipartFile 接收页面传的…

python之pyqt专栏5-信号与槽1

在上一篇文章,我们了解到如果想要用代码改变QLabel的文本内容,可以调用QLabel类的text()函数。 但是现在有个这样的需求,界面中有一个Button与一个Label,当点击Button时,将Label的内容改变为“Hello world!…

全网最新最全面的Jmeter接口测试:jmeter模拟http请求实战

1、get请求 http://www.hnxmxit.com/ 2、带参数的get请求 微信公众号获取token请求 3、自定义头部信息的请求 百度搜索请求 https://www.baidu.com/s?wd猫 4、post请求 微信公众号添加用户标签请求 注:post请求中如果body中的数据为json,一定要在信息头管理器中…

【SpringBoot系列】SpringBoot时间字段格式化

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

袋鼠云产品功能更新报告08期|近百项全新功能和优化,你要的都在这里!

欢迎来到袋鼠云08期产品功能更新报告!在瞬息万变的市场环境中,我们深知客户的需求与期待,因此,我们及时推出袋鼠云最新产品更新及优化,包括数据治理中心、Hive SQL 性能优化、新插件等,助力企业在数字世界中…

基于OpenSSL和nginx搭建本地https服务器(详细实操版)

(꒪ꇴ꒪ ),Hello我是祐言QAQ我的博客主页:C/C语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍快上🚘,一起学习,让我们成为一个强大的攻城狮&#xff0…

【从删库到跑路 | MySQL总结篇】索引的详细使用

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】🎈 本专栏旨在分享学习MySQL的一点学习心得,欢迎大家在评论区讨论💌 目录 一、索引…

PHP开源问答网站平台源码系统 源码全部开源可二次开发 附带完整的搭建教程

目前,问答网站已经成为人们获取知识、交流思想的重要平台。然而,对于许多开发者来说,从头开始构建一个问答网站可能会面临各种挑战。今天,小编给大家介绍一款基于PHP的开源问答网站平台源码系统,它不仅源码全部开源&am…

Apache2.4 AliasMatch导致301重定向问题?

环境:ubuntu18.04-desktop apache2版本: rootubuntu:/etc/apache2# apache2ctl -v Server version: Apache/2.4.29 (Ubuntu) Server built: 2023-03-08T17:34:33apache配置: DocumentRoot /var/www/html # Alias就没事 # Alias "/my…

05-基于Git的团队合作和跨团队合作方式

Git团队合作 团队协作 第一步: 在管理员的仓库中如git-shTest选择Settings-->Manage access-->invite a collaborator-->在弹出的界面中填入想要合作的人的GitHub账号 第二步: 管理员如yueyue复制邀请函中的地址内容通过微信钉钉等方式发送给该用户如atguigulinghuc…

Jetson Nano部署YOLOv5与Tensorrtx加速

一、烧录镜像 1、Jetson Nano烧写系统镜像 Jetson Nano是一款形状、外接口类似于树莓派的嵌入式主板,搭载了四核Cortex-A57处理器,GPU则是拥有128个NVIDIA CUDA核心的NVIDIA Maxwell架构显卡,内存为4GB的LPDDR4,存储则为16GB eM…

32岁,大专,转行网络工程师可行吗?

中午好,我是老杨。 32岁,是一个距离35岁不远不近的年纪,在IT行业里,也是一个最为尴尬的年纪。 年过三十,很多人在既有岗位做的麻木,想要跳槽,又怕承担动荡的风险; 到了这个年纪猜…

计算机新建盘符和重新分配盘符的大小

一、新建盘符 有些电脑刚买来时候,只有一个C盘分区,此时最好增加几个分区方便使用。 注意:分区操作要慎重,不要轻易去试。这里只针对购买的电脑厂家未做分区,只有一个C盘的情况。 如果自己电脑的分区本身已经满足你…