小编Sup*_*ple的帖子

如何在单个会话中多次更改我的webdriver上的代理?

我正在研究机器人.我希望机器人每50次搜索更改webdriver的代理.我有一个请求代理和套接字的API,我存储这些变量,到目前为止我一直在使用firefox配置文件进行设置,但这并不能很好地工作.

因此,鉴于我已经有了一个可行的代理和端口来源,你能告诉我任何方式我可以更改代理而不会崩溃webdriver并在单个会话上执行吗?

以前的尝试:

我尝试以这种方式设置firefox配置文件:

regions = {
    'US': '', #USA is the default server
    'Australia': #json response through the api,
    'Canada': #json response through the api,
    'France': #json response through the api,
    'Germany': #json response through the api,
    'UK': #json request response the api
}    
for region in regions:
        fp = webdriver.FirefoxProfile()
        if(regions[region] != ''):
            fp.set_preference("network.proxy.type", 1)
            fp.set_preference("network.proxy.socks", regions[region])
            fp.set_preference("network.proxy.socks_port", port)
Run Code Online (Sandbox Code Playgroud)

这给我带来了一些问题,每次我想交换代理时我都要开始新的会话.所以我试图通过Firefox选项(选项 - 一般 - 连接设置)更改代理,但结果是单击连接设置按钮后无法通过selenium或javascript(xul文件)访问屏幕上显示的弹出窗口.

python firefox proxy selenium

9
推荐指数
2
解决办法
460
查看次数

如何在 Python 中更改 Firefox Webdriver 的用户代理?

我正在构建一个搜索机器人,我希望它从桌面更改为移动

我尝试使用 profile.set_preferences 但由于某种原因它不会改变。它不会给出编译时错误,但不会更改用户代理。我还尝试设置所需的功能,但这也不起作用。

if count == 0:
    browser = webdriver.Firefox(executable_path="geckodriver.exe")
else:
    profile = webdriver.FirefoxProfile()
    profile.set_preference("general.useragent.override", "Mozilla/5.0 (Android 4.4; Tablet; rv:41.0) Gecko/41.0 Firefox/41.0")
    browser = webdriver.Firefox(profile)
Run Code Online (Sandbox Code Playgroud)

我希望它作为常规浏览器搜索一次,然后作为移动设备搜索,但它只是作为常规浏览器搜索两次,我确信我会增加计数。

python firefox selenium user-agent geckodriver

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

如何在selenium中使用多行脚本来执行脚本

我正在使用 selenium 的 driver.execute_script 函数在页面上部署一些 JavaScript。

我准备了 JavaScript,但如果我将代码放入另一行,如下所示:

script = 'line one code' +
         'line two code'
driver.execute_script(script)
Run Code Online (Sandbox Code Playgroud)

它给了我一个错误。我也尝试过这样做:

script = [
    'line one code',
    'line two code'
]
script = ';'.join(script)
Run Code Online (Sandbox Code Playgroud)

但这给了我同样的错误。

python selenium

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

在React Redux中设置状态的更好做法

我正在学习Redux。我有点新,所以我不想在一开始就养成不良习惯,这就是为什么我要写这个。

我正在阅读的文档说,在化简器中,我们需要始终设置要更改它的状态-换句话说,请执行以下操作:

const someReducer = (state=initState, {type, payload}) => {
    switch(type) {
        case 'CHANGE_VALUE_ONE' : {
            state = {...state, valueOne: payload }
            break
        }
        case 'CHANGE_VALUE_TWO' : {
            state = {...state, valueTwo: payload }
            break
        }
        default:
            state = state
    }
    return state
}
Run Code Online (Sandbox Code Playgroud)

我的方法是创建一个newState常量,该常量与我们收到的状态相同,对虚拟对象进行更改并返回它-或在代码中:

const userReducer = (state= {name: null, age: null}, {type, payload}) => {
    const newState = {...state}
    switch(type) {
        case 'CHANGE_VALUE_ONE' : {
            newState.valueOne= payload
            break
        }

        case 'CHANGE_VALUE_TWO' : {
            newState.valueTwo= payload
            break
        }
    } …
Run Code Online (Sandbox Code Playgroud)

reactjs redux react-redux

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

这是python的一个很好的编码实践吗?

if preset.exists('//*[@id="i0116"]', '10', '1'):
    if (log.enter_username()):
        if preset.exists('//*[@id="i0116"]', '10', '1'):
            if (log.enter_password()):
                locked = unlock(details[0], details[1], browser, ' ', ' ', ' ')
                if not (locked.checkBlocked()):
                    # unlock account
                else:
                    searches = search(details[0], details[1], browser)
            else:
                browser.quit()
                continue
        else:
            browser.quit()
            continue
    else:
        browser.quit()
        continue
else:
    browser.quit()
    continue
Run Code Online (Sandbox Code Playgroud)

我正在使用Python制作一个机器人,我有很多异常处理要做到这一点,我可能最终会有至少5个以上的这些,如果是的话,其他的......

我在这里做错了吗?我应该在方法本身内部硬编码这些异常,而不是使用控制文件来执行此操作吗?

python if-statement exception-handling code-design

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

当我尝试在 Sobel 模糊中使用 64F 时,Python 中的 OpenCV 会抱怨

我正在尝试使用轮廓制作一个对象检测工具(给定示例)。

我已经取得了一些进展,但是当对象位于另一个具有复杂结构的对象(例如手或脸)前面时,或者对象及其背景颜色合并时,它会停止检测边缘,因此不会给出良好的效果轮廓。

在阅读了算法文档后,我发现它的工作原理是通过颜色强度的差异来检测边缘 - 例如,如果物体是黑色而背景是黑色,则它不会检测到它。

所以现在我正在尝试应用一些效果和模糊来尝试使其发挥作用。

我目前正在尝试获得组合的索贝尔模糊(在两个轴上),希望在足够的光线下它能够定义边缘 - 因为该产品将由带有闪光灯的手机使用。

所以当我尝试这样做时:

frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
frame = cv2.GaussianBlur(frame, (5, 5), 10)
frameX = cv2.Sobel(frame, cv2.CV_64F, 1, 0)
frameY = cv2.Sobel(frame, cv2.CV_64F, 0, 1)
frame = cv2.bitwise_or(frameX, frameY)
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息,指出当模式不是 时,cv2.findContours仅支持图像。CV_8UC1CV_RETR_FLOODFILL

这是触发错误的行:

counturs, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
Run Code Online (Sandbox Code Playgroud)

我一周前才开始摆弄这个东西,我很惊讶得到结果是多么容易,但有些错误消息很荒谬。

编辑:我确实尝试将模式交换为,CV_RETR_FLOODFILL但这并没有解决问题,然后它根本不起作用。

python opencv sobel

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