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()
**3 练习3** 淘宝搜索
点击查看代码
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


posted @   dacaiji  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示