当前位置: 首页 > news >正文

pc端和移动端的网站一个服务器如何建设多个网站

pc端和移动端的网站,一个服务器如何建设多个网站,企排排官网,罗马柱 东莞网站建设之前有见同事用过playwright进行浏览器模拟操作#xff0c;但是没有仔细了解#xff0c;今天去详细看了下#xff0c;发现playwright着实比selenium牛逼多了 Playwright 相对于selenium优点 1、自动下载chromnium, 无需担心chrome升级对应版本问题#xff1b; 2、支持录屏操…之前有见同事用过playwright进行浏览器模拟操作但是没有仔细了解今天去详细看了下发现playwright着实比selenium牛逼多了 Playwright 相对于selenium优点 1、自动下载chromnium, 无需担心chrome升级对应版本问题 2、支持录屏操作然后直接生成python代码 3、支持网路拦截、事件监听纵使我们是模拟浏览器但是依旧可以在request请求上作文章这个就很牛逼 4、代码简洁性更高 5、支持异步处理 安装使用 #下载第三方库 pip3 install playwright #安装好后进行初始化操作它会自动安装chromium, Firefox , webkit浏览器并配置一些驱动 playwright install录屏操作 1、使用控制台terminalcmd, powershell进入到项目目录下 2、查看所有的录屏相关命令playwright codegen -h 3、启动示例 #-o 非必须输出代码到指定文件如果不指定也可以在界面中复制代码就好 #-b 非必须指定浏览器 默认是chromnium #--device #非必须 指定机器型号 #www.baidu.com #非必须 指定访问的url playwright codegen -o luping.py -b chromnium --deviceiphone 13 www.baidu.com#--save-storage 保存浏览器缓存可以自定义指定项目名称 playwright codegen -b cr --save-storagesaiying www.saleyee.cn #--load-storage 获取已有的浏览器缓存指定好项目名称就好 playwright codegen -b cr --load-storagesaiying www.saleyee.cn4、录屏时直接人工操作就好了也可以暂停录屏至于如何获取元素内容需要自己探究 5、退出录屏只要在控制台ctrlC 6、然后把代码改一改就可以使用了这个还是很方便的 使用代码示例 事件监听close页面关闭事件。console页面上发生控制台日志事件。crash页面崩溃事件。dialog页面弹出对话框事件。domcontentloadedDOM 内容加载完成事件。download页面上触发下载事件。filechooser页面弹出文件选择对话框事件。frameattached子框架附加到页面事件。framedetached子框架从页面分离事件。framenavigated子框架导航事件。load页面加载完成事件。pageerror页面上发生错误事件。popup页面弹出弹出窗口事件。request页面发出网络请求事件。requestfailed页面上的请求失败事件。requestfinished页面上的请求完成事件。response页面接收到网络响应事件。websocket页面上发生 WebSocket 事件。worker页面上发生 Worker 事件。 # -*- coding: utf-8 -*- import asyncio import time from urllib import parse from playwright.async_api import async_playwright from playwright.sync_api import sync_playwright#响应事件response监听, 数据采集的逻辑可以在这里做 def on_response(response):if api/movie/ in response.url and response.status 200:# print(fStatue {response.status}: {response.url})print(response.json())#请求事件request监听只能获取相关的请求参数用处不大 def on_request(request):print(request.url)#下载事件监听比如店铺后台的表格下载就可以在此处理 def on_download(download):print(fDownload started: {download.url})#!!!!!!!!!!!!!网络劫持 #可以实现网络劫持和修改操作比如非加密通过相应参数修改获取自定义返回的内容从而采集 #它就相当于一个网络钩子可以修改请求信息, 还可以设置保持浏览器上url不变的情况下跳转其他站点页面 def handle_request(route, request):url request.urlif url http://example.com:if route.request.method GET:print(fGET请求url为{route.request.url})bits list(parse.urlparse(url))qs parse.parse_qs(bits[4])qs[key1] [GET] # 此处替换key1的值bits[4] parse.urlencode(qs, True)url parse.urlunparse(bits)print(f改变后的url为 {url}\n)route.continue_(urlurl)elif route.request.method POST:print(fPOST请求入参为{route.request.post_data})text_list route.request.post_data.split()for i in range(len(text_list)):text_item text_list[i]if key1 in text_item:text_list[i] key1POST # 此处替换key1的值print(f改变后的数据为 {.join(text_list)}\n)route.continue_(post_data.join(text_list))# 同步 # 使用with打开服务可以避免中间代码执行报错导致无法正常关闭浏览器进程 with sync_playwright() as p:# browser_type_list [p.chromium, p.firefox, p.webkit]for browser_type in [p.chromium]:browser browser_type.launch(headlessFalse)#可以指定项目名称例saiying,这样可以继承上一次浏览器缓存这样可以规避下重复登录的问题 但是不清楚没有该项目名称情况下会有什么问题# 也可以不指定创建一个新的context browser.new_context()# 如果使用该种方式记得流程结束后要再保留下当前缓存context.storage_state(pathsaiying) 在下面有示例# context browser.new_context(storage_statesaiying)# page context.new_page()#直接生成新浏览器执行对象page browser.new_page()#事件监听----startpage.on(response, on_response) #响应事件监听page.on(request, on_request) #发起请求事件监听page.on(download, on_download) # 文件下载事件监听# 事件监听----end#网络拦截---startroute_url http://127.0.0.1/zentao/testcase-create-1-0-0.html #可以指定拦截url,或者部分定制url#route_url ** #指定全部的url#route_url **/*.json #指定部分urlpage.route(route_url, handle_request) # 监听添加用例接口# 网络拦截---endpage.goto(https://spa6.scrape.center/) #请求网页地址page.wait_for_load_state(networkidle) #等待页面所有请求响应完毕还有load, domcontentloadedelement page.query_selector(xpath//a) #单节点定位elements page.query_selector_all(xpath//a) # 多节点定位for element in elements:print(element.inner_html()) #打印该节点下所有标签内容print(element.get_attribute(href))element.query_selector(xpath.//img)print(page.title())# 在登录完毕或者操做完毕后保留当前缓存供下次调用# context.storage_state(pathsaiying)# context.close()page.close()browser.close() #关闭浏览器# #异步, 感觉用处不大 # async def main(): # async with async_playwright() as p: # # browser_type_list [p.chromium, p.firefox, p.webkit] # for browser_type in [p.chromium]: # browser await browser_type.launch(headlessFalse) # page await browser.new_page() # await page.goto(https://www.baidu.com) # print(await page.title()) # await browser.close() # # asyncio.run(main())
http://www.zqtcl.cn/news/288376/

相关文章:

  • 大学生网站设计作业动画ftp发布asp.net网站
  • 网站建设哪家企业好站内优化怎么做
  • 萌宝宝投票网站怎么做网上商城推广方法
  • 网站建设规划书样板社交电商
  • 网站怎么做直播功能吗水库信息化网站建设
  • c语言做网站账号登录系统外资公司代理注册
  • 建站公司塔山双喜做饲料推广哪个网站好
  • php网站后台入口拼多多海外跨境电商入驻流程
  • 0731网站平面logo设计公司
  • 网站设计制作报价图片欣赏wordpress福利
  • 网站上有什么作用自己做网站需要学什么
  • 在哪里做马可波罗网站wordpress中文站cn
  • 威海外贸建站制作游戏的平台
  • 网站栏目策划 有思想的新闻网站建设开发的流程
  • 网站描述修改潍坊百度网站排名
  • 网站开发设计的技术网站开发可能存在的困难
  • 单片机做网站网站地图那么建设
  • 手机版网站建设软件wordpress主题开发ide
  • 网站建设的技术有哪些内容网站推广优化排名
  • 网站开发用jsp网站开发需要什么技术
  • 网站打开404错误怎么解决网站开发树形图
  • 好的建设网站公司哪家好湖南省做网站的
  • 网站怎么上传网站建设可行性分析表
  • 东营做网站优化价格企业网站开发一般多少钱
  • 高端网站设计公司排名邢台哪里有做网站的
  • 广州网站开发 英诺科技营销式网站建设
  • 网站存在的缺陷编程的基础知识
  • flash同视频做网站天津建设工程信息网投标信息系统
  • 湛江做网站开发手机网址大全主页网址
  • 平面网站设计如何租用网站服务器