DrissionPage自动化
官方地址:https://drissionpage.cn/
这里贴几个练习题,具体用法还是要看文档。对于速度要求不高的请求。可以先用自动化工具实现。
练习1
百度 输入并搜索
点击查看代码
`from DrissionPage import SessionPage,ChromiumPage,Chromium
import time
import random
url = "https://www.baidu.com/"
# # 启动或接管浏览器,并创建标签页对象
tab = Chromium().latest_tab
# 使用get进行跳转
tab.get(url)
# 获取输入框
inputs = tab.ele("#kw")
print(inputs)
# 输入内容
inputs.input("deepseek")
# 获取点击元素 并进行点击
tab.ele("#su").click()
print(tab.html)
time.sleep(3)
tab.close()
`
**练习2**
# boss直聘
from DrissionPage import SessionPage,ChromiumPage,Chromium
# 打开一个标签页
tab = Chromium().latest_tab
# 默认是normal 等待页面加载完成,none表示页面链接完成就结束
tab.set.load_mode.none()
#异步加载网页需要监听接口
for i in range(1,5):
# 监听异步接口
tab.listen.start("/search/joblist.json")
# 访问指定页面
tab.get(f"https://www.zhipin.com/web/geek/job?query=python&city=101090100&page={i}")
# 等待数据包
packet = tab.listen.wait()
# 停止加载
tab.stop_loading()
#打印数据包
print(packet.response.body)
tab.close()
练习2
boss直聘
点击查看代码
from DrissionPage import SessionPage,ChromiumPage,Chromium
# 打开一个标签页
tab = Chromium().latest_tab
# 默认是normal 等待页面加载完成,none表示页面链接完成就结束
tab.set.load_mode.none()
#异步加载网页需要监听接口
for i in range(1,5):
# 监听异步接口
tab.listen.start("/search/joblist.json")
# 访问指定页面
tab.get(f"https://www.zhipin.com/web/geek/job?query=python&city=101090100&page={i}")
# 等待数据包
packet = tab.listen.wait()
# 停止加载
tab.stop_loading()
#打印数据包
print(packet.response.body)
tab.close()
点击查看代码
import json
import re
listenurl = "h5/mtop.relationrecommend.wirelessrecommend.recommend/2.0/"
from DrissionPage import SessionPage,ChromiumPage,Chromium
# 打开一个标签页
tab = Chromium().latest_tab
# 默认是normal 等待页面加载完成,none表示页面链接完成就结束
tab.set.load_mode.none()
for i in range(10):
# 监听接口
tab.listen.start("h5/mtop.relationrecommend.wirelessrecommend.recommend/2.0/")
# 访问界面
tab.get(f"https://uland.taobao.com/sem/tbsearch?bd_vid=9166198994780574100&clk1=320ae16873c37e15347aa09a4b5633d5&keyword=python&localImgKey=&page={i}&q=python&tab=all")
# 等待数据包
packet = tab.listen.wait()
# 停止加载
tab.stop_loading()
#打印数据包
print(packet.response.body)
# 返回的是jsonp数据
data = re.search("mtopjsonp\d\((.*)\)",packet.response.body).group(1)
data = json.loads(data)
items = data["data"]["itemsArray"]
for item in items:
print(item)
4 练习4
猫眼电影
点击查看代码
from DrissionPage import SessionPage,ChromiumPage,Chromium
# 猫眼电影排行榜
tab = Chromium().new_tab(url="https://www.maoyan.com/board/4")
while True:
# 获取所有的dd元素
moves = tab.eles("tag:dd")
for item in moves:
# @ +自定义属性来获取元素位置 再通过attr来获取内部属性
title = item("@data-act=boarditem-click").attr("title")
# 通过.来定位class 获取电影分数
score = item(".score").text
# 获取电影上映时间
time = item(".releasetime").text
print(title,score,time)
# 可以通过元素内text 内容来定位元素,如果有下一页按钮就点击
btn = tab("下一页",timeout=2)
if btn:
btn.click()
#等待页面完成加载
tab.wait.load_start()
else:
break
tab.close()
练习5
小红薯
点击查看代码
from DrissionPage import SessionPage,ChromiumPage,Chromium
import time
import random
# # 启动或接管浏览器,并创建标签页对象
tab = Chromium().new_tab()
#跳转到对应页面 产生的数据包不监听
tab.get('https://www.xiaohongshu.com/explore')
# 开始监听,指定获取包含该文本的数据包
tab.listen.start('api/sns/web/v1/homefeed')
while True:
# document.documentElement.scrollHeight 返回文档顶部到底部的值包括不可见部分
# document.documentElement.scrollTop 获取是相对于顶部的滚动距离,赋值页面会滚定到指定位置
# js_code = f"document.documentElement.scrollTop = document.documentElement.scrollHeight*{i}:"
# 另一种滚动,随机滚动100-500px
tab.scroll(random.randint(100,500))
# tab.run_js(js_code)
time.sleep(random.randint(400,800)/1000)
#tab.listen.steps返回一个可迭代的对象,每次循环可以从中获取数据包
packet = tab.listen.steps(timeout=1)
print("数据状态:",packet)
if packet:
for item in packet:
print(item.response.body)
else:
break
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术