from seleniumwire import webdriver
from fake_useragent import UserAgent
from selenium.webdriver import FirefoxProfile
seleniumwire_options = {
'proxy': {
'http': f'http://'
f'{proxy_data["username"]}:{proxy_data["password"]}@'
f'{proxy_data["proxy_address"]}:{proxy_data["ports"]["socks5"]}',
'https': f'https://'
f'{proxy_data["username"]}:{proxy_data["password"]}@'
f'{proxy_data["proxy_address"]}:{proxy_data["ports"]["socks5"]}',
'no_proxy': 'localhost,127.0.0.1,dev_server:8080'
}
}
profile = FirefoxProfile()
user_agent = UserAgent().random
profile.set_preference("general.useragent.override", user_agent)
options = Options()
options.add_argument('--headless')
driver = webdriver.Firefox(
firefox_profile=profile,
options=options,
seleniumwire_options=seleniumwire_options
)
driver.get('http://<your_url>')
try except не предлагать
Модуль atexit определяет функции для регистрации и отмены функций очистки. Функции, таким образом автоматически выполняется при нормальном прекращении интерпретатора. atexit выполняет эти функции в обратном порядке, в котором они были зарегистрированы; если вы зарегистрируете A, B и C, во время окончания интерпретации они будут выполняться в порядке C, B, A.
Примечание: функции, зарегистрированные через этот модуль не вызывается, когда программа завершается по сигналу, не обработывающему Python’ом, при обнаружении фатальной внутренней ошибки Python или когда вызывается os._exit().
$(document).ready(function(){
var Room = "Не найдено",
patt2,
result2;
$("#message").keyup(function () {
// The string:
var str = this.value;
var RoomRegexp = /#[0-9]*:/i;
if (RoomRegexp.test(str)){
Room = RoomRegexp.exec(str);
Room = Room[0];
$("#send").removeClass("hidden");
}
patt2 = /#[0-9]*:/i;
result2 = patt2.exec(str);
});
$("#send").click(function(){
alert(Room);
alert(result2);
});
});
$(function(){
function Search(priceRegex){
var textarea = $("#message").val();
if (priceRegex.test(textarea)){
alert("Найдено");
}
else{
$(".errorps").text("Не найдено");
}
}
$("#send").click(function(){
Search(/[^0-9]/igm);
});
});
Artisan::call(string $command, array $parameters, BufferedOutput $output);
use Symfony\Component\Console\Output\BufferedOutput;
...
public function migrate()
{
$output = new BufferedOutput;
try {
Artisan::call('migrate', array('--force' => true), $output);
} catch (Exception $e) {
throw Exception($e->getMessage());
}
return $output->fetch();
}