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

Requestium一个比Requests跟实用的python库

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

一.前言

最近看到好多微信公众号说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()

相关推荐

单打独斗的产品设计师工作流程总结

来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。我从入行开始就在一个做自己产品的小公司工作,到现在已经三年了。刚开始工作的时候什么也不懂,老板说让出效果图,就开始直接...

毕业生必备软件!6套APP构建我的产品设计工作流

工欲善其事,必先利其器。思维和方法论固然超级重要,但是掌握并制定适合自己的工作流也可以成倍提升效率。好的软件加上熟练的使用可以帮助解决遇到的所有问题,不仅可以减轻大脑和身体的负担,更可以让产品设计师在...

如何在APP原型上写需求?(app原型设计规范)

你有没有过这样的经历——辛辛苦苦写了半天的文档,结果开发一眼没看,做需求的时候又把文档里的内容问了一遍?如果你也有这样的经历,那么在APP原型上写需求,或许能帮你解决这个问题。为什么要把需求直接写在...

产品经理工具箱|原型及交互设计工具

来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。世界上最实在最方便的原型设计及交互工具:国外的谷歌,facebook等大型互联网公司的交互工具就是上面最原始,最有效最...

交互设计利器汇总:实用工具大揭秘!

近年来,页面交互设计有了很好的发展,越来越受到人们的重视。如果你想成为一名页面交互设计师,除了对平面设计和产品设计有一定的了解外,更重要的是要知道哪个软件适合页面交互设计。本文将带您了解5款流行的页面...

Taro - 京东凹凸实验室出品的小程序多端开发工具,内置 UI 组件库

可以支持转换到微信/京东/百度/支付宝/字节跳动/QQ小程序以及H5端,同时也支持使用Vue语法了。关于Taro凹凸实验室(O2Lab)来自京东零售集团,创建于2015年10月,是...

开发2小时,修bug2周,我用Trae做了个小程序

在当今快速发展的科技时代,AI技术的崛起为开发者带来了前所未有的机遇与挑战。一方面,AI极大地降低了技术门槛,让更多的创意得以快速实现;另一方面,它也提升了竞争维度,促使人们在认知、方法和时间效率上不...

好用的10款免费原型设计工具(免费的原型设计软件)

对产品经理或UI/UX设计师来说,一款好的原型设计工具至关重要。好的原型设计软件能够帮助你快速构建还原度高且信息架构清晰明了的原型图,还能极大减低工作中与同事的沟通成本,更高效地推进工作。那么,一款好...

用局域网内部分享Axure原型,这里有详细的步骤

来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。用axure做好原型,想分享给别人,有几个方法:生成本地文件,发送本地文件,但是文件有更新,就要重新发送用axure自...

Axure制作App原型应该怎样设置尺寸?原型尺寸对照表!

最近有几位小伙伴儿都提出同样一个疑问:想用Axure设计一个APP原型放到真实的移动设备中演示,但不知道应该使用什么尺寸?若要解释清楚像素和分辨率需要的篇幅比较长,请大家参考百度百科。这里老枪搜集...

200套数据可视化大屏模版Axure高保真原型

超炫可视化大屏模版来了,Axure高保真原型。关注微信公众号“素材帮帮站”,发送消息100051,获取素材下载地址。查看往期文章,获取更多免费素材。

Axure RP 8 Beta版正式上线(axure rp8是什么软件)

AxureSoftwareSolution公司于美国当地时间8月12日宣布其旗下产品AxureRP的v8版本的测试版正式上线。以下是其官方博客关于对AxureRP8Beta版的介绍:今天,...

PM小技术:使用SAE发布在线Axure文档

俗话说,不会写代码的产品经理不是好的射鸡湿。关于产品经理与技术之间的微妙关系,扯开了讲可是长篇大论,比如知乎上这个问题:IT行业产品经理(尤其是创业的)需要懂技术吗?懂到什么程度?,以及这个:产品经...

『原型资源』Axure自带图标库不够用,第三方经典图标库来袭

今天小编为大家带来第三方经典图标库,己确认内容可用现推荐给大家。直接上手就可不用自己画哈~获取原型文档请与班主任联系!先睹为快,合适再拿走不谢:图标太多,截取部分给大家参考o(* ̄︶ ̄*)o免费领取资...

Axure RP 8 测试版:将于今年夏天到来

我们一直在努力的开发AxureRP8。我认为这是对现有客户以及刚接触Axure的人的一个重要版本。我们希望看到你使用这些新特性,所以我们对现有客户免费升级。所有有AxureRP授权的客户包括标准...