我已经开始学习playwright-python,该包playwright有两个子模块async_api和sync_api。然而,我找不到关于它们各自优缺点的更深入的描述或讨论。从他们的名字来看,我假设同步 API 调用是阻塞的,而异步 API 调用在后台运行?
它们的功能是否不同,即是否存在无法sync_api完成您可以使用 来完成的事情的情况async_api(反之亦然)?
python webautomation async-await playwright playwright-python
在 playwright-python 中我知道我可以得到一个elementHandleusing querySelector().
示例(同步):
from playwright import sync_playwright
with sync_playwright() as p:
for browser_type in [p.chromium, p.firefox, p.webkit]:
browser = browser_type.launch()
page = browser.newPage()
page.goto('https://duckduckgo.com/')
element = page.querySelector('input[id=\"search_form_input_homepage\"]')
Run Code Online (Sandbox Code Playgroud)
如何根据 this 获取相对于此的元素elementHandle?即父母、祖父母、兄弟姐妹、孩子的句柄?
我制作了自己的 Docker 镜像,这是一个简单的 React 应用程序,并将其推送到 Docker Hub 上。现在我试图在系统中提取我的图像,然后它显示一个错误
来自守护程序的错误响应:abhishek8054/token-app 的清单:未找到最新版本:清单未知:清单未知”。
我做错事了。
我的Dockerfile代码是:
FROM node:16-alpine
WORKDIR /app/
COPY package*.json .
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm","start"]
Run Code Online (Sandbox Code Playgroud)
我通过以下命令制作了图像:
docker image build -t abhishek8054/token-app:latest .
Run Code Online (Sandbox Code Playgroud)
并使用以下命令推送我的图像:
docker push abhishek8054/token-app:latest
Run Code Online (Sandbox Code Playgroud)
并使用以下命令再次拉取它:
docker pull abhishek/8054/token-app
Run Code Online (Sandbox Code Playgroud)
它给了我上面的错误。
我想通过Confluence REST API更新一个Confluence页面。请建议一个代码片段,我可以通过它的“页面标题”更新页面。
假设我的 Confluence 站点是https://wiki.mydomain.com,页面标题是TEST,空间是TST。
我已经成功地在 python 中使用 Playwright 从页面中获取元素。我现在遇到了从嵌入iframe的文档中获取元素的挑战。作为示例,我使用了w3schools 页面来解释<option>element,该页面在 iframe 中显示结果。<option>我正在尝试从 iframe 中检索该元素的句柄。
获取页面上的 an 元素的“正常”方式page.querySelector()无法获取 an elementHandle,这只会打印<class 'NoneType'>:
with sync_playwright() as p:
for browser_type in [p.chromium, p.firefox, p.webkit]:
browser = browser_type.launch(headless=False)
page = browser.newPage()
page.goto('https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_option')
element = page.querySelector('select')
print(type(element))
browser.close()
Run Code Online (Sandbox Code Playgroud)
我尝试首先显式获取 iframe 的句柄,但这会产生相同的结果 ( <class 'NoneType'>):
with sync_playwright() as p:
for browser_type in [p.chromium, p.firefox, p.webkit]:
browser = browser_type.launch(headless=False)
page = browser.newPage()
page.goto('https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_option')
iframe = page.querySelector('iframe')
element = …Run Code Online (Sandbox Code Playgroud) 尝试创建一个忽略正确整数(1、5、999等)和正斜杠(/)的正则表达式,但在其他所有内容中找到匹配项。例如,它将找到以下匹配项:
testtest1test-1但忽略了
1557这是为了模组重写。
我正在尝试使用逆透视数据pd.melt,但到目前为止尚未成功。每一行都是一个商家,数据包含该商家的信息和多个评论。我希望我的数据将每个评论作为一行。
我的前 150 列以 15 为一组,每个组的列名称都具有相同的reviews/n/模式0 < n < 9。( reviews/0/text,, reviews/0/date..., reviews/9/date)。数据框中接下来的 65 列包含更多有关业务的数据(例如business_id,address),这些数据应保留为 id_variables。
我当前的数据如下所示:
| 业务_id | 地址 | 评论/0/日期 | 评论/0/文本 | 评论/1/日期 | 评论/1/文本 |
|---|---|---|---|---|---|
| 12345 | 01街 | 1990年1月1日 | “abc” | 1995年2月2日 | “定义” |
我的新数据框应该将每个评论作为一行而不是每个业务,并且看起来像这样:
| 业务_id | 地址 | 评论号 | 审核日期 | 评论文本 |
|---|---|---|---|---|
| 12345 | 01街 | 0 | 1990年1月1日 | “abc” |
| 12345 | 01街 | 1 | 1995年2月2日 | “定义” |
我尝试使用pd.melt但无法成功编写对我有价值的代码。
使用atlassian-python-api 1.15.1模块,python 3.6 如何下载附加到 Confluence 页面的文件?
API 文档的页面操作部分提到了一个 API ,通过get_attachments_from_content它我可以成功获取所有页面附件及其元数据的列表。在这个问题的末尾有一个例子,我可以通过打印密钥中的一项来获得什么results。
我已经尝试过使用该wget模块下载附件:
fname = wget.download(base_server_name + attachment['_links']['download'])
Run Code Online (Sandbox Code Playgroud)
然而,下载的文件不是页面上的文件,而是一个很大的 HTML 文件,看起来像一个轻型登录页面。另外,我不确定 usingwget在这里是否相关,我更喜欢使用 atlassian python API 本身的解决方案,因为它自己管理身份验证。
“结果”键:
{'id':'56427526','类型':'附件','状态':'当前','标题':'main.c','元数据':{'mediaType':'application/octet-stream ', 'labels': {'results': [], 'start': 0, 'limit': 200, 'size': 0, '_links': {'self': ' https://foo.bar . com/confluence/rest/api/content/56427526/label '}}, '_expandable': {'currentuser': '', 'properties': '', 'frontend': '', 'editorHtml': ''} }, 'extensions': {'mediaType': 'application/octet-stream', 'fileSize': 363, 'comment': ''}, '_links': {'webui': '/pages/viewpage.action? pageId=14648850&preview=%2F14648850%2F56427526%2Fmain.c', '下载': '/download/attachments/14648850/main.c?version=1&modificationDate=1580726185883&api=v2', 'self': ' …
我有一个字符串:
r = 'Thu Dec 17 08:56:41 CST 2020'
Run Code Online (Sandbox Code Playgroud)
这里CST代表中国中部时间('亚洲/上海')。我想将它解析为日期时间...我正在做类似的事情
from dateparser import parse
r1 = parse(r)
Run Code Online (Sandbox Code Playgroud)
这给了我 r1 作为:
2020-12-17 08:56:41-06:00
Run Code Online (Sandbox Code Playgroud)
而且我也在做这个
r2 = r1.replace(tzinfo=pytz.timezone("Asia/Shanghai"))
Run Code Online (Sandbox Code Playgroud)
这给了我 r2 :
2020-12-17 08:50:41+08:00
Run Code Online (Sandbox Code Playgroud)
r2 有 6 分钟的延迟有人能告诉我为什么吗?以及如何正确地将我的原始字符串 r1 传输到所需的 r2 ,即:
2020-12-17 08:56:41 in Asia/Shanghai timezone
Run Code Online (Sandbox Code Playgroud)
谢谢
在一张表中,我有一个完整的地址,我必须将其分成城市和邮政编码以存储在其他列中。
这是示例地址:
address= 'Marco Polo street 8a, 44000 Vienna'
Run Code Online (Sandbox Code Playgroud)
有些行可能包含多个地址,但我必须只保留最后一个逗号 ( 44000 Vienna) 之后的最后部分。
所以最终的结果应该是:
post_office = 44000
city = Vienna
Run Code Online (Sandbox Code Playgroud)
到目前为止已尝试: /sf/answers/940167091/
带有嵌套子字符串,如下所示:
city = SUBSTRING(SUBSTRING(address, CHARINDEX(' ', address, 0) + 1, LEN(address)), CHARINDEX(',', address, 0) + 1, LEN(address))
Run Code Online (Sandbox Code Playgroud)
和
post_office = SUBSTRING(SUBSTRING(address, CHARINDEX(',', address, 0) + 1, LEN(address)), 0, CHARINDEX(' ', address, 0))
Run Code Online (Sandbox Code Playgroud)
但这仅部分有效,因为城市也可以有多个单词,例如:
city = '44300 Vienna Old Town'
Run Code Online (Sandbox Code Playgroud)
我的数据的规则是:找到最后一个逗号,获取逗号后面的所有数字并将其定义为post_office然后,在第一个空格之后post_office直到字符串的其余部分,应将其定义为城市。
我正在运行 Microsoft SQL Server 2017 (v14.0.3391.2 - X64)
python ×7
playwright ×3
regex ×2
async-await ×1
confluence ×1
date-parsing ×1
datetime ×1
deployment ×1
devops ×1
docker ×1
dom ×1
handle ×1
iframe ×1
melt ×1
mod-rewrite ×1
pandas ×1
production ×1
python-2.7 ×1
sql ×1
sql-server ×1
unpivot ×1