首页 > 编程语言 >python + playwright 非无痕模式打开网页下载json数据

python + playwright 非无痕模式打开网页下载json数据

时间:2024-03-24 18:55:18浏览次数:26  
标签:playwright python locator json print data page

使用python从网页下载资料,生成一些图表使用,因为json数据需要SSO验证,不然没有Token是无权限获取的,所以使用playwright 无痕模式打开不行,要使用非无痕模式。

从网页报表上把json数据转成Excel保存

代码没有多华丽,只是满足了那时候需要這一操作的需求。

点击查看代码
from playwright.sync_api import sync_playwright
import requests
import pandas as pd


pwd = "admin2003"

def jsonToexcel(url,token,filename):
    response = requests.get(url,params={"Token": token})
    
    if response.status_code == 200:
        json_data = response.json()
        #print(json_data)
    else:
        print("请求失败,状态码:", response.status_code)

    if bool(json_data):
        df = pd.DataFrame(json_data)
        df.to_excel(filename, index=False, engine="openpyxl")
        print("档案下載保存成功")
    else:
        print("档案下載失敗")

#以非无痕模式打开浏览器,不然沒有cookie
p = sync_playwright().start()
browser = p.chromium.launch_persistent_context(
    # 指定本机用户缓存地址
    user_data_dir=f"D:\chrome_user\yqy",
    # 接收下载事件
    accept_downloads=True,
    # 设置 GUI 模式
    headless=False,
    bypass_csp=True,
    slow_mo=1000,
    channel="chrome"
)
page = browser.pages[0]
page.goto("http://*****.html&Reload=172345679606")
page.locator("input[type=\"text\"]").click()
page.locator("input[type=\"text\"]").fill("*******")
page.locator("#tbPassword").click()
page.locator("#tbPassword").fill(pwd)
page.get_by_role("button", name="Sign In").click()
print(">>>>>頁面加載中,請稍后<<<<<<")
page.wait_for_timeout(20000)

print("开始获取cookie")
cookies = browser.cookies()
#print("Cookies:", cookies)

#获取Token
sso_token_value = [d['value'] for d in cookies if d['name'] == 'SSOToken'][0]
print(sso_token_value)

#API地址
url1 = "http://*******01"
url2 = "http://*******02"

filepath = "F:\public\Tableau\Chart\\"

print(">>>>>>开始下載第一份excel,請稍后<<<<<<")
jsonToexcel(url1,sso_token_value,filepath+"001.xlsx")
print("------------------------------------------------------------")
print(">>>>>>开始下載第二份excel,請稍后<<<<<<")
jsonToexcel(url2,sso_token_value,filepath+"002.xlsx")

print("网页执行登出")
page.get_by_role("link", name="叶**").click()
page.get_by_role("link", name=" Log Out").click()
page.wait_for_timeout(3000)
print("网页登出完毕")

browser.close()
print(">>>>>执行完成<<<<<")

标签:playwright,python,locator,json,print,data,page
From: https://www.cnblogs.com/qiuyublog/p/18092814

相关文章

  • python处理excel,删除行和列+去除重复列
    删除指定的行与列点击查看代码importxlwingsasxw#下載下來的Excel,列和行有很多空白的,要先刪除掉.#打开Excel文件workbook=xw.Book('test.xlsx')sheet=workbook.sheets[0]#删除1-12行sheet.range('1:12').api.EntireRow.Delete()#删除A-G列sheet.range(......
  • Python+openpyxl 拆分Excel合并的单元格
    图片数据是举例子。在实际使用中,从需求网页上下载的生产资料是带有合并单元格的,但在处理的时候需要拆分开,不然不好操作。使用openpyxl可以实现操作如果没有安装openpyxl库,首先安装openpyxl在命令行执行pipinstallopenpyxl点击查看代码importopenpyxlpath=r"test.......
  • python + xlwings 根据条件筛选Excel里的所需资料
    实际有用,有效,满足我的个人需要。点击查看代码importxlwingsasxwdeffiler():try:app=xw.App(visible=False,add_book=False)app2=xw.App(visible=False,add_book=True)wb=app.books.open('new_file.xlsx')#打开原始数据表......
  • BioPython模块的安装
     001、确认是否已经安装(base)[root@pc1~]#pythonPython3.11.4(main,Jul52023,14:15:25)[GCC11.2.0]onlinuxType"help","copyright","credits"or"license"formoreinformation.>>>importBioTraceback......
  • 数学建模 (线性规划 python代码 两种)
    线性规划: 线性规划(LinearProgramming,LP)是一种数学优化方法,用于解决一类特定类型的最优化问题。该问题的目标是在给定的一组线性约束条件下,找到使某个线性目标函数达到最大或最小的变量值。线性规划问题可以表示为以下标准形式:最小化(或最大化):Z=c^T*x约束条件:Ax<=b,......
  • Python编程异步爬虫——aiohttp的使用
    异步爬虫—aiohttp的使用基本介绍asyncio模块其内部实现了对TCP、UDP、SSL协议的异步操作,但是对于HTTP请求来说,就需要用aiohttp实现了。aiohttp是一个基于asyncio的异步HTTP网络模块,它既提供了服务端,又提供了客户端。requests发起的是同步网络请求,aiohttp则是异步。ai......
  • Ubuntu下安装Python虚拟环境
    安装和配置安装包管理神器pipsudoaptinstallpython-pip升级pipsudopipinstall--upgradepip安装virtualenv,virtualenvwrappersudopipinstallvirtualenvsudopipinstallvirtualenvwrapper配置virtualenvwrapper#默认的virtualenvwrapper安装在/u......
  • 最长子字符串的长度(二)【华为OD机试JAVA&Python&C++&JS题解】
    一.题目-最长子字符串的长度(二)给你一个字符串s,字符串s首尾相连成一个环形,请你在环中找出’l’、‘o’、‘x’字符都恰好出现了偶数次最长子字符串的长度。输入描述:输入是一串小写的字母组成的字符串。输出描述:输出是一个整数补充说明:1<=s.length<=5x10^5......
  • 孙悟空吃蟠桃【华为OD机试JAVA&Python&C++&JS题解】
    一.题目-孙悟空吃蟠桃孙悟空爱吃蟠桃,有一天趁着蟠桃园守卫不在来偷吃。已知蟠桃园有N颗桃树,每颗树上都有桃子,守卫将在H小时后回来。孙悟空可以决定他吃蟠桃的速度K(个/小时),每个小时选一颗桃树,并从树上吃掉K个,如果树上的桃子少于K个,则全部吃掉,并且这一小时剩余的时间里不再......
  • 【锂电池SOC估计】【PyTorch】基于Basisformer时间序列锂离子电池SOC预测研究(python代
     ......