所以我试图在我的WebDriver中的新标签上打开网站.我想这样做,因为使用PhantomJS为每个网站打开一个新的WebDriver需要大约3.5秒,我想要更快的速度......
我正在使用多进程python脚本,我想从每个页面获取一些元素,因此工作流程如下所示:
Open Browser
Loop throught my array
For element in array -> Open website in new tab -> do my business -> close it
Run Code Online (Sandbox Code Playgroud)
但我找不到任何方法来实现这一目标.
这是我正在使用的代码.网站之间需要永远,我需要快速...其他工具是允许的,但我不知道有太多工具可以删除使用JavaScript加载的网站内容(在加载时触发某些事件时创建的div)这是为什么我需要Selenium ... BeautifulSoup不能用于我的一些页面.
#!/usr/bin/env python
import multiprocessing, time, pika, json, traceback, logging, sys, os, itertools, urllib, urllib2, cStringIO, mysql.connector, shutil, hashlib, socket, urllib2, re
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from PIL import Image
from os import listdir
from os.path import isfile, join
from bs4 import BeautifulSoup
from pprint import pprint
def …Run Code Online (Sandbox Code Playgroud) 我试图删除一些图像的背景,调整一些值,并使用一些方法,如morphologyEx给我一个aceptable结果但仍然剩下一些孔,在最后一种情况下,孔不会填充甚至迭代每个轮廓并绘制它与-1.我可以看到阈值图像真的很好,整个形状都用线条,但我不知道如何继续......
更新 我已经改变了我的代码,所以我得到了更好的结果,但我仍然有一些漏洞......如果我能填补这些漏洞,那么剧本就会完美无缺.
def get_contrasted(image, type="dark", level=3):
maxIntensity = 255.0 # depends on dtype of image data
phi = 1
theta = 1
if type == "light":
newImage0 = (maxIntensity/phi)*(image/(maxIntensity/theta))**0.5
newImage0 = array(newImage0,dtype=uint8)
return newImage0
elif type == "dark":
newImage1 = (maxIntensity/phi)*(image/(maxIntensity/theta))**level
newImage1 = array(newImage1,dtype=uint8)
return newImage1
def sharp(image, level=3):
f = cv2.GaussianBlur(image, (level,level), level)
f = cv2.addWeighted(image, 1.5, f, -0.5, 0)
return f
original_image = imread('imagen.jpg')
# 1 Convert to gray & Normalize
gray_img = …Run Code Online (Sandbox Code Playgroud) 我有以下代码,它可以工作,但我试图为每个Banksphere.servicio_id列分隔SUM,这个代码SUM只有一个servicio_id ...我有点迷失,有人可以帮帮我吗?
正如你所看到的,每个WHERE子句都是完全相同的但是Banksphere.peticion_id是唯一一个改变的...所以也许有一些更好的方法来过滤一下普通的子句并且只留下peticion_id用于OK和KO?
SELECT
(SELECT
SUM(valor)
FROM
Banksphere
WHERE
Banksphere.fecha = '2013-01-14'
AND
Banksphere.servicio_id = '6'
AND
Banksphere.entidad_id = '2'
AND
Banksphere.peticion_id = '0') AS OK,
(SELECT
SUM(valor)
FROM
Banksphere
WHERE
Banksphere.fecha = '2013-01-14'
AND
Banksphere.servicio_id = '6'
AND
Banksphere.entidad_id = '2'
AND
Banksphere.peticion_id = '1') AS KO
Run Code Online (Sandbox Code Playgroud)
使用工作代码编辑
SELECT Servicios.nombre as servicio,
SUM(case when peticion_id = '0' then valor end) as OK,
SUM(case when peticion_id = '1' then valor end) as KO
FROM Banksphere
INNER JOIN
Servicios
ON
Banksphere.servicio_id …Run Code Online (Sandbox Code Playgroud) 我有3个带鉴别器的实体,
Product,ProductOne和ProductTwo
他们只有一个表单,ProductType因为他们共享大部分属性,data_class被分配给Appbundle\Entity\Product但我想更改POST_SUBMIT关联的实体,因为根据一个属性,实体可以是ProductOne或ProductTwo.
我不能扩展表单类型,我不想创建n表单类型,只有一个有事件,我不认为它甚至可能,但我想.
我知道我可以更改属性等但不是FormData相关的,在这种情况下,因为我说它是一个实例,Product它必须是ProductOne或ProductTwo
$builder->addEventListener(FormEvents::PRE_SET_DATA, function(FormEvent $event) {
$data = $event->getData(); // This form is Product
$form = $event->getForm();
if(strpos(strtolower($data->getCategory()->getName()), 'foo')) {
// Here it must be ProductOne
} elseif(strpos(strtolower($data->getCategory()->getName()), 'bar')) {
// Here it must be ProductTwo
} else {
// ...
}
});
Run Code Online (Sandbox Code Playgroud) 有什么方法可以用键展平多维(最多1到3个级别)?
我有这样的数组
array(
'Orange',
'Grape',
'Banana' => array(
'Big',
'Small'
),
'Apple' => array(
'Red',
'Green' => array(
'Soft',
'Hard'
)
)
);
Run Code Online (Sandbox Code Playgroud)
我希望它像这样
array(
'Orange',
'Grape',
'Banana',
'Big',
'Small',
'Apple',
'Red',
'Green',
'Soft',
'Hard'
);
Run Code Online (Sandbox Code Playgroud)
因此,它将保持出现的顺序,以便最近获得带有的索引array_keys。
我尝试了几种方法,但是如果数组元素是新数组的键,它将不会被展平,只会被跳过,所以我的最终数组看起来像这样
array:7 [?
0 => "Orange"
1 => "Grape"
2 => "Big"
3 => "Small"
4 => "Red"
5 => "Soft"
6 => "Hard"
]
Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个多处理 MongoDB 实用程序,它完美地工作,但我认为我有一个性能问题......即使有 20 个工人,它每秒处理的文档也不超过 2800 个......我想我可以得到快 5 倍...这是我的代码,它没有做任何异常的事情,只是将剩余时间打印到光标的末尾。
也许有更好的方法在 MongoDB 游标上执行多处理,因为我需要在每个包含 17.4M 记录集合的文档上运行一些东西,所以性能和更少的时间是必须的。
START = time.time()
def remaining_time(a, b):
if START:
y = (time.time() - START)
z = ((a * y) / b) - y
d = time.strftime('%H:%M:%S', time.gmtime(z))
e = round(b / y)
progress("{0}/{1} | Tiempo restante {2} ({3}p/s)".format(b, a, d, e), b, a)
def progress(p, c, t):
pc = (c * 100) / t
sys.stdout.write("%s [%-20s] %d%%\r" % (p, '?' * (pc / 5), pc))
sys.stdout.flush()
def …Run Code Online (Sandbox Code Playgroud) 我正在尝试刷新有关 Ajax 成功的页面。
var lastId = "#" + id;
window.location.replace("/myurl" + lastId);
Run Code Online (Sandbox Code Playgroud)
它正在将正确的 URL 写入我的浏览器,但我没有看到所做的更改。如果我刷新 (F5) 页面,我会正确地看到更改,因为 ajax 已正确发送。
所以我认为如果 url 相同,该页面不会强制刷新。
在这个例子中,我已经在http://mypage.com/myurl,它可以将我重定向到http://mypage.com/myurl#38174例如,所以我的浏览器会将 DOM 元素与id="38174".
正如我所说,如果我提交 ajax 请求,我的 url 将更改为http://mypage.com/myurl#38174并聚焦, id="38174"但我在我的数据库上看不到对该元素所做的更改,如果我按 F5,它会聚焦相同的元素,但更改正确显示。
为什么会这样?
我也试着用window.location.href和window.location没有成功。
如果我使用window.location.replace('http://stackoverflow.com');它会正确地将我发送到该网站...
所以我认为问题是当替换为相同的 url + 一些主题标签时......也许?
正如我所说,特别是在这种情况下,我们需要在 AJAX 请求成功后才刷新,是的,这听起来很奇怪而且适得其反,但这是必要的。
我有FOSUserBundle来管理我的用户,而SonataAdminBundle来管理我的网站......我有一个问题,每当我尝试更改/添加密码给任何用户时,密码都没有被编码sha512,但是当用户注册时它会本身在fosuserbundle注册页面内...
因此Symfony2配置既没有fosuserbundle配置也没有任何问题,它可能在某个地方的SonataAdminBundle内部,或者可能在我的管理类中...
<?php
// src/Acme/DemoBundle/Admin/PostAdmin.php
namespace Web\DificilBundle\Admin;
use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Web;
class UserAdmin extends Admin
{
// Fields to be shown on create/edit forms
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('firstname')
->add('lastname')
->add('username')
->add('email')
->add('password', 'password') // -> I WANT THIS TO BE ENCODED INTO SHA512!
->add('roles','choice',array('choices'=>$this->getConfigurationPool()->getContainer()->getParameter('security.role_hierarchy.roles'),'multiple'=>true ));
//->add('body')
;
}
// Fields to be shown on filter forms
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper
->add('firstname')
->add('lastname')
->add('username')
->add('email')
->add('password')
;
} …Run Code Online (Sandbox Code Playgroud) 更新集合时,我的客户端订阅例程不会刷新:
服务器/ publish.js
Meteor.publish('decisions', function (decisionCursor) {
return Decisions.find({ active: true }, { limit: 20, skip: decisionCursor });
});
Meteor.publish('decisionsToModerate', function (decisionCursor) {
return Decisions.find({ active: false }, { sort: { createdAt: -1 }, limit: 1, skip: decisionCursor });
});
Run Code Online (Sandbox Code Playgroud)
我将我的客户端订阅到两个集合出版物,当它获取所有数据时,它会创建一个包含我需要的东西的会话对象.
客户机/ client.js
Meteor.startup(function () {
SimpleSchema.debug = true;
Deps.autorun(function () {
Meteor.subscribe("decisions", Number(Session.get('decisionCursor')), function () {
var decisionsVoted = {};
Decisions.find({
active: true
}).forEach(function (decision) {
var userVoted = Meteor.users.findOne({
"_id": Meteor.userId(),
"profile.votes.decision": decision._id
}) != null ? Meteor.users.findOne({ …Run Code Online (Sandbox Code Playgroud) 我正在开发一个网站,当表单提交给MySQL时,我需要一种方法来创建一个令牌,它需要是唯一的,比如ID列.
例如,当我提交表单时,它会向表单数据加上Token = TXXXXXX或者插入DB ,实际上,格式将取决于某些内容,但我认为我可以自己处理它,我只需要创建该唯一令牌的方式在DB内......
有谁知道这样做的好方法?
我试图生成一个randomPHP函数来生成一个数字,然后检查MySQL,如果数字存在,生成另一个,直到我得到一个未使用的,然后提交...这是慢,显然它不是最好的方法...