网站首页 > 开源技术 正文
一.前言
最近看到好多微信公众号说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()
猜你喜欢
- 2025-06-04 python用requests BeautifulSoup下载网页到txt并去掉html标记
- 2025-06-04 测试进阶:实现跨请求地保持登录的神器session你get了么?
- 2025-06-04 Python模拟登入的N种方式,总有一种方式适合你(建议收藏)
- 2025-06-04 RobotFramework之http接口测试库RequestsLibrary使用介绍(十)
- 2025-06-04 Kafka Producer 参数 max.in.flight.requests.per.connection 配置
- 2025-06-04 如何搭建接口自动化测试框架?(接口自动化测试框架设计)
- 2025-06-04 python编程实践:网络爬虫,从学习Requests 模块开始
- 2025-06-04 一文详解 requests 库中 json 参数和 data 参数的用法
- 2025-06-04 Python爬虫5 requests库get、post的使用
- 2025-06-04 Python-实战-requests库标准入门姿势
你 发表评论:
欢迎- 最近发表
-
- 后端服务太慢?试试这 7 招(后端 服务端 区别)
- 做一个适合二次开发的低代码平台,把程序员从curd中解脱出来-1
- Caffeine缓存 最快缓存 内存缓存(caffeine缓存使用)
- Java性能优化的10大策略(java性能调优从哪几个方面入手)
- New Balance M576PGT 全新配色设计
- x-cmd pkg | qrencode - 二维码生成工具
- 平和精英抽奖概率是多少 平和精英抽奖物品一览
- x-cmd pkg | tmux - 开源终端多路复用器(terminal multiplexer)
- 漫威官方App中文版上线:全站漫画限时免费
- macOS Monterey 12.7.4 (21H1123) 正式版发布,ISO、IPSW、PKG 下载
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)