黔西南布依族苗族自治州网站建设_网站建设公司_后端工程师_seo优化
2026/1/19 15:54:48 网站建设 项目流程

爬虫自动化工具,因为js逆向十分灵活,下面以在浏览器上的一个test函数为例

window.test = function(){

         console.log("666");           //先创建一个函数

}

test();    //直接调用

window["test"]();     //利用window来进行调用

var a = "test";

window[a]();      //通过定义a来进行调用

console.log((true+"").slice(0,1));   //t

console.log((true+"").slice(3,4));    //e

console.log((false+"").slice(3,4));    //s

window[(true+"").slice(0,1)+(true+"").slice(3,4)+(false+"").slice(3,4)+(true+"").slice(0,1)]();

//通过切片来凑出test,下面还可以进一步变得更复杂

//还可以吧true换为!![],把false换为![]

介绍

Playwright 是一个开源的自动化库,由 Microsoft 开发,用于基于 Chromium, Firefox, 和 WebKit 的浏览器自动化。它支持多种语言,包括 Python,并能在 Windows, Linux, 和 macOS 上运行。

官方文档:https://playwright.dev/python/docs/api/class-elementhandle

安装

安装 Playwright
    pip install playwright

安装浏览器驱动
    python -m playwright install

注意事项:Python版本 ≥ 3.8。  都在终端操作

安装完成可以根据此目录去找

注意APPDATE是隐藏文件

基本操作

# 导包
from playwright.sync_api import sync_playwright
# playwright 控制浏览器操作的【需不需要代码写请求数据?】 请求由浏览器发# 创建 playwright 对象  =》 通过 python 操作浏览器 【playwright 对象】
pw = sync_playwright().start()
# 启动浏览器 =》通过 playwright 对象启动 chromium 浏览器(headless=False 无头模式)
browser = pw.chromium.launch(headless=False)  # 有头,显示浏览器    playwright支持的浏览器:chromium、firefox、webkit
# browser = pw.chromium.launch(headless=True)  # 无头 =》不显示浏览器界面# 创建上下文管理器?
context = browser.new_context()# 打开一个页面
page = context.new_page()
# 访问网站
page.goto('https://www.baidu.com')# 等待时长
page.wait_for_timeout(10000)

page对象

page 对象
    page.goto():   参数是网址【需要通过定位请求来确定网址吗? 不要】
        - timeout:超时时间,单位毫秒
        - wait_until:等待,直到什么时候
    获取页面源码:    page.content()
    获取页面标题:    page.title()
    获取页面 url:page.url

    如果访问一个网站获取到的是 json 数据,那么显示出来的是json数据【直接显示】。
    通过浏览器获取到的数据是经过浏览器处理之后得到的数据【html】。
    xpath:如果直接在浏览器获取xpath得不到数据的话,还是需要分析 print(page.content())。


定位:
    playwright 的 xpath 定位到的元素对象必须要先判断是否存在。
    元素对象.count() 统计当前元素个数
    获取所有元素:    元素对象.all()

    获取文本:       元素对象.inner_text()
    获取所有文本:    元素对象.all_inner_texts()
    获取元素属性:   元素对象.get_attribute()

    由于 playwright 支持多种定位方式,如果没有特殊的 xpath 定位符号,则需要明确表示是 xpath 语法。
        以后不是以  //  开头的 xpath 语法,就需要用 xpath= 开头


输入:元素对象.fill(文本内容)
点击:元素对象.click()

鼠标操作

移动鼠标
page.mouse.down():按下鼠标
page.mouse.move(x, y):移动鼠标
page.mouse.up():释放鼠标

获取元素坐标
    元素对象.bounding_box()

案例:https://www.helloweba.net/demo/2017/unlock/

python测试脚本

# 导包
from playwright.sync_api import sync_playwrightpw = sync_playwright().start()
browser = pw.chromium.launch(headless=False)  # 有头,显示浏览器    playwright支持的浏览器:chromium、firefox、webkit
context = browser.new_context()
page = context.new_page()
page.goto('https://www.helloweba.net/demo/2017/unlock/')# 定位滑块位置
slide = page.locator('//html/body/div/div/div/div[1]/div[1]/div[3]')
slide_location = None
if slide.count() > 0:# print(slide)# print(slide.bounding_box())  # {'x': 68.5, 'y': 192.796875, 'width': 37, 'height': 38}slide_location = slide.bounding_box()# 定位滑块外方框的位置
box = page.locator('//html/body/div/div/div/div[1]/div[1]/div[1]')
box_location = None
if box.count() > 0:print(box)print(box.bounding_box())  # {'x': 68.5, 'y': 192.796875, 'width': 37, 'height': 38}box_location = box.bounding_box()# 移动鼠标到滑块所在的位置【点击到滑块中间】
page.mouse.move(slide_location["x"]+slide_location["width"]/2, slide_location["y"]+slide_location["height"]/2)
# 按下鼠标左键
page.mouse.down()
# 移动鼠标到方框最右边
page.mouse.move(slide_location["x"] + box_location['width'], slide_location["y"])
# 释放鼠标
page.mouse.up()# 等待时长
page.wait_for_timeout(3000)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询