小编ant*_*s87的帖子

Python Selenium Chrome 禁用弹出窗口阻止程序

由于某种原因,我无法弄清楚如何禁用弹出窗口阻止程序(以允许弹出窗口工作)。这个有用,所以我猜测它与新版本的 Chrome/Chromedriver 有关?下面是一些示例代码,我知道它可以工作,但是现在当弹出窗口发生时,我什至看不到右上角的图标,您可以在其中允许或不允许弹出窗口。我也尝试使用此处找到的首选项来禁用弹出窗口阻止程序,但这不起作用。如果有人有解决方案,将不胜感激!

from selenium import webdriver  
from selenium.webdriver.chrome.options import Options

request_url = 'https://www.example.com'

chrome_options = Options()
chrome_options.add_argument("--disable-popup-blocking")

driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get(request_url)
Run Code Online (Sandbox Code Playgroud)

python selenium google-chrome python-3.x selenium-chromedriver

7
推荐指数
0
解决办法
7339
查看次数

如何在另一个asyncio循环中使用asyncio循环

我一直在尝试各种各样的东西,以便能够在另一个asyncio循环中使用asyncio循环.大多数时候我的测试只是以错误结束,例如:

RuntimeError:此事件循环已在运行

我下面的示例代码只是我开始的基础测试,因此您可以看到我想要做的基础知识.在这次测试之后我尝试了很多东西,这太混乱了,所以我想在寻求帮助时我应该保持简单.如果有人能指出我正确的方向,那将是伟大的.感谢您的时间!

import asyncio

async def fetch(data):
    message = 'Hey {}!'.format(data)
    other_data = ['image_a.com', 'image_b.com', 'image_c.com']
    images = sub_run(other_data)
    return {'message' : message, 'images' : images}

async def bound(sem, data):
    async with sem:
        r = await fetch(data)
        return r

async def build(dataset):
    tasks = []
    sem = asyncio.Semaphore(400)

    for data in dataset:
        task = asyncio.ensure_future(bound(sem, data))
        tasks.append(task)

    r = await asyncio.gather(*tasks)
    return r

def run(dataset):
    loop = asyncio.get_event_loop()
    future = asyncio.ensure_future(build(dataset))
    responses = loop.run_until_complete(future)
    loop.close()
    return responses

async def …
Run Code Online (Sandbox Code Playgroud)

python asynchronous python-3.x python-asyncio

7
推荐指数
1
解决办法
1789
查看次数

如何在Python Selenium PhantomJS中设置ViewPort Size

试图找出如何设置视口大小(初始窗口大小).我已经知道我可以使用driver.set_window_size(1920,1080),但只设置1个选项卡的窗口大小,如果打开的选项卡超过1个,则其他选项卡不是那个大小.另外我认为它只在页面渲染后设置窗口大小,我希望在页面渲染之前已经设置了窗口大小.以下是我到目前为止所尝试的内容.如果有人知道如何设置视口大小,将非常感激.

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

dcap = dict(DesiredCapabilities.PHANTOMJS)

dcap["phantomjs.page.settings.userAgent"] = (
    "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 "
    "(KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36"
)

dcap["phantomjs.page.settings.viewportSize"] = (
    "width: 1920, "
    "height: 1080"
)

driver = webdriver.PhantomJS(desired_capabilities=dcap)

driver.get('https://www.test.com')
Run Code Online (Sandbox Code Playgroud)

python selenium viewport phantomjs

5
推荐指数
0
解决办法
1066
查看次数

如何访问Gathering Future完成结果里面的数据

一直试图弄清楚我返回数据后如何访问我的数据。如果我打印它,这是 x 的示例:

<_GatheringFuture finished result=[[{'ip': '173.245.203.70'}], [{'ip': '196.52.2.82'}], [{'ip': '69.161.4.1'}], [{'ip':'73.180.140.205'}], [{'ip': '96.242.181.128'}], [{'ip': '108.208.74.183'}], ...]>
Run Code Online (Sandbox Code Playgroud)

我尝试了 x[0]、x.result、x.results 等……但一直出现错误。有人知道如何访问 Future 结果中的数据吗?感谢您的时间!下面是完整的代码:

import asyncio
from bs4 import BeautifulSoup
from aiohttp import ClientSession

HEADERS = {'user-agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
proxy = 'xxx.xxx.xxx.xxx:xxxxx'

async def fetch(url, session):
 while True:
  x = []
  try:
   async with session.get(url, headers=HEADERS, proxy="http://{}".format(proxy), timeout=9) as r:
    print (r.status)
    if r.status == 200:
     data = await r.read()
     soup = …
Run Code Online (Sandbox Code Playgroud)

future python-3.x python-asyncio concurrent.futures aiohttp

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

通过SSH启动一个长期运行的程序

我有一个运行Ubuntu的虚拟机,我可以很好地SSH到虚拟机.我甚至可以使用以下方法通过SSH启动我的python程序:

python foldername/app.py
Run Code Online (Sandbox Code Playgroud)

我在Windows机器上,使用Git Bash SSH.如果我启动我的python程序,我必须打开Git Bash窗口.如何启动python程序而不必在我的Windows机器上打开Git Bash?任何帮助深表感谢!

linux ssh bash ubuntu

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

CEF Python ExecuteJavascript不会设置输入元素的值

当我尝试browser.ExecuteJavascript("alert('ExecuteJavaScript works!');")它工作正常(在创建浏览器时弹出警报).当我尝试browser.ExecuteJavascript("document.getElementsByName('q')[0] .value = 24;")没有任何反应.所以我知道ExecuteJavascript正在运行,但是当我尝试设置输入元素的值时,输入元素不会改变?我正在尝试的代码如下,如果有人知道为什么特定的Javascript将无法执行,我将非常感激.

from cefpython3 import cefpython as cef
import platform
import sys

def main():
    sys.excepthook = cef.ExceptHook
    cef.Initialize()
    browser = cef.CreateBrowserSync(url="https://www.google.com", window_title="Hello World!")
    browser.ExecuteJavascript("document.getElementsByName('q')[0].value = 24")
    cef.MessageLoop()
    cef.Shutdown()

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

javascript python chromium-embedded cefpython

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