快速部署Selenoid、Docker、Rancher与GGR:一站式教程

需积分: 9 0 下载量 165 浏览量 更新于2024-08-07 收藏 7KB TXT 举报
本文档主要介绍了如何在IT环境中安装和配置Selenoid、Docker、Rancher以及GGR(可能是指某个特定的工具或者服务,但文中未给出详细定义)。Selenoid是一个自动化测试工具,它允许对浏览器进行分布式管理,用于执行和录制Web应用程序的自动化测试。 首先,关于Selenoid的安装步骤: 1. 启动Selenoid容器时,需要指定一些关键参数: - 使用`docker run -d`命令,以守护模式运行容器。 - `--name selenoid`为容器命名,便于管理。 - `-p 8081:4444`暴露Selenoid的HTTP API端口。 - `-v`选项将Docker主机的几个目录映射到容器内,如访问docker.sock,存储视频和配置文件等。 - `--privileged`确保容器具有管理员权限,以便访问宿主机资源。 - 指定AeroKube的Selenoid镜像版本(latest)并提供配置文件和浏览器设置。 - 设置`OVERRIDE_VIDEO_OUTPUT_DIR`,指定视频输出目录。 - 定义超时时间和重试次数。 2. 启动Selenoid UI,这是管理和监控Selenoid的界面,通过类似`docker run -d`的命令启动,指定Selenoid的URI地址。 接着,文档提及了Rancher的安装,Rancher是一个流行的容器管理平台,用于集中式管理多云和混合云环境中的容器应用。使用`docker run -d`启动Rancher服务器容器,并设置监听端口和重启策略。 此外,文档还列出了一些常用的Docker命令: - `docker info`:用于获取关于Docker引擎和系统的信息。 - `docker images`:显示所有可用的镜像列表。 - `docker ps`:查看当前正在运行的容器。 - `docker restart {containerid}`:重启指定ID的容器。 - `docker stop {containerid}`:停止容器。 - `docker rm {containerid}`:删除指定ID的容器。 这篇文档提供了在一个基础架构中部署和管理Docker容器、Rancher集群以及Selenoid自动化测试工具的步骤,包括容器的启动、网络配置和常见Docker操作指导。这是一项实用的指南,对于IT专业人士进行自动化测试和容器化应用运维有重要的参考价值。

帮我将以下代码写注释# coding=gbk # -- coding:uft-8 -- # 贝壳网小区 import requests from lxml import etree from time import sleep import hashlib from urllib import parse import pandas as pd def getPosi(tar): try: ak = 'C8rQZy1askzzMtdY3ChAZUer1P0PRjI0' sk = 'shShi1VLCkH1gGR4v75d2LTnrn2Vm5Mg' add = f'/geocoding/v3/?address={tar}&output=json&ak={ak}&city=大连市' add = parse.quote(add, safe="/:=&?#+!$,;'@()*[]") sn = hashlib.md5(parse.quote_plus(add + sk).encode('utf-8')).hexdigest() url = f'https://api.map.baidu.com{add}&sn={sn}' dic = requests.get(url).json() lat = dic['result']['location']['lat'] lng = dic['result']['location']['lng'] return lat, lng except: return None, None def collect(): items = { 'ganjingzi': 22, 'zhongshan': 19, 'shahekou': 14, 'xigang': 12 } resLs = [] for key in items: for page in range(items[key]): page += 1 url = f'https://dl.ke.com/xiaoqu/{key}/pg{page}/' headers = { 'User-Agent': ua, 'Referer': url } while True: try: res = requests.get(url=url, headers=headers, timeout=(5, 5)).content.decode('utf-8') break except: print('again') tree = etree.HTML(res) for li in tree.xpath('//ul[@class="listContent"]/li'): href = li.xpath('./a/@href')[0] while True: try: res = requests.get(url=href, headers=headers, timeout=(5, 5)).content.decode('utf-8') break except: print('again') tree = etree.HTML(res) dic = { 'href': href, 'key': key, 'name': tree.xpath('//h1/@title')[0], 'price': (tree.xpath('//span[@class="xiaoquUnitPrice"]/text()') + [''])[0], 'property': tree.xpath('//span[@class="xiaoquInfoContent"]/text()')[1].strip(), 'building': tree.xpath('//span[@class="xiaoquInfoContent"]/text()')[4].strip(), 'house': tree.xpath('//span[@class="xiaoquInfoContent"]/text()')[5].strip() } dic['lat'], dic['lng'] = getPosi(dic['name']) print(dic) resLs.append(dic) sleep(3) df = pd.DataFrame(resLs) df.to_excel('贝壳网小区.xlsx', encoding='utf-8', index=False) if name == 'main': ua = 'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/91.0.4472.106Safari/537.36' collect()

2023-06-11 上传