一、爬虫简介

网络爬虫(也称为网页蜘蛛、网络机器人)是一种按照一定规则自动抓取互联网信息的程序或脚本。它们可以自动化地浏览网络中的信息,并将这些信息存储到本地计算机上。
在这里插入图片描述

网络爬虫通常从一组初始URL开始,访问这些链接并识别页面中的所有超链接,然后将这些链接添加到待抓取的URL列表中。爬虫会按照一定的策略反复访问这些URL,直到满足系统的停止条件。

1.1爬虫分类

网络爬虫的分类:

  1. 网络爬虫主要分为以下几种类型:
  2. 通用网络爬虫:这种爬虫会抓取整个互联网中的网页,主要用于搜索引擎,如百度、谷歌等。
  3. 聚焦网络爬虫:这种爬虫只抓取与特定主题相关的网页,节省了带宽和服务器资源。
  4. 增量式网络爬虫:这种爬虫只更新已抓取网页中发生变化的部分,保证数据的新鲜度。
  5. 深层网络爬虫:这种爬虫可以抓取隐藏在表单后的深层网页。

1.2爬虫应用

网络爬虫在大数据时代具有重要地位,广泛应用于以下领域:

  1. 搜索引擎:如百度、谷歌等搜索引擎使用爬虫抓取网页并建立索引,以提供快速的搜索服务。
  2. 数据分析与挖掘:爬虫可以自动采集数据,用于数据分析和挖掘。
  3. 金融分析:爬虫可以采集金融数据,进行投资分析。
  4. 舆情监测:爬虫可以监测和分析网络舆情。

二、Botasaurus概述

Botasaurus是一个类似于selenium的爬虫工具,使用python语言编写,项目源地址为:https://github.com/omkarcloud/botasaurus
在这里插入图片描述

目前该项目受到关注度较少,只有1.2k的star(2025年11月,目前为3.3k),远低于selenium,但是经实际测试:botasaurus在隐藏机器人标识方面优于selenium,测试时分别使用selenium与botasaurus访问自动化工具检测网站,前者会被网站识别出是机器人,而后者则会被判断为真人操作。

三、Botasaurus安装

安装有两种方式,一种为下载源项目到本地,通过项目中的setup.py安装,另一种为通过pip下载安装。pip下载安装命令如下:

pip install botasaurus

与selenium不同,Botasaurus不需要单独下载chromedriver,而是已在内部集成。

四、Botasaurus获取页面html文件

4.1示例代码

示例代码如下:

from botasaurus.browser import browser, Driver

@browser()
def get_html_botasaurus(driver: Driver, data, metadata):
    driver.get(data)
    html_txt = driver.page_html
    html_path = 'page.html'
    with open(html_path, 'w', encoding = 'gbk', errors = 'replace') as f:
        f.write(html_txt)

4.2代码说明

Botasaurus使用装饰器函数,对打开的浏览器进行一些参数配置,在编写和调用函数时相对于selenium较为复杂一些。

上述代码根据传入的data参数,将网页保存为html文件,编码为gbk。

五、控制不加载图片与css

5.1示例代码

Botasaurus内部提供参数设置接口,能够设置打开浏览器后不加载页面的图片与css样式文件,提高页面加载速度,设置接口在装饰器函数中,如下:

from botasaurus.browser import browser, Driver

@browser(block_images_and_css = True)
def get_html_botasaurus(driver: Driver, data, metadata):
    driver.get(data)
    html_txt = driver.page_html
    html_path = 'page.html'
    with open(html_path, 'w', encoding = 'gbk', errors = 'replace') as f:
        f.write(html_txt)

5.2代码说明

上述代码关键点在于通过将装饰器中的block_images_and_css设置为True,从而只将网页的文字内容保存到本地

六、获取网站cookie

6.1示例代码

有时需要获取网站为浏览器客户端设置的cookie,用以配合requests等下载工具使用,示例代码如下:

from botasaurus.browser import browser, Driver

@browser(block_images_and_css = True)
def get_cookie(driver: Driver, data, metadata):
    driver.get(data)
    cookiedictList = driver.get_cookies()
    for cookiedict in cookiedictList:
    	print(cookiedict)

6.2代码说明

代码主要通过driver.get_cookies函数获取cookie。

七、查找页面元素与实现元素点击、输入

Botasaurus查找元素的语法与JavaScript查找元素的语法非常相似,可以根据元素标签名称、class、id等属性查找元素。此外,可以在查找函数中直接设置查找的等待时间,而不必在查找函数之前调用等待函数,这一点优于selenium。

查找单个元素时,如找不到会返回None,查找多个元素时,查找不到会返回空列表。

7.1示例代码

示例代码如下:

from botasaurus.browser import browser, Driver

@browser(block_images_and_css = True)
def get_element_of_html(driver: Driver, data, metadata):
    driver.get(data)
    title_element = driver.select('title', wait = 6)#查找页面title元素,等待时间为6秒
    title_txt = title_element.text#获取title元素文本
    div_element = driver.select("div.class01.class02", wait = 6)#查找类名为class01 class02的单个div元素
    div_elements = driver.select_all("div.class01.class02", wait = 6)#查找类名为class01 class02的所有div元素
    input_element = driver.select("input#id01", wait = 6)#查找id名为id01的单个input元素
    input_element.type("abcd")#向input元素输入框输入abcd
    a_element = div_element.select('a', wait = 6)#在div元素内部查找a元素
    a_id = a_element.get_attribute("id")#获取a元素的id名称
    a_element.click()#点击a元素

7.2代码说明

上述代码与selenium的语法非常类似,代码中已写明详细注释。

八、执行js代码

Botasaurus支持执行js代码,一些操作可以通过js代码实现,示例代码如下:

8.1示例代码

from botasaurus.browser import browser, Driver

@browser(block_images_and_css = True)
def run_jsCode(driver: Driver, data, metadata):
    driver.get(data)
    reload_js = 'location.reload()'
    driver.run_js(reload_js)#实现页面重载

8.2代码说明

上述代码执行了location.reload()这一行js代码,用于实现页面重载

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐