百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 软件资讯 > 正文

Requestium一个比Requests跟实用的python库

ninehua 2024-12-06 18:07 32 浏览

一.前言

最近看到好多微信公众号说Requestium把 Requests 按在地上摩擦了,我特意学习了下,这个库就是写爬虫,比较方便而已,也没网友说的那么夸张

那么什么是Requestium?

Requestium是一个集成了Requests和Selenium的Web自动化工具。它允许在保持当前Web会话的同时,在Requests的Session和Selenium的Webdriver之间进行切换。如果需要一个以Selenium为主体,增加部分Requests功能的Python库,可以考虑使用另一个叫做Selenium-Requests的库。

Requestium还整合了Parsel,用它编写的页面查询元素选择器代码特别清晰。它还为诸如点击元素和在DOM中渲染内容这些通用操作提供了帮助,这使得网页自动化更加省时和方便。


二.基本用法

1.安装

pip install requestium


2.创建Session对象

创建一个Session对象是发送请求的第一步。Session对象提供了许多方便的方法来发送和处理请求。创建Session对象的代码如下:

s = Session()


3.发送get请求

使用Session对象可以方便地发送GET请求

from requestium import Session  
s = Session()  


response = s.get('http://127.0.0.1:8090')  


print(response.text)


4.发送POST请求

Requestium也支持发送POST请求。以下是一个示例代码,展示如何使用Requestium发送POST请求

from requestium import Session, Keys


s = Session()


# 设置请求 URL
url = "http://127.0.0.1:8090"


# 设置请求数据
data = {
    "hello": "world"
}


# 发送 POST 请求
response = s.post(url, data=data)


# 输出响应内容
print(response.content)

5.处理响应

发送GET请求后,将返回一个响应对象。可以通过响应对象获取请求的结果。以下是一个示例代码,展示如何处理响应

from requestium import Session  






s = Session()  


response = s.get('http://127.0.0.1:8090')  


print(response.status_code)  # 打印响应状态码  


print(response.headers)  # 打印响应头部信息  


print(response.text)  # 打印响应内容


6.selenium部分

这部分代码需要安装selenium,下载好自己chrom浏览器对应的chromedriver驱动,使用BeautifulSoup这个库解析返回的数据

最新驱动下载地址如下:

https://googlechromelabs.github.io/chrome-for-testing/

以下代码,打开百度,搜索"requests"内容

from requestium import Session, Keys


from selenium.webdriver.common.by import By


from bs4 import BeautifulSoup




login_url = 'https://www.baidu.com'


s = Session(webdriver_path='./chromedriver.exe',


            browser='chrome',


            default_timeout=15,


            webdriver_options={'arguments': ['headless']}


           )


s.driver.get(login_url)


s.driver.find_element(By.XPATH,"//*[@id='kw']").send_keys('requests')


s.driver.find_element(By.XPATH,"//*[@id='su']").click() #send_keys('', Keys.ENTER)


s.transfer_driver_cookies_to_session()


resp = s.get(login_url)






soup = BeautifulSoup(resp.text,'html.parser') # 通过BeautifulSoup 解析返回的内容诶html


title = soup.head.title # 获取titile


print(title)


三.注意事项

1.需要先安装Requestium模块,可以使用pip命令进行安装。

2.在处理混合型网页(既有静态内容又有动态加载内容)时,可以先使用Requests获取网页的静态内容,然后在需要时切换到Selenium来处理JavaScript生成的内容或者进行用户交互,这样更加高效和灵活。

3.如果需要使用Selenium的方法,比如找到一个元素或执行JavaScript代码,可以在Session对象中通过driver属性来访问WebDriver。

4.在处理完请求后,需要关闭WebDriver,以释放资源。

5.如果需要添加请求参数,可以在get()方法中传入参数字典,或者使用params属性6设置请求参数。

7.如果需要使用XPath、CSS正则表达式进行解析响应,可以使用Session对象的xpath()、css()或re()方法,这些方法都支持链式调用。

8.在解析响应时,需要注意编码问题,可以使用decode()方法将编码后的字符串转为普通的Unicode字符串。

9.在处理完请求后,需要关闭Session对象,以释放资源。


四.优点

1.高效灵活:Requestium允许使用Requests处理静态内容,再切换到Selenium处理动态内容,提高了效率和灵活性。

2.无需额外配置:Requestium自动处理Selenium WebDriver的启动和关闭,无需手动配置。

3.支持多种解析方法:Requestium支持XPath、CSS和正则表达式等多种解析方法,方便对网页进行解析。

4.支持链式调用:Requestium的xpath()、css()和re()方法都支持链式调用,方便进行多步骤解析。

5.支持自动处理Cookie和Session:Requestium会自动处理Cookie和Session,方便进行登录等操作。


五.缺点:

1.需要安装多个库:Requestium需要同时安装Requests和Selenium两个库,安装过程稍微复杂一些。

2.切换引擎可能造成混淆:Requestium需要在不同引擎之间切换,对于初学者可能造成混淆。

3.解析速度可能较慢:由于Selenium需要加载整个网页,包括JavaScript、CSS、图片等,解析速度可能比纯Requests慢一些。

4.浏览器依赖性较强:Selenium依赖于特定版本的浏览器,如果浏览器更新可能导致一些问题


文中访问的127.0.0.1:8090 为自己写的服务,代码如下

import socket


sock = socket.socket()


sock.bind(("127.0.0.1", 8090))


sock.listen(5)


while 1:


    conn, addr = sock.accept()  # 阻塞等待客户端连接


    data = conn.recv(1024)


    print("客户端发送的请求信息:\n",data)


    conn.send(b'HTTP/1.1 200 ok\r\nserver:localhost\r\ncontent-type:application/json\r\n\r\n{"hello":"Requestium"}')


    conn.close()

相关推荐

VMware ESXI系统镜像定制

为什么要定制ESXi镜像呢?原因很简单,那就是H3C比较老的服务器,比如我用的UISR390XG2服务器,是没有适配的ESXi部署镜像的。而我要部署的H3CloudOS添加节点时只能选择H3C...

最新保姆级、超详细介绍VMware的使用(一)软件的安装

一、VMware简介VMWare虚拟机软件是一个“虚拟PC”软件,它使你可以在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与“多启动”系统相比,VMware采用了完全不同的概...

微软提供免费Windows 11 虚拟机下载

据ZDNet11月23日报道,微软(Microsoft)提供了免费的Windows11企业版虚拟机以供下载。针对开发人员,微软表示,“通过使用带有最新版本的Windows、开发工具、sdk和准备好的...

VMware Workstation Pro 17.5安装包下载安装教程

软件简介VMwareWorkstationPro17.5是一款专业功能最强大的虚拟机软件,用户可以在虚拟机同时运行各种操作系统,进行开发、测试、演示和部署软件,虚拟机中复制服务器、台式机和平板环...

VMware vCenter Server 8.0U3c 发布下载,修复 U3b 更新停止响应的问题

VMwarevCenterServer8.0U3c发布下载,修复U3b更新停止响应的问题VMwarevCenterServer8.0U3c发布下载-集中式管理vSphere...

最新整套VMware Workstation 15 Pro 官方简体中文版 + 永久密钥

VMwareWorkstation是深受全球用户信赖并屡获殊荣的虚拟机软件。它可以在单台PC上运行多个、多平台、多层面的操作系统与应用程序。并且支持快照和克隆,支持物理机与虚拟机间复制、移动,交...

VMware16虚拟机安装教程

系统装机教程也告一段落,接下来秋水给大家讲讲虚拟机的安装,这里呢虚拟机选择VMware。一、安装教程1、在软件官网下载VMware安装包,或者在后台回复获取秋水下载好的安装包。2、双击软件进行安装,并...

VMware虚拟机12.1下载:修复Win10镜像识别错误等问题

IT之家讯12月9日消息,虚拟机软件VMwareWorkstation迎来12.1更新版本,本次更新为维护性更新,修复了之前版本中存在的一些问题,比如将Win10首个重大更新ISO镜像错误识别为W...

VMware vCenter Server 8.0U3b 发布下载,新增功能概览

VMwarevCenterServer8.0U3b发布下载,新增功能概览ServerManagementSoftware|vCenter请访问原文链接:https://sysin.or...

下载VMware虚拟机:打造全能多系统桌面,让IT技术探索触手可及!

VMware虚拟机打造全能多系统桌面,助力IT技术探索在当今科技飞速发展的时代,IT技术正以前所未有的速度渗透到生活和工作的方方面面。无论是智能硬件、移动应用还是云计算服务,都离不开IT技术的支撑。掌...

如何在vmware workstation player虚拟机上安装VMware Tools工具

版本:vmwareworkstation16player&ubuntu64位。首先我们使用vmwareworkstation16player启动ubuntu64位虚拟机,然后点击虚...

VMware与CentOS安装配置指南

以下是一份详细的VMware虚拟机安装、配置及CentOS系统安装配置的指南,适合新手逐步操作:一、VMware虚拟机安装与配置下载并安装VMware下载地址:访问VMware官网,选...

VMware虚拟机与物理机文件交互,这8种方法送给你

上一期我们讲解过用VMWare虚拟机打造一个金刚不坏之身的操作系统,小伙伴们反应说方法不错,只是虚拟机与物理机文件交互方式不好操作,这期应小伙伴们的要求,给大家讲解下虚拟机与物理机文件交互的8种方式,...

VMware 17.0 Pro 版本正式发布,还有适配MacOS 的 Fusion 13 Pro下载

VMware17.0Pro官方下载地址:【点击获取】私聊VMware17.0Pro的新功能特性容器和Kubernetes支持使用vctlCLI构建/运行/拉/推容器映像。支持在Works...

VMware Tools安装失败?手把手教你本地安装

VMwareTools安装失败?作为虚拟机与物理机之间的"桥梁",VMwareTools能实现文件拖拽、剪贴板共享、分辨率自适应等关键功能。没有它,VMware虚拟机就变得非常不好...