小编Sea*_*ean的帖子

蟒蛇硒。如何正确使用 driver.set_page_load_timeout()?

from selenium import webdriver

driver = webdriver.Chrome()
driver.set_page_load_timeout(7)

def urlOpen(url):
    try:
        driver.get(url)
        print driver.current_url
    except:
        return
Run Code Online (Sandbox Code Playgroud)

然后我有 URL 列表并调用上面的方法。

if __name__ == "__main__":
    urls = ['http://motahari.ir/', 'http://facebook.com', 'http://google.com']
    # It doesn't print anything

    # urls = ['http://facebook.com', 'http://google.com', 'http://motahari.ir/'] 
    # This prints https://www.facebook.com/ https://www.google.co.kr/?gfe_rd=cr&dcr=0&ei=3bfdWdzWAYvR8geelrqQAw&gws_rd=ssl

    for url in urls:
        urlOpen(url)
Run Code Online (Sandbox Code Playgroud)

问题是当网站“ http://motahari.ir/ ”抛出超时异常时,网站“ http://facebook.com ”和“ http://google.com ”总是抛出超时异常。

浏览器一直在等待“motahari.ir/”加载。但循环继续(它不打开“facebook.com”而是等待“motahari.ir/”)并不断抛出超时异常

初始化一个 webdriver 实例需要很长时间,所以我把它从方法中拉出来了,我认为这导致了问题。那么,每当出现超时异常时,我是否应该始终重新初始化 webdriver 实例?如何?(因为我在函数之外初始化了驱动程序,所以我不能在except中重新初始化它)

python selenium

5
推荐指数
1
解决办法
8782
查看次数

将 docker 映像推送到 GCR 时出错 - 推送到根级映像已禁用

我的一个工作项目的目标是构建一个 docker 镜像(已成功完成),并将该镜像推送到 GCR(Google 容器存储库)。我遵循了谷歌文档上的各种文章,但它对我不起作用。

请参考以下顺序将 docker 镜像推送到 GCR:

纽约:gcloud esmit$ docker --version Docker 版本 19.03.4,内部版本 9013bf5

纽约:gcloud esmit$ gcloud auth configure-docker gcloud 凭证帮助程序已正确注册。

Newyork:gcloud esumit$ docker push gcr.io/project-research:test-service-latest 推送指的是存储库 [gcr.io/project-research]

79e24ced7c9c:1秒后重试

9ca6d3494e40:1 秒后重试

86859b163231:2 秒后重试

77cae8ab23bf:1秒后重试

未知:禁用推送到根级映像。请参阅https://cloud.google.com/container-registry/docs/support/deprecation-notices

然而,这有效:

纽约:gcloud esmit$ gcloud 容器镜像列表 列出了 0 项。仅在 gcr.io/project-research 中列出图像。使用 --repository 列出其他存储库中的图像。

它说 :

自 2018 年 4 月 3 日起,18.03 以上的 Docker 客户端版本不再支持 gcloud docker。

要对 18.03 以上客户端版本的 Container Registry 请求进行身份验证,请使用 gcloud 作为 Docker 凭证帮助程序。为此,请运行以下命令:

gcloud auth configure-docker (我已经这样做了)

上述序列以错误结束: …

gcloud google-container-registry

4
推荐指数
1
解决办法
3179
查看次数

Python使用多进程来加速合并计数器

我正在尝试使用一起购买的商品的次数来制作一个非常简单的商品推荐系统,

所以首先我创建了一个像 Counter 这样的 item2item 字典

# people purchased A with B 4 times, A with C 3 times.
item2item = {'A': {'B': 4, 'C': 3}, 'B': {'A': 4, 'C': 2}, 'C':{'A': 3, 'B': 2}}
# recommend user who purchased A and C
samples_list = [['A', 'C'], ...]    
Run Code Online (Sandbox Code Playgroud)

因此,对于samples = ['A', 'C'],我建议最多item2item['A'] + item2item['C']。

但是,合并对于大矩阵很重,所以我尝试使用多处理,如下所示

from operator import add
from functools import reduce
from concurrent.futures import ProcessPoolExecutor
from collections import Counter

with ProcessPoolExecutor(max_workers=10) as pool:
    for samples in samples_list:
        # …
Run Code Online (Sandbox Code Playgroud)

python multiprocessing recommender-systems

4
推荐指数
1
解决办法
186
查看次数

Python 使用 ssl.getpeercert() 从 URL 获取通用名称

我正在尝试获取证书颁发者信息(通用名称),但链接中的代码不适用于某些 URL。

如何在python中获取证书颁发者信息?

import ssl, socket

hostname = 'google.com'
ctx = ssl.create_default_context()
s = ctx.wrap_socket(socket.socket(), server_hostname=hostname)
s.connect((hostname, 443))
cert = s.getpeercert()

subject = dict(x[0] for x in cert['subject'])
issued_to = subject['commonName']

>>> issued_to
u'*.google.com'
Run Code Online (Sandbox Code Playgroud)

例如,我试过主机名“cds.ca”,它说

ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)
Run Code Online (Sandbox Code Playgroud)

但我仍然可以使用 Internet Explorer (*.cds.ca) 获取通用名称

所以我想我应该使用我自己的证书(.cer)而不是使用 getpeercert(),那么我应该如何更改该行?

或者,有没有其他方法可以用我自己的证书文件实现CN?

python ssl https

3
推荐指数
1
解决办法
3557
查看次数

用于使用可选输入文件运行 C++ 的 vim 映射

我正在配置 vimrc 文件以进行 C++ 竞争性编程。

autocmd filetype cpp nnoremap <F5> :w <CR> 
                                   :!g++ -o %:r % <CR> :!./%:r < input.txt <CR>
Run Code Online (Sandbox Code Playgroud)

以下映射是当我按 F5 时,它保存、编译(%:r 是不带 .cpp 的文件名),并使用 input.txt 文件运行。

但是,并非每个 cpp 文件都有 input.txt,因此我只想仅当当前目录中存在 input.txt 时才通过管道传输 input.txt。

总而言之,在映射过程中检查文件的最佳方法是什么?

c++ vim

2
推荐指数
1
解决办法
1348
查看次数

leetcode使用什么vim插件来自动关闭括号?

我喜欢 leetcode vim 自动关闭大括号的方式。

  1. 当我输入时它会关闭" ' ( { [,这可以通过简单的 vim 地图来完成
  2. 当我尝试再关闭一个时,它不会添加另一个" ' ) } ] 并跳过。大多数 vim 插件都是这样工作的。
  3. 当我按 { 并输入时,它会自动为我的代码添加新行并为我缩进。再具体一点
{<cursor>}
Run Code Online (Sandbox Code Playgroud)

当我按回车键时,它变成

{
     cursor
}
Run Code Online (Sandbox Code Playgroud)

不知道哪个插件和leetcode vim一样好用。

另外,解决第二个问题的普通 vim 方法是什么?

我试图通过查看插件来分析,但它太复杂了。

vim

0
推荐指数
1
解决办法
407
查看次数