手把手教你快速入门Python

清疚 2023-09-26 06:31 243阅读 0赞

1. 前言

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

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

项目地址:

https://github.com/jmcarp/robobrowser

2. 安装及用法

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

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

  1. # 安装依赖
  2. pip3 install robobrowser
  3. # lxml解析器(官方推荐)
  4. 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/

3. 实战一下

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

3-1 打开目标网站

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

  1. from time import sleep
  2. from robobrowser import RoboBrowser
  3. home_url = 'https://baidu.com'
  4. # parser: 解析器,HTML parser; used by BeautifulSoup
  5. # 官方推荐:lxml
  6. rb = RoboBrowser(history=True, parser='lxml')
  7. # 打开目标网站
  8. rb.open(home_url)

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

3-2 自动化表单提交

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

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

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

  1. # 获取表单对象
  2. bd_form = rb.get_form()
  3. print(bd_form)
  4. bd_form['wd'].value = "AirPython"
  5. # 提交表单,模拟一次搜索
  6. rb.submit_form(bd_form)

3-3 数据爬取

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

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

  1. # 查看结果
  2. result_elements = rb.select(".result")
  3. # 搜索结果
  4. search_result = []
  5. # 第一项的链接地址
  6. first_href = ''
  7. for index, element in enumerate(result_elements):
  8. title = element.find("a").text
  9. href = element.find("a")['href']
  10. search_result.append(title)
  11. if index == 0:
  12. first_href = element.find("a")
  13. print('第一项地址为:', href)
  14. print(search_result)

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

  1. # 跳转到第一个链接
  2. rb.follow_link(first_href)
  3. # 获取历史
  4. print(rb.url)

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

4. 最后

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

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

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


资源分享

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走…

在这里插入图片描述

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,243人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java入门 手把手配置环境变量

    很多人觉得配置Java开发的环境变量很麻烦,很容易忘记,时常被它搞得晕头转向。如果出现这样的情况,那么原因只有一个,你不了解为毛需要配置环境变量,不配置环境变量就不能开发了吗?

    相关 手把手java快速过滤关键词

    java过滤关键词 > 敏感词、文字过滤是一个网站必不可少的功能,如何设计一个好的、高效的过滤算法是非常有必要的。前段时间我一个朋友(马上毕业,接触编程不久)要我帮他

    相关 Java开发快速上手!手把手

    正文 下文中截图来源于朋友一个pdf版本的面经,把所以知识点的答案整理了下来,耗费他至少1个月时间,在本文最后部分把这个pdf分享给大家,觉得有用的麻烦点赞关注走一波,谢