爬虫工具Botasaurus简介

一、Botasaurus概述

Botasaurus是一个类似于selenium的爬虫工具,使用python语言编写,项目源地址为:https://github.com/omkarcloud/botasaurus

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

二、Botasaurus安装

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

pip install botasaurus

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

三、Botasaurus获取页面html文件

示例代码如下:

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)

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

四、控制不加载图片与css

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)

五、获取网站cookie

有时需要获取网站为浏览器客户端设置的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)

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

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

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

示例代码如下:

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元素

七、执行js代码

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

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)#实现页面重载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值